WASM plugin for Vortex — decrypts the JDownloader-era link containers and parses the Metalink standard.
| Format | Extension(s) | Spec / source | Status |
|---|---|---|---|
| DLC | .dlc |
JDownloader v1, AES-128-CBC, embedded historic key | ✅ |
| CCF | .ccf |
Cryptload v1, AES-128-CBC, magic CCF1\n |
✅ |
| RSDF | .rsdf |
RapidShare legacy, AES-128-CBC, hex line per URL | ✅ |
| Metalink | .metalink, .meta4 |
RFC 5854 (v4) + community v3 | ✅ |
See docs/ADR-001-container-keys.md for the rationale behind embedded keys
and the explicit choice to not call out to service.jdownloader.org.
The host invokes three exports after the user drops a file in the Link Grabber:
| Export | Input | Output |
|---|---|---|
can_decrypt |
bytes | "true" / "false" |
detect |
bytes | JSON { "format": "dlc" | "ccf" | "rsdf" | "metalink" | null } |
decrypt |
bytes | JSON { "format", "links": [{url, filename?, sizeBytes?, mirrors[], checksums[]}] } |
The plugin owns no networking — it transforms bytes into a structured link
list. The host then routes each ContainerLink through the regular hoster
pipeline.
rustup target add wasm32-wasip1
cargo build --target wasm32-wasip1 --release
# Output:
# target/wasm32-wasip1/release/vortex_mod_containers.wasm
sha256sum target/wasm32-wasip1/release/vortex_mod_containers.wasmcargo test # native — 60+ unit + integration tests
cargo clippy --all-targets -- -D warningsThe integration suite (tests/synthetic_corpus.rs) generates a
20-container fixture covering all four formats and round-trips them through
the public decrypt() API.
GPL-3.0 — see LICENSE.