Sicherheits-Härtung und Bugfixes

This commit is contained in:
Patrick Asmus
2026-10-11 17:39:03 +02:00
parent c3f68ace96
commit 65b0b5ac0f
25 changed files with 2577 additions and 686 deletions
+35 -3
View File
@@ -13,7 +13,7 @@ Im Web-UI unter **Jobs → + Neuer Job**.
| Feld | Beschreibung |
|------|-------------|
| **Name** | Eindeutiger Name (wird als Ordnername verwendet) |
| **Stream-URL** | URL des Streams (RTMP, HLS, HTTP, etc.) |
| **Stream-URL** | URL des Streams. Erlaubt: `http`, `https`, `rtmp`, `rtmps`, `rtsp`, `rtsps` |
### Optionale Felder
@@ -25,7 +25,39 @@ Im Web-UI unter **Jobs → + Neuer Job**.
| **Ausgabeformat** | Dateiendung. Leer = automatisch (mp4 für Video, mp3 für Audio) |
| **Max. Dauer** | Zeitlimit in Minuten. Entfällt bei Zeitplan mit Endzeit |
| **Segment-Dauer** | Aufnahme in Teile zerlegen (Minuten pro Segment) |
| **Extra ffmpeg Argumente** | Zusätzliche ffmpeg-Parameter (z.B. `-b:a 192k`) |
| **Extra ffmpeg Argumente** | Zusätzliche ffmpeg-Parameter (z.B. `-b:a 192k`), siehe [Extra ffmpeg-Argumente](#extra-ffmpeg-argumente) |
## Extra ffmpeg-Argumente
Aus Sicherheitsgründen sind nur bestimmte ffmpeg-Optionen erlaubt. Alles andere wird mit einer Fehlermeldung abgelehnt.
| Art | Erlaubte Optionen |
|-----|-------------------|
| Ohne Wert | `-vn` `-an` `-sn` `-dn` `-shortest` `-copyts` |
| Mit einem Wert | `-c` `-c:a` `-c:v` `-codec` `-codec:a` `-codec:v` `-acodec` `-vcodec` `-b:a` `-b:v` `-ar` `-ac` `-map` `-metadata` `-metadata:s:a` `-t` `-to` `-q:a` `-aq` `-af` `-filter:a` `-bsf:a` `-bsf:v` `-f` `-movflags` `-segment_format` `-fflags` `-avoid_negative_ts` `-max_muxing_queue_size` |
Audiofilter (`-af`, `-filter:a`) dürfen keine Quellen wie `movie`, `amovie`, `sendcmd`, `zmq` oder Dateien verwenden. ffmpeg läuft zudem mit einer Protokoll-Whitelist, lokale Dateien können nicht als Eingabe gelesen werden.
Beispiele:
```
-b:a 192k -ar 44100
-c:a libmp3lame -q:a 2
-af loudnorm -metadata title="Meine Sendung"
```
## Validierung
| Feld | Regel |
|------|-------|
| **Startzeit / Endzeit** | Format `HH:MM` |
| **Startdatum / Enddatum** | Format `YYYY-MM-DD` |
| **Tage** | `*` oder Liste/Bereiche wie `Mo-Fr,So` (siehe [Tage-Syntax](#tage-syntax)) |
| **Vor-/Nachlaufzeit** | 0–120 Minuten |
| **Segment-Dauer** | 10 Sekunden bis 24 Stunden |
| **Max. Dauer** | bis 30 Tage |
Ungültige Eingaben werden mit einer Fehlermeldung abgelehnt (API: 400/422).
## Zeitplan
@@ -85,7 +117,7 @@ Die globale NTFY- und Plik-Konfiguration (URL, Token, etc.) erfolgt in den [Eins
## Manuelle Aufnahme
Jobs können auch manuell über den **Aufnehmen**-Button gestartet werden, unabhängig vom Zeitplan.
Jobs können auch manuell über den **Aufnehmen**-Button gestartet werden, unabhängig vom Zeitplan. Pro Job läuft höchstens eine Aufnahme gleichzeitig. Ein Job mit laufender Aufnahme kann nicht gelöscht werden.
## Schnellaufnahme