8bf5a3960f
Fix: uvicorn --forwarded-allow-ips=* — echte Client-IP hinter NPM-Proxy sichtbar
...
Ohne dieses Flag sehen alle Container-Requests die NPM-Bridge-IP (192.168.160.x)
als Client. Rate-Limits und Honeypot-Blocklist blockierten dadurch alle User
gleichzeitig sobald ein einziger Trigger auftrat.
2026-04-29 21:40:49 +02:00
6064a1d750
Wiki-Foto-System: Gallery-Flow, Community-Fotos, Wiki-Fotos-Badge
...
- review_submission: Fotos ins gallery/-Verzeichnis statt breeds/ kopieren;
foto_url der Rasse nur überschreiben wenn noch keins vorhanden (Erstbild)
- Rassen-Detail-API: user_fotos (approved submissions) mitliefern
- Rassen-Listen-API: user_foto-Subquery als Fallback wenn foto_url leer
- achievements: neue Badge-Kategorie "Wiki-Fotos" (bronze 1, silber 3, gold 10)
mit wiki_fotos-Metrik in check_and_award und my_achievements
- Badge-Check + Push nach Foto-Approval
- wiki.js: Karten-Bild nutzt r.foto_url || r.user_foto
- wiki.js: Detail-Ansicht zeigt Community-Foto-Galerie (scrollbar, clickable)
- Dockerfile: breeds/gallery + breeds/submissions im Image anlegen
- SW by-v366, APP_VER 351
2026-04-25 09:53:24 +02:00
942924199e
Revert Dockerfile USER appuser (Synology DSM ACL inkompatibel)
...
Synology DSM verwendet ACLs (+) auf Docker-Volumes die Vorrang vor Linux-
Basisrechten haben. chown/gosu funktioniert nicht gegen DSM-ACLs.
Container läuft weiterhin als root im geschlossenen Docker-Netz.
2026-04-23 18:52:51 +02:00
71e588a240
Security Nice-to-Have: Dockerfile, Magic-Bytes, Path-Traversal, TABLE_MAP, Deps
...
- Dockerfile: non-root user appuser, chown /data + /app
- media_utils: validate_upload() Magic-Byte-Check (JPEG/PNG/GIF/WebP/MP4/WebM)
- media_utils: safe_media_path() Path-Traversal-Schutz beim Löschen
- diary/health/dogs: safe_media_path() statt os.path.join + lstrip
- diary: validate_upload() vor jedem Medien-Upload
- forum: _LIKE_TABLE dict statt dynamischer String-Interpolation
- requirements: uvicorn 0.34, PyJWT 2.10.1, pydantic 2.10.6, bcrypt 4.3, httpx 0.28.1, anthropic 0.49
- SW by-v319, APP_VER 307
2026-04-23 18:42:05 +02:00
5141ba9969
Session 2026-04-20: Medien-Konvertierung, Umami Analytics, Username/Privacy
...
- HEIC→JPEG, MOV/AVI→MP4 Konvertierung bei allen Upload-Endpoints (media_utils.py)
- ffmpeg im Docker-Image, Video-Thumbnails (extract_video_thumb, poster-Attribut)
- Google Analytics entfernt, Umami self-hosted eingebunden (index.html, datenschutz.js)
- Admin-Panel Analytics-Tab: Stat-Cards, Sparkline 7 Tage, Top-Seiten (Umami-API-Proxy)
- Admin-Panel Tab-Icons korrigiert (aus vorhandenem Phosphor-Sprite)
- users.real_name Spalte: Username öffentlich, echter Name privat und optional
- Registrierung: Label "Benutzername", Leerzeichen verboten, Profanity-Blockliste
- Datenschutzerklärung: GA-Abschnitt durch Umami-Text ersetzt
2026-04-20 18:36:58 +02:00
00be2bbcd5
Sprint 0: Backend, Docker, KI-Layer mit Free/Premium-Trennung
2026-04-12 16:39:34 +02:00