feat: Download-Knopf fuer fertige Rips — Dateien direkt im Browser statt scp
Ampel / ampel (push) Successful in 29s
Ampel / ampel (push) Successful in 29s
- GET /jobs/{id}/files: Dateiliste aus job.output_path (Name + Groesse)
- GET /jobs/{id}/files/{name}: FileResponse-Stream; Validierung strikt —
output_path muss unter /app/media liegen, nackter Dateiname (kein
Slash/.., kein Dotfile), realpath-Check gegen Symlink-Ausbrueche.
Mit Test (test_dateiname_validierung_blockt_pfad_tricks).
- UI: 'Download'-Knopf in der Aktion-Spalte bei fertigen Jobs; die
Dateiliste mit Groessen + Download-Links lebt im Job-Detail-Popup
(ein Dropdown wuerde im overflow-x-auto-Tabellencontainer clippen).
- nginx: proxy_buffering off + proxy_read_timeout 3600s waren fuer SSE
schon gesetzt — grosse Downloads brauchen keine Aenderung.
Wunsch aus der Uebernahme-Session (Commander-Sammelliste 24.07.).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -332,6 +332,11 @@ auffiel, in einem Rutsch. Alles gebaut, Tests dabei, Ampel-Blocker behoben.
|
||||
Claude and KrBrZ".
|
||||
- [x] README: Media-Server, Benachrichtigungen, UHD-Arbeitsverzeichnis,
|
||||
„Rippy woanders bereitstellen" (beliebiger Docker-Host).
|
||||
- [x] **Download-Knopf für fertige Rips** (Wunsch aus der Übernahme-Session):
|
||||
GET /jobs/{id}/files (+ Datei-Stream, Pfad-Validierung strikt unter
|
||||
/app/media inkl. realpath-Check), Download-Knopf in der Aktion-Spalte,
|
||||
Dateiliste mit Größen im Job-Detail-Popup — vorher kam man an fertige
|
||||
MKVs nur per scp. nginx hatte proxy_buffering off schon (SSE).
|
||||
|
||||
**Offen aus dieser Runde:** nichts — Rest siehe Etappe 12 und Ideen unten.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user