Files
Firelink/TORRENT_FEATURES.md
T
2026-08-02 00:29:49 +03:30

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 .torrent files, magnet links, and remote HTTP(S) .torrent metadata. Remote metadata is bounded, SSRF-checked, redirect-checked, parsed, and cached before it enters the normal addTorrent path.
  • Bencode validation, canonical info-hash checks, safe output paths, managed metadata retention, selected-file preview, select-file, and index-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-limit threshold.
  • 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

  1. Stall timeout — expose bt-stop-timeout with 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.
  2. Peer diagnostics — expose aria2.getPeers as 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.
  3. Tracker exclusion — add bt-exclude-tracker alongside 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

  1. Piece/file priority — expose bt-prioritize-piece for head/tail previewing and a deliberate file-priority model beyond the current binary selected/unselected state.
  2. Safe removal of unselected files — expose bt-remove-unselected-file only as an explicit destructive choice, with ownership-aware confirmation and tests for cancellation, retry, and reconfiguration.
  3. Encryption policy — expose bt-force-encryption, bt-require-crypto, and bt-min-crypto-level as one validated policy so users cannot accidentally select contradictory combinations.
  4. 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

  1. Configurable TCP/UDP listen ports, external IP, DHT entry points, IPv6 DHT listen address, and LPD interface, with platform/firewall warnings.
  2. Global BitTorrent open-file limits and peer identity/agent controls.
  3. 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.