banyaro/backend
rene 83b1509168 Security: VAPID-Keys raus aus Git, Dockerfile USER appuser, SW by-v1116
1. VAPID-Keys aus docker-compose.yml und docker-compose.staging.yml
   entfernt. Werden jetzt aus .env gelesen (env_file war schon da,
   nur die environment-Override hat die .env-Werte überschrieben).
   .env auf DS um die 3 Keys ergänzt:
   - VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, VAPID_CONTACT
   Erst Compose-Änderung wirksam — Push-Notifications funktionieren
   weiter weil die .env die Werte liefert.

2. Dockerfile-Hardening: Non-root USER appuser.
   - groupadd/useradd appuser (UID/GID 1000 für DS-Kompatibilität)
   - chown -R appuser:appuser /app /data nach mkdir
   - USER appuser vor CMD
   Memory says DSM ACLs könnten Probleme machen. Falls Container
   nicht startet → Rückbau. Bei Deploy genau hinsehen.

3. E-Mail-Änderungs-Audit-Punkt: kein Vulnerability gefunden.
   ProfileUpdate-Schema enthält kein 'email'-Feld. User können
   ihre E-Mail-Adresse aktuell gar nicht ändern → kein Takeover-
   Vektor wie im Audit vermutet.
2026-05-27 13:02:12 +02:00
..
routes Bündel 3: Security-Helper + Demo-Migration, SW by-v1115 2026-05-27 11:27:00 +02:00
scraper Fix: VDH-Fallback-Events aktualisiert — Frankfurt Mai entfernt (vergangen), 7 korrekte Termine 2026 2026-05-08 13:52:37 +02:00
scripts Security + E-Mail-HTML + Quartalsbericht + Registrierungspflicht 2026-05-01 08:20:53 +02:00
static Security: VAPID-Keys raus aus Git, Dockerfile USER appuser, SW by-v1116 2026-05-27 13:02:12 +02:00
auth.py Bündel 3: Security-Helper + Demo-Migration, SW by-v1115 2026-05-27 11:27:00 +02:00
cache.py Perf: 9 Performance-Fixes — SW by-v1072 2026-05-26 06:30:36 +02:00
config.py Bündel 2: Zentrale Helper für DRY-Cleanup, SW by-v1114 2026-05-27 11:19:06 +02:00
content_filter.py Security + E-Mail-HTML + Quartalsbericht + Registrierungspflicht 2026-05-01 08:20:53 +02:00
database.py Big Sweep: Security + Race-Conditions + Tests + DSGVO + A11y, SW by-v1095 2026-05-26 20:12:01 +02:00
entrypoint.sh Revert Dockerfile USER appuser (Synology DSM ACL inkompatibel) 2026-04-23 18:52:51 +02:00
errors.py Bündel 2: Zentrale Helper für DRY-Cleanup, SW by-v1114 2026-05-27 11:19:06 +02:00
generate_thumbs.py Session 2026-04-20: Medien-Konvertierung, Umami Analytics, Username/Privacy 2026-04-20 18:36:58 +02:00
ki.py Fix: KI health_summary Kontextfenster (max 5 Einträge), Cloud-Priority ohne ANTHROPIC_KEY-Check, local-Fallback wrapped (SW by-v798) 2026-05-09 20:08:06 +02:00
mailer.py Fix: Date-Header in ausgehenden Mails (formatdate UTC, Container hat keine lokale TZ) 2026-05-15 12:37:41 +02:00
main.py Fix: /force-update reload-Hänger + Cooldown persistent, SW by-v1106 2026-05-27 08:02:54 +02:00
math_utils.py Bündel 2: Zentrale Helper für DRY-Cleanup, SW by-v1114 2026-05-27 11:19:06 +02:00
media_utils.py Fix: Karte lädt wieder + safe_media_path + Foto-Löschung (SW by-v932) 2026-05-14 11:58:00 +02:00
migrate_media.py Session 2026-04-20: Medien-Konvertierung, Umami Analytics, Username/Privacy 2026-04-20 18:36:58 +02:00
ratelimit.py Security + E-Mail-HTML + Quartalsbericht + Registrierungspflicht 2026-05-01 08:20:53 +02:00
requirements.txt Chore: Sprint32-36 Zwischenstand — alle Änderungen aus dieser Session committen 2026-05-03 11:09:39 +02:00
scheduler.py Bündel A-D: Race-Fixes, JWT-Cleanup, Storage-Watchdog, HTTPException, SW by-v1112 2026-05-27 09:41:56 +02:00
timeutils.py Teil 3: Terminvorschläge + KI-Limit-Bypass für Admins/Mods — SW by-v435, APP_VER 414 2026-04-26 17:08:18 +02:00
username_blocklist.py Session 2026-04-20: Medien-Konvertierung, Umami Analytics, Username/Privacy 2026-04-20 18:36:58 +02:00
weather.py Fix: Asphalttemperatur-Formel temperaturabhängig (t_factor 0..1 zwischen 5-30°C), nicht mehr temperaturblind 2026-05-16 13:53:05 +02:00
welfare_check.py Feature: Tierschutz-Check, KI-Züchter-Features, Export, SEO-Update 2026-04-28 19:49:54 +02:00