mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-02 07:30:18 +00:00
5.3 KiB
5.3 KiB
Firelink Torrent feature matrix
This is the current product-facing comparison for BitTorrent features exposed by Firelink's bundled Aria2 engine. It intentionally excludes Aria2's generic HTTP/FTP/Metalink options, shell hooks, and daemon-admin RPC methods that do not belong in the download UI. The Aria2 reference is the 1.37.0 manual.
Implemented
- Local
.torrentfiles, magnet links, and remote HTTP(S).torrentmetadata. Remote metadata is bounded, SSRF-checked, redirect-checked, parsed, and cached before it enters the normaladdTorrentpath. - Bencode validation, canonical info-hash checks, safe output paths, managed
metadata retention, selected-file preview,
select-file, andindex-out. - Firelink queue admission, per-queue/global permits, pause/resume, cancel, retry/GID replacement, restart recovery, terminal reconciliation, and output ownership for Torrent lifecycles.
- Optional seeding by time and/or ratio, upload progress, upload limits,
seeders telemetry, per-Torrent maximum peers, and the Aria2
bt-request-peer-speed-limitthreshold. - Bounded, read-only Torrent peer diagnostics through
aria2.getPeers. Firelink discards peer IPs, ports, IDs, and bitfields at the native boundary; the selected-Torrent detail view exposes only operational speeds, seeder, and choking flags, with a bounded display count. - Global DHT, IPv6 DHT, PEX, and Local Peer Discovery toggles.
- Optional piece-integrity verification, including the explicit policy that disables unverified seeding when verification is requested.
- Optional stall timeout through
bt-stop-timeout, persisted with each Torrent and re-applied when it starts or retries. A value of zero disables the policy; Aria2 stops the Torrent after the configured consecutive zero-download-speed interval. - Additional per-Torrent tracker URLs through
bt-tracker, with bounded and credential-free HTTP/HTTPS/UDP validation. - Per-Torrent tracker exclusion through
bt-exclude-tracker, including Aria2's explicit*value for excluding all announce URLs. Exclusions are persisted, normalized, reapplied on retries, and do not change DHT or PEX settings. - Optional
bt-prioritize-piecepreview policy for the head, tail, or both ends of every selected file. The constrained policy is validated, persisted, normalized, and reapplied when a Torrent starts or retries. - One validated Torrent encryption policy mapped to Aria2's
bt-force-encryption,bt-require-crypto, andbt-min-crypto-level: disabled, required obfuscated handshake, or forced ARC4 payload encryption. The policy is persisted and reapplied when a Torrent starts or retries. - Optional tracker timing controls through
bt-tracker-connect-timeout,bt-tracker-timeout, andbt-tracker-interval. Connect and request timeouts are bounded to 1–604800 seconds; interval 0 restores Aria2's response/progress-driven scheduling. Timing is persisted and reapplied when a Torrent starts or retries. - Global
bt-max-open-filescontrol for multi-file Torrents, bounded to 1–4096 with Aria2's default of 100. The setting is persisted, applied at daemon startup, and updateable through Aria2's global-option RPC; changes affect newly added Torrents without restarting Aria2. - Optional
bt-remove-unselected-filecleanup after completion when a selected-file subset is configured. Firelink requires explicit confirmation, reserves the unselected paths against competing downloads, keeps those paths separate from removable download ownership, and clears the reservation after observing Aria2's completion cleanup (or on terminal failure, cancellation, or reconfiguration). - Deterministic local Aria2 smoke coverage for metadata resolution, selected
output, piece priority, encryption policy, tracker timing, pause/resume,
ownership, cancellation/removal, unavailable trackers, daemon failure, and
bt-stop-timeoutterminal behavior; RPC-boundary coverage is separate.
Priority tiers for remaining work
Tier 0 — reliability and user-visible control
No remaining Tier 0 items.
Tier 1 — transfer policy and storage behavior
- File priority beyond selection — Aria2 exposes only the binary
selectedfile state through its Torrent file API and has no supported per-file priority option. Firelink therefore does not pretend thatselect-fileis file priority; this remains pending an engine capability or a safe product-level model.
Tier 2 — advanced networking and daemon tuning
- Configurable TCP/UDP listen ports, external IP, DHT entry points, IPv6 DHT listen address, and LPD interface, with platform/firewall warnings.
- Peer identity/agent controls, with explicit privacy and protocol-identity warnings.
- Aria2
follow-torrent/in-memory follow behavior for generic downloads only if the resulting child-GID ownership model can be represented safely; the current explicit metadata path intentionally avoids unmapped child jobs.
The first implementation in this task was remote .torrent metadata intake;
follow-up implementations add stall-timeout control, bounded peer diagnostics,
persisted tracker exclusion, piece-preview priority, safe unselected-file
removal, the validated encryption policy, tracker timing controls, and the
global Torrent open-file limit.