mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-07 01:44:01 +00:00
4.0 KiB
4.0 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. - 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.
- Additional per-Torrent tracker URLs through
bt-tracker, with bounded and credential-free HTTP/HTTPS/UDP validation. - Deterministic local Aria2 smoke coverage for metadata resolution, selected output, pause/resume, ownership, cancellation/removal, unavailable trackers, and daemon failure; RPC-boundary coverage is separate.
Priority tiers for remaining work
Tier 0 — reliability and user-visible control
- Stall timeout — expose
bt-stop-timeoutwith clear semantics for a Torrent that has no download progress. The queue must reconcile the Aria2 stop/error outcome and release its permit without turning an intentional stall policy into a stale retry loop. - Peer diagnostics — expose
aria2.getPeersas bounded, redacted, read-only detail for the selected Torrent. Keep the current counts as the fast summary and treat peer IPs/IDs as sensitive display data. - Tracker exclusion — add
bt-exclude-trackeralongside the existing additional-tracker list. It must be persisted, re-normalized, and re-applied on every retry/GID replacement. Document that it filters announce URLs only; it does not disable DHT or PEX.
Tier 1 — transfer policy and storage behavior
- Piece/file priority — expose
bt-prioritize-piecefor head/tail previewing and a deliberate file-priority model beyond the current binary selected/unselected state. - Safe removal of unselected files — expose
bt-remove-unselected-fileonly as an explicit destructive choice, with ownership-aware confirmation and tests for cancellation, retry, and reconfiguration. - Encryption policy — expose
bt-force-encryption,bt-require-crypto, andbt-min-crypto-levelas one validated policy so users cannot accidentally select contradictory combinations. - Tracker timing controls — expose tracker connect timeout, request timeout, and interval only when their effect on battery/network behavior is explained and persisted.
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.
- Global BitTorrent open-file limits and peer identity/agent controls.
- 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 is the former missing Tier 0 intake
capability: remote .torrent metadata now uses Firelink's existing safe,
cached, lifecycle-aware Torrent path.