# FileFlows ApiKey Guard ## Problem Die FileFlows-API liefert `ApiKey`-Felder in Flow-Parts beim `GET` grundsätzlich als Literal `[REDACTED]` aus. Wird ein Flow danach gespeichert — aus der Web-UI oder über einen `GET → PUT`-Roundtrip (Scripts, Automationen) — landet dieser Platzhalter in der Datenbank. Folge: die Nodes `Sonarr - Trigger Manual Import` und `Radarr - Trigger Manual Import` authentisieren sich mit `[REDACTED]`, die Arr antwortet **401**, der Node bricht **still** ab. Fehlerbild in der Kette: ``` SABnzbd (movetdarr.sh) → FileFlows → Arr Manual Import ↑ 401, still ``` - n8n Media-Handoff bleibt auf `processing` stehen - `movetdarr.sh` pollt den Handoff-Lease weiter → SAB-Job hängt in der Queue bis zum 24-h-Timeout - Symptom beim Nutzer: "hängt seit Stunden in der Queue" **Ein einziger UI-Save zerschießt alle vier Keys gleichzeitig**, weil der GET alle vier als `[REDACTED]` ausliefert (verifiziert per Negativtest: 1 Key sabotiert → 4 Keys in der DB defekt). ## Lösung `ff-apikey-guard.sh` prüft alle Flows in der FileFlows-SQLite auf ApiKeys mit Länge != 32 und schreibt die echten Keys via Butler-Proxy (`PUT /fileflows/api/flow`) zurück. Keys kommen aus einer lokalen Map, nie aus Git. ## Deployment (tdarr, 10.2.1.104) ```bash sudo install -m 750 fileflows/guard/ff-apikey-guard.sh \ /app-config/ff-guard/ff-apikey-guard.sh # Butler-Token printf '%s' '' | sudo tee /app-config/ff-guard/butler.token sudo chmod 600 /app-config/ff-guard/butler.token # Key-Map: " " pro Zeile, Keys aus den Arr-config.xml auf 10.2.1.100 # 8989 sonarrUHD / 8990 sonarrFHD / 7878 radarrUHD / 7879 radarrFHD sudo chmod 600 /app-config/ff-guard/arr-keys.map ``` Läuft als systemd-Timer alle 15 Minuten (`cron` ist auf tdarr inaktiv): ``` /etc/systemd/system/ff-apikey-guard.service Type=oneshot /etc/systemd/system/ff-apikey-guard.timer OnUnitActiveSec=15min ``` ```bash sudo systemctl enable --now ff-apikey-guard.timer ``` ## Betrieb ```bash # Log sudo tail /app-config/ff-guard/guard.log # Manuell prüfen/reparieren sudo systemctl start ff-apikey-guard.service # Timer-Status systemctl list-timers ff-apikey-guard.timer ``` Logzeilen (Datum TT.MM.JJJJ): - `OK: alle Flow-ApiKeys 32 Zeichen` — nichts zu tun - `WARNUNG: defekte ApiKeys in Flow — repariere` - `Flow repariert: N Key(s) zurueckgeschrieben (HTTP 200)` ## Nach einem UI-Save immer prüfen Wer einen Flow in der FileFlows-UI speichert, sollte danach den Guard anstoßen oder maximal 15 Minuten auf den Timer warten. Vorher schlagen alle Arr-Importe still fehl.