feat(torrents): add encryption policy

This commit is contained in:
NimBold
2026-08-02 10:05:39 +03:30
parent b4da68655a
commit 1d27b5b0bf
19 changed files with 378 additions and 18 deletions
+10 -9
View File
@@ -37,6 +37,10 @@ belong in the download UI. The Aria2 reference is the [1.37.0 manual](https://ar
- Optional `bt-prioritize-piece` preview 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`, and `bt-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 `bt-remove-unselected-file` cleanup after completion when a
selected-file subset is configured. Firelink requires explicit confirmation,
reserves the unselected paths against competing downloads, keeps those
@@ -44,9 +48,9 @@ belong in the download UI. The Aria2 reference is the [1.37.0 manual](https://ar
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, pause/resume, ownership, cancellation/removal,
unavailable trackers, daemon failure, and `bt-stop-timeout` terminal behavior;
RPC-boundary coverage is separate.
output, piece priority, encryption policy, pause/resume, ownership,
cancellation/removal, unavailable trackers, daemon failure, and
`bt-stop-timeout` terminal behavior; RPC-boundary coverage is separate.
## Priority tiers for remaining work
@@ -61,10 +65,7 @@ No remaining Tier 0 items.
per-file priority option. Firelink therefore does not pretend that
`select-file` is file priority; this remains pending an engine capability or
a safe product-level model.
2. **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.
3. **Tracker timing controls** — expose tracker connect timeout, request
2. **Tracker timing controls** — expose tracker connect timeout, request
timeout, and interval only when their effect on battery/network behavior is
explained and persisted.
@@ -79,5 +80,5 @@ No remaining Tier 0 items.
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, and safe unselected-file
removal.
persisted tracker exclusion, piece-preview priority, safe unselected-file
removal, and the validated encryption policy.