# openpack
`openpack` reads ZIP-derived archives safely, with built-in anti-abuse checks.
- ZIP
- CRX
- JAR
- APK (`AndroidManifest.xml` parsing under `apk` feature)
- IPA (`Info.plist` parsing under `ipa` feature)
## Install
```toml
[dependencies]
openpack = "0.1"
```
## Features
- `zip` (default): base ZIP archive support
- `crx`: enable CRX handling and ZIP payload offset parsing
- `apk`: parse `AndroidManifest.xml` from APK archives
- `ipa`: parse `Info.plist` from IPA packages
## Quick start
```rust
use openpack::{OpenPack, Limits};
let limits = Limits::default();
let pack = OpenPack::open("/tmp/archive.zip", limits)?;
for entry in pack.entries()? {
println!("{}", entry.name);
}
let body = pack.read_entry("robots.txt")?;
println!("{}", body.len());
# Ok(())
```
## Safety checks
- Zip-slip path normalization and parent traversal rejection
- max archive size
- max per-entry uncompressed size
- max total uncompressed size
- max entries
- compression ratio limits
## TOML limits
Use `config/limits.toml` as a template for deployment defaults.
```toml
max_archive_size = 268435456
max_entry_uncompressed_size = 52428800
max_total_uncompressed_size = 134217728
max_entries = 2048
max_compression_ratio = 100.0
```