Reports 2026-05-01 — Quartalsbericht
This commit is contained in:
parent
f3e4a51178
commit
c1bb728153
7 changed files with 746 additions and 0 deletions
0
reports/.gitkeep
Normal file
0
reports/.gitkeep
Normal file
180
reports/2026-05-01-dateien.md
Normal file
180
reports/2026-05-01-dateien.md
Normal file
|
|
@ -0,0 +1,180 @@
|
|||
# Dateiliste — Ban Yaro
|
||||
|
||||
_Erstellt: 01.05.2026 06:07_
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Backend — Python-Dateien
|
||||
|
||||
| Datei | Größe |
|
||||
| ---------------------------- | -------- |
|
||||
| ._auth.py | 163.0 B |
|
||||
| ._database.py | 163.0 B |
|
||||
| ._ki.py | 163.0 B |
|
||||
| ._main.py | 163.0 B |
|
||||
| auth.py | 4.5 KB |
|
||||
| content_filter.py | 2.3 KB |
|
||||
| database.py | 76.6 KB |
|
||||
| generate_thumbs.py | 1.0 KB |
|
||||
| ki.py | 15.7 KB |
|
||||
| mailer.py | 5.9 KB |
|
||||
| main.py | 76.9 KB |
|
||||
| media_utils.py | 7.7 KB |
|
||||
| migrate_media.py | 3.3 KB |
|
||||
| ratelimit.py | 4.5 KB |
|
||||
| routes/.___init__.py | 163.0 B |
|
||||
| routes/._auth.py | 163.0 B |
|
||||
| routes/._diary.py | 163.0 B |
|
||||
| routes/._dogs.py | 163.0 B |
|
||||
| routes/._health.py | 163.0 B |
|
||||
| routes/._ki.py | 163.0 B |
|
||||
| routes/._poison.py | 163.0 B |
|
||||
| routes/._push.py | 163.0 B |
|
||||
| routes/__init__.py | 0.0 B |
|
||||
| routes/achievements.py | 10.9 KB |
|
||||
| routes/admin.py | 41.0 KB |
|
||||
| routes/alerts.py | 1.5 KB |
|
||||
| routes/auth.py | 13.5 KB |
|
||||
| routes/breeder.py | 16.2 KB |
|
||||
| routes/breeder_export.py | 22.0 KB |
|
||||
| routes/breeder_photos.py | 13.4 KB |
|
||||
| routes/chat.py | 10.4 KB |
|
||||
| routes/diary.py | 35.8 KB |
|
||||
| routes/dogs.py | 22.2 KB |
|
||||
| routes/events.py | 8.9 KB |
|
||||
| routes/forum.py | 27.1 KB |
|
||||
| routes/friends.py | 11.8 KB |
|
||||
| routes/health.py | 21.1 KB |
|
||||
| routes/import_data.py | 10.0 KB |
|
||||
| routes/ki.py | 2.2 KB |
|
||||
| routes/knigge.py | 3.9 KB |
|
||||
| routes/litters.py | 25.0 KB |
|
||||
| routes/lost.py | 6.3 KB |
|
||||
| routes/moderation.py | 10.0 KB |
|
||||
| routes/movies.py | 10.2 KB |
|
||||
| routes/notes.py | 9.5 KB |
|
||||
| routes/notifications.py | 4.2 KB |
|
||||
| routes/osm.py | 16.8 KB |
|
||||
| routes/outreach.py | 8.9 KB |
|
||||
| routes/partner.py | 7.3 KB |
|
||||
| routes/places.py | 6.4 KB |
|
||||
| routes/poison.py | 7.0 KB |
|
||||
| routes/praise.py | 1.2 KB |
|
||||
| routes/profile.py | 3.7 KB |
|
||||
| routes/push.py | 5.9 KB |
|
||||
| routes/ratings.py | 4.8 KB |
|
||||
| routes/routen.py | 22.2 KB |
|
||||
| routes/services.py | 5.1 KB |
|
||||
| routes/sharing.py | 5.2 KB |
|
||||
| routes/sitting.py | 10.0 KB |
|
||||
| routes/sitting_access.py | 2.8 KB |
|
||||
| routes/social.py | 117.2 KB |
|
||||
| routes/stats.py | 1.5 KB |
|
||||
| routes/tieraerzte.py | 6.1 KB |
|
||||
| routes/training.py | 33.8 KB |
|
||||
| routes/walks.py | 20.5 KB |
|
||||
| routes/weather.py | 537.0 B |
|
||||
| routes/webcal.py | 14.9 KB |
|
||||
| routes/widget.py | 1.8 KB |
|
||||
| routes/wiki.py | 26.6 KB |
|
||||
| routes/zucht_hunde.py | 31.2 KB |
|
||||
| routes/zucht_ki.py | 18.8 KB |
|
||||
| scheduler.py | 32.8 KB |
|
||||
| scraper/__init__.py | 0.0 B |
|
||||
| scraper/breed_enricher.py | 21.5 KB |
|
||||
| scraper/breed_evaluator.py | 4.9 KB |
|
||||
| scraper/breeds.py | 5.9 KB |
|
||||
| scraper/events_vdh.py | 10.6 KB |
|
||||
| scraper/fetch_wiki_images.py | 9.0 KB |
|
||||
| scraper/wikidata_breeds.py | 7.8 KB |
|
||||
| scraper/wikipedia_photos.py | 6.7 KB |
|
||||
| scripts/generate_reports.py | 29.4 KB |
|
||||
| timeutils.py | 3.3 KB |
|
||||
| username_blocklist.py | 1.2 KB |
|
||||
| weather.py | 5.9 KB |
|
||||
| welfare_check.py | 10.0 KB |
|
||||
|
||||
**Gesamt**: 85 Dateien, 1.0 MB
|
||||
|
||||
|
||||
## Frontend — JavaScript
|
||||
|
||||
| Datei | Größe |
|
||||
| ------------------------ | -------- |
|
||||
| ._api.js | 163.0 B |
|
||||
| ._app.js | 163.0 B |
|
||||
| ._ui.js | 163.0 B |
|
||||
| api.js | 31.2 KB |
|
||||
| app.js | 38.2 KB |
|
||||
| leaflet.js | 143.7 KB |
|
||||
| leaflet.markercluster.js | 33.3 KB |
|
||||
| pages/admin.js | 119.1 KB |
|
||||
| pages/breeder.js | 8.3 KB |
|
||||
| pages/chat.js | 19.0 KB |
|
||||
| pages/datenschutz.js | 11.2 KB |
|
||||
| pages/diary.js | 92.7 KB |
|
||||
| pages/dog-profile.js | 51.5 KB |
|
||||
| pages/erste-hilfe.js | 31.7 KB |
|
||||
| pages/events.js | 29.8 KB |
|
||||
| pages/forum.js | 52.8 KB |
|
||||
| pages/friends.js | 38.6 KB |
|
||||
| pages/gruender.js | 7.1 KB |
|
||||
| pages/health.js | 107.5 KB |
|
||||
| pages/impressum.js | 3.9 KB |
|
||||
| pages/knigge.js | 16.9 KB |
|
||||
| pages/litters.js | 51.6 KB |
|
||||
| pages/lost.js | 30.3 KB |
|
||||
| pages/map.js | 70.7 KB |
|
||||
| pages/moderation.js | 23.0 KB |
|
||||
| pages/movies.js | 18.6 KB |
|
||||
| pages/notes.js | 38.1 KB |
|
||||
| pages/notifications.js | 12.0 KB |
|
||||
| pages/onboarding.js | 17.2 KB |
|
||||
| pages/places.js | 19.7 KB |
|
||||
| pages/poison.js | 26.9 KB |
|
||||
| pages/routes.js | 132.6 KB |
|
||||
| pages/settings.js | 84.2 KB |
|
||||
| pages/sitting.js | 33.9 KB |
|
||||
| pages/social.js | 74.3 KB |
|
||||
| pages/trainingsplaene.js | 40.0 KB |
|
||||
| pages/uebungen.js | 98.8 KB |
|
||||
| pages/walks.js | 42.4 KB |
|
||||
| pages/welcome.js | 51.1 KB |
|
||||
| pages/widget.js | 5.6 KB |
|
||||
| pages/wiki.js | 55.9 KB |
|
||||
| pages/wurfboerse.js | 9.7 KB |
|
||||
| pages/zucht-profil.js | 23.6 KB |
|
||||
| pages/zuchthunde.js | 67.0 KB |
|
||||
| qrcode.min.js | 19.5 KB |
|
||||
| ui.js | 34.8 KB |
|
||||
|
||||
**Gesamt**: 46 Dateien, 1.9 MB
|
||||
|
||||
|
||||
## Frontend — CSS
|
||||
|
||||
| Datei | Größe |
|
||||
| ------------------------- | -------- |
|
||||
| ._components.css | 163.0 B |
|
||||
| ._design-system.css | 163.0 B |
|
||||
| ._layout.css | 163.0 B |
|
||||
| MarkerCluster.Default.css | 1.3 KB |
|
||||
| MarkerCluster.css | 872.0 B |
|
||||
| components.css | 178.5 KB |
|
||||
| design-system.css | 10.0 KB |
|
||||
| layout.css | 20.7 KB |
|
||||
| leaflet.css | 14.2 KB |
|
||||
|
||||
**Gesamt**: 9 Dateien, 226.1 KB
|
||||
|
||||
|
||||
## Frontend — HTML
|
||||
|
||||
| Datei | Größe |
|
||||
| ------------ | ------- |
|
||||
| ._index.html | 163.0 B |
|
||||
| index.html | 25.3 KB |
|
||||
| landing.html | 35.2 KB |
|
||||
|
||||
151
reports/2026-05-01-funktionsumfang.md
Normal file
151
reports/2026-05-01-funktionsumfang.md
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
# Funktionsumfang — Ban Yaro
|
||||
|
||||
_Erstellt: 01.05.2026 06:07_
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Authentifizierung
|
||||
|
||||
- Registrierung mit E-Mail-Verifikation
|
||||
- Login / Logout (JWT + HttpOnly-Cookie)
|
||||
- Passwort vergessen / zurücksetzen
|
||||
- Verifikations-Mail erneut senden
|
||||
- Referral-System (3 Stufen: 10/20/50 Refs → 20/30/50 % Rabatt)
|
||||
- Partner-Codes (Gründer-Slot, eigene Einladungen)
|
||||
|
||||
|
||||
## Hunde-Profile
|
||||
|
||||
- Anlegen / Bearbeiten von Hunde-Profilen (Rasse, Geburtsdatum, Gewicht, …)
|
||||
- Avatar-Upload (JPEG/WebP-Konvertierung, Vorschau)
|
||||
- Öffentliches Profil mit QR-Code und Teilen-Link
|
||||
- Hunde-Ausweis (druckbares HTML-Dokument)
|
||||
- Mehrere Hunde pro Account
|
||||
|
||||
|
||||
## Forum
|
||||
|
||||
- Thread erstellen mit Kategorien (allgemein, rasse, region, …)
|
||||
- Antworten, Likes, Foto-Anhänge (max. 5 pro Thread)
|
||||
- Moderatoren: Thread pinnen, sperren, löschen
|
||||
- Report-System: Beiträge melden
|
||||
- Push-Benachrichtigungen bei neuer Antwort
|
||||
- Öffentlich lesbar, Schreiben nur für verifizierte User
|
||||
|
||||
|
||||
## Tagebuch
|
||||
|
||||
- Tageseinträge mit Freitext, Fotos, GPS-Koordinaten
|
||||
- EXIF-GPS-Extraktion aus Foto-Uploads
|
||||
- Kartenansicht aller Tagebuch-Pins
|
||||
- Kalenderansicht nach Datum
|
||||
- Medienansicht (Galerie aller Fotos)
|
||||
- Day-One-kompatibles Format
|
||||
|
||||
|
||||
## Gesundheit & Training
|
||||
|
||||
- Gewichtsverlauf mit Diagramm
|
||||
- Gesundheits-Erinnerungen (Push, täglich 08:00)
|
||||
- 104 Übungen (DB-basiert, KI-Trainingspläne)
|
||||
- Training-Logging mit Fortschrittsverfolgung
|
||||
- KI-Gesundheitsberichte (wöchentlich, cloud/lokal)
|
||||
|
||||
|
||||
## Karte & POIs
|
||||
|
||||
- Leaflet-Karte mit Cluster-Markern
|
||||
- Nearby-Alerts: Giftköder, Vermisste Hunde in der Nähe
|
||||
- Overpass-API-Integration (Tierärzte, Hundewiesen, Parks, …)
|
||||
- 90-Tage-Cache für Overpass-Abfragen
|
||||
- ORS-Routenvorschläge zu Hundeparks
|
||||
|
||||
|
||||
## Wiki & Rassen
|
||||
|
||||
- Rassen-Datenbank (TheDogAPI + Wikidata-Enrichment)
|
||||
- Züchter-Verzeichnis mit Verifikation
|
||||
- Breed-Interest-Tracking ('So einen hab ich' / 'Interessiert mich')
|
||||
- KI-gestützte Rassen-Anreicherung
|
||||
- Wikipedia-basierte Beschreibungen
|
||||
|
||||
|
||||
## Züchter-Features
|
||||
|
||||
- Züchter-Antrag mit Dokument-Upload
|
||||
- Admin-Prüfung und Freischaltung
|
||||
- Züchter-Profil (Zwingername, Rassen, VDH, Stadt)
|
||||
- Wurfverwaltung mit Elterntieren, Welpen, Fotos
|
||||
- Tierschutz-Check vor Wurf-Anlage
|
||||
- Stammbaum-Ansicht
|
||||
- Genetik-Tracking (Farbgene, Erbkrankheiten)
|
||||
- Kaufvertrags-Generator
|
||||
- Jahresbericht-Export
|
||||
|
||||
|
||||
## Social Features
|
||||
|
||||
- Freundschaften (anfragen, annehmen, ablehnen)
|
||||
- Social-Media-Posts (Luna — KI-Social-Manager)
|
||||
- Lober: wöchentlicher KI-Lob-Push (Mo 09:00)
|
||||
- Benachrichtigungen (in-app + Push-Notifications)
|
||||
|
||||
|
||||
## Admin & Moderation
|
||||
|
||||
- Admin-Dashboard: User-Verwaltung, Ban/Unban
|
||||
- Moderation-Queue: gemeldete Beiträge
|
||||
- Outreach-Mailing: Templates, Versand, Log
|
||||
- Statistiken: User-Wachstum, Aktivität
|
||||
- Züchter-Anträge prüfen
|
||||
- Partner-Codes verwalten
|
||||
- KI-Konfiguration (cloud/lokal, Limits)
|
||||
|
||||
|
||||
## Infrastruktur
|
||||
|
||||
- Service Worker (Offline-Stufen 1–3)
|
||||
- Push-Notifications (VAPID)
|
||||
- APScheduler: 9 Hintergrund-Jobs (Gesundheit, Wetter, Events, …)
|
||||
- Brevo E-Mail-API + SMTP-Fallback
|
||||
- Analytics: Umami v2 (extern)
|
||||
- SEO: robots.txt, sitemap.xml, llms.txt
|
||||
- Landing Page + Widget
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Backend-Routers
|
||||
|
||||
| Router | Präfix |
|
||||
| ------------- | ------------------ |
|
||||
| auth | /api/auth |
|
||||
| dogs | /api/dogs |
|
||||
| diary | /api/diary |
|
||||
| health | /api/health |
|
||||
| forum | /api/forum |
|
||||
| wiki | /api/wiki |
|
||||
| map | /api/map |
|
||||
| poison | /api/poison |
|
||||
| lost | /api/lost |
|
||||
| breeder | /api/breeder |
|
||||
| litters | /api/litters |
|
||||
| training | /api/training |
|
||||
| outreach | /api/outreach |
|
||||
| moderation | /api/moderation |
|
||||
| notes | /api/notes |
|
||||
| notifications | /api/notifications |
|
||||
| push | /api/push |
|
||||
| friends | /api/friends |
|
||||
| profile | /api/profile |
|
||||
| social | /api/social |
|
||||
| sitting | /api/sitting |
|
||||
| achievements | /api/achievements |
|
||||
| stats | /api/stats |
|
||||
| walks | /api/walks |
|
||||
| events | /api/events |
|
||||
| alerts | /api/alerts |
|
||||
| ratings | /api/ratings |
|
||||
91
reports/2026-05-01-nutzer.md
Normal file
91
reports/2026-05-01-nutzer.md
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
# Nutzerübersicht — Ban Yaro
|
||||
|
||||
_Erstellt: 01.05.2026 06:07_
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Nutzer nach Rolle
|
||||
|
||||
| Gruppe | Anzahl |
|
||||
| -------------------- | ------ |
|
||||
| Gesamt Nutzer | 5 |
|
||||
| Admin | 1 |
|
||||
| Moderatoren | 2 |
|
||||
| Züchter | 0 |
|
||||
| Gründer (aktiv) | 0 |
|
||||
| Partner | 1 |
|
||||
| Premium | 0 |
|
||||
| Gesperrt (banned) | 0 |
|
||||
| E-Mail unverifiziert | 4 |
|
||||
|
||||
## Registrierungen (letzte 6 Monate)
|
||||
|
||||
| Monat | Neue Nutzer |
|
||||
| ------- | ----------- |
|
||||
| 2026-04 | 5 |
|
||||
|
||||
|
||||
## Hunde
|
||||
|
||||
| Metrik | Anzahl |
|
||||
| ---------------------------- | ------ |
|
||||
| Hunde gesamt | 4 |
|
||||
| Hunde mit Tagebuch-Einträgen | 3 |
|
||||
|
||||
|
||||
## Forum
|
||||
|
||||
| Metrik | Anzahl |
|
||||
| ---------------- | ------ |
|
||||
| Threads | 10 |
|
||||
| Antworten | 7 |
|
||||
| Offene Meldungen | 0 |
|
||||
|
||||
**Threads nach Kategorie:**
|
||||
|
||||
| Kategorie | Threads |
|
||||
| ----------- | ------- |
|
||||
| rasse | 3 |
|
||||
| spaziergang | 3 |
|
||||
| allgemein | 2 |
|
||||
| ausflug | 2 |
|
||||
|
||||
|
||||
## Tagebuch
|
||||
|
||||
| Metrik | Anzahl |
|
||||
| ------------------- | ------ |
|
||||
| Einträge gesamt | 117 |
|
||||
| Mit Foto | 0 |
|
||||
| Mit GPS-Koordinaten | 0 |
|
||||
|
||||
|
||||
## Medien auf dem Server
|
||||
|
||||
| Verzeichnis | Dateien | Größe |
|
||||
| ----------- | ------- | -------- |
|
||||
| avatars | 4 | 7.1 MB |
|
||||
| breeds | 820 | 212.5 MB |
|
||||
| diary | 311 | 215.6 MB |
|
||||
| dogs | 10 | 39.8 MB |
|
||||
| forum | 44 | 112.1 MB |
|
||||
| poison | 0 | 0.0 B |
|
||||
| routes | 1 | 6.6 MB |
|
||||
| **GESAMT** | 1190 | 593.6 MB |
|
||||
|
||||
|
||||
## Gesendete E-Mails
|
||||
|
||||
| Absender | Anzahl | Erste Mail | Letzte Mail |
|
||||
| -------- | ------ | ---------- | ----------- |
|
||||
| partner | 9 | 2026-04-30 | 2026-04-30 |
|
||||
|
||||
**Gesamt**: 9 Mails gesendet
|
||||
|
||||
|
||||
## Besuche (Analytics)
|
||||
|
||||
> **Hinweis:** Besucher-Statistiken (Besuche/Tag und Monat) werden extern über **Umami** erfasst und sind nicht im Container verfügbar. Bitte Umami-Dashboard direkt aufrufen.
|
||||
|
||||
24
reports/2026-05-01-partner.md
Normal file
24
reports/2026-05-01-partner.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# Partnerliste — Ban Yaro
|
||||
|
||||
_Erstellt: 01.05.2026 06:07_
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Partner-Accounts
|
||||
|
||||
| Name | E-Mail | Partner seit | Gründer-Nr. |
|
||||
| ---- | ---------------- | ------------ | ----------- |
|
||||
| René | mail@motocamp.de | 2026-04-12 | — |
|
||||
|
||||
|
||||
## Partner-Codes
|
||||
|
||||
_Keine Partner-Codes_
|
||||
|
||||
|
||||
## Gründer
|
||||
|
||||
_Noch keine Gründer_
|
||||
|
||||
172
reports/2026-05-01-server.md
Normal file
172
reports/2026-05-01-server.md
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
# Server & Speicherbelegung — Ban Yaro
|
||||
|
||||
_Erstellt: 01.05.2026 06:07_
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Festplattenbelegung
|
||||
|
||||
```
|
||||
Filesystem Size Used Avail Use% Mounted on
|
||||
/dev/mapper/cachedev_0 25T 14T 11T 58% /data
|
||||
```
|
||||
|
||||
|
||||
## Media-Verzeichnisse
|
||||
|
||||
```
|
||||
217M /data/media/diary
|
||||
215M /data/media/breeds
|
||||
113M /data/media/forum
|
||||
40M /data/media/dogs
|
||||
7.1M /data/media/avatars
|
||||
6.6M /data/media/routes
|
||||
0 /data/media/poison
|
||||
|
||||
Gesamt: 596M /data/media
|
||||
```
|
||||
|
||||
|
||||
## Datenbank
|
||||
|
||||
**DB-Größe:** 62M /data/banyaro.db
|
||||
|
||||
| Tabelle | Zeilen |
|
||||
| ---------------------- | ------- |
|
||||
| osm_pois | 440,865 |
|
||||
| osm_tiles | 7,613 |
|
||||
| wiki_rassen | 1,003 |
|
||||
| diary_dogs | 118 |
|
||||
| diary | 117 |
|
||||
| training_exercises | 110 |
|
||||
| diary_media | 101 |
|
||||
| pflege_tipps | 45 |
|
||||
| sqlite_sequence | 42 |
|
||||
| push_subscriptions | 26 |
|
||||
| user_badges | 22 |
|
||||
| route_walks | 19 |
|
||||
| notifications | 17 |
|
||||
| exercise_progress | 15 |
|
||||
| routes | 13 |
|
||||
| user_map_pois | 13 |
|
||||
| knigge_votes | 12 |
|
||||
| forum_threads | 11 |
|
||||
| health | 11 |
|
||||
| direct_messages | 10 |
|
||||
| outreach_log | 9 |
|
||||
| forum_posts | 8 |
|
||||
| forum_likes | 7 |
|
||||
| poison | 6 |
|
||||
| events | 5 |
|
||||
| ki_daily_calls | 5 |
|
||||
| training_sessions | 5 |
|
||||
| users | 5 |
|
||||
| dogs | 4 |
|
||||
| ki_health_reports | 4 |
|
||||
| social_content | 4 |
|
||||
| weekly_praise | 4 |
|
||||
| ors_daily_total | 3 |
|
||||
| walks | 3 |
|
||||
| friendships | 2 |
|
||||
| zucht_hunde | 2 |
|
||||
| admin_audit | 1 |
|
||||
| breeder_jahresberichte | 1 |
|
||||
| breeder_profiles | 1 |
|
||||
| conversations | 1 |
|
||||
| dog_shares | 1 |
|
||||
| email_templates | 1 |
|
||||
| hund_des_monats_votes | 1 |
|
||||
| notes | 1 |
|
||||
| ratings | 1 |
|
||||
| tieraerzte | 1 |
|
||||
| training_ki_cache | 1 |
|
||||
| wiki_breed_interest | 1 |
|
||||
| wiki_foto_submissions | 1 |
|
||||
| breeder_documents | 0 |
|
||||
| breeder_photos | 0 |
|
||||
| dog_genetic_tests | 0 |
|
||||
| dog_health_tests | 0 |
|
||||
| dog_titles | 0 |
|
||||
| event_rsvp | 0 |
|
||||
| forum_reports | 0 |
|
||||
| health_media | 0 |
|
||||
| litters | 0 |
|
||||
| lost_dogs | 0 |
|
||||
| movie_votes | 0 |
|
||||
| osm_poi_edits | 0 |
|
||||
| osm_reports | 0 |
|
||||
| partner_codes | 0 |
|
||||
| places | 0 |
|
||||
| premium_orders | 0 |
|
||||
| puppies | 0 |
|
||||
| puppy_weights | 0 |
|
||||
| route_suggest_usage | 0 |
|
||||
| service_offers | 0 |
|
||||
| sitters | 0 |
|
||||
| sitting_requests | 0 |
|
||||
| sitting_subscriptions | 0 |
|
||||
| training_plan_progress | 0 |
|
||||
| walk_invitations | 0 |
|
||||
| walk_participant_dogs | 0 |
|
||||
| walk_participants | 0 |
|
||||
| wiki_berichte | 0 |
|
||||
| wiki_zuchter | 0 |
|
||||
|
||||
|
||||
## App-Code
|
||||
|
||||
**App-Verzeichnis (/app):** 8.9M /app
|
||||
|
||||
|
||||
## Kapazitäts-Warnung
|
||||
|
||||
> ✅ 58 % Festplatte belegt — ausreichend Kapazität.
|
||||
|
||||
|
||||
## Installierte Python-Pakete
|
||||
|
||||
```
|
||||
Package Version
|
||||
------------------ ------------
|
||||
aiohappyeyeballs 2.6.1
|
||||
aiohttp 3.13.5
|
||||
aiosignal 1.4.0
|
||||
annotated-types 0.7.0
|
||||
anthropic 0.49.0
|
||||
anyio 4.13.0
|
||||
APScheduler 3.10.4
|
||||
attrs 26.1.0
|
||||
bcrypt 4.3.0
|
||||
certifi 2026.4.22
|
||||
cffi 2.0.0
|
||||
charset-normalizer 3.4.7
|
||||
click 8.3.3
|
||||
cryptography 47.0.0
|
||||
defusedxml 0.7.1
|
||||
distro 1.9.0
|
||||
dnspython 2.8.0
|
||||
email-validator 2.3.0
|
||||
fastapi 0.115.0
|
||||
frozenlist 1.8.0
|
||||
h11 0.16.0
|
||||
http_ece 1.2.1
|
||||
httpcore 1.0.9
|
||||
httptools 0.7.1
|
||||
httpx 0.28.1
|
||||
idna 3.13
|
||||
jiter 0.14.0
|
||||
multidict 6.7.1
|
||||
odfpy 1.4.1
|
||||
openai 1.59.2
|
||||
pillow 11.2.1
|
||||
pillow_heif 0.22.0
|
||||
pip 25.0.1
|
||||
polyline 2.0.2
|
||||
propcache 0.4.1
|
||||
py-vapid 1.9.4
|
||||
pycparser 3.0
|
||||
pydantic 2.10.6
|
||||
```
|
||||
|
||||
128
reports/2026-05-01-sicherheit.md
Normal file
128
reports/2026-05-01-sicherheit.md
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
# Sicherheitsbericht — Ban Yaro
|
||||
|
||||
_Erstellt: 01.05.2026 06:07_
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Übersicht implementierter Schutzmaßnahmen
|
||||
|
||||
|
||||
### 1. Authentifizierung & Passwörter
|
||||
|
||||
- **JWT** (HS256) mit 30-Tage-Ablauf, HttpOnly + Secure + SameSite=lax Cookie
|
||||
- **Bcrypt**-Passwort-Hashing mit automatischem Salt
|
||||
- Mindestlänge 8 Zeichen, serverseitig erzwungen
|
||||
- Passwort-Reset: kryptographisches Token, 2 Stunden Ablauf
|
||||
|
||||
|
||||
### 2. Registrierung
|
||||
|
||||
- **E-Mail-Verifikation** zwingend vor dem ersten Login
|
||||
- Verifikationslink läuft nach 7 Tagen ab
|
||||
- Rate Limit: 5 Registrierungen / Stunde / IP
|
||||
- Username-Blocklist: >200 reservierte und unangemessene Begriffe
|
||||
- Keine Doppelanmeldung (E-Mail und Username unique)
|
||||
|
||||
|
||||
### 3. Login-Schutz
|
||||
|
||||
- **IP-Rate-Limit**: 10 Versuche / 5 Minuten
|
||||
- **Email-Rate-Limit**: 5 Versuche / 5 Minuten pro E-Mail-Adresse
|
||||
- **Account-Lockout**: 5 Fehlversuche → 15 Minuten gesperrt (in-memory)
|
||||
- Fehlerzähler wird bei erfolgreichem Login zurückgesetzt
|
||||
- Gleiche Fehlermeldung bei falschem Passwort UND unbekannter E-Mail (kein User-Enumeration)
|
||||
|
||||
|
||||
### 4. Forum-Schutz
|
||||
|
||||
- E-Mail-Verifikation Pflicht zum Posten
|
||||
- **Post-Cooldown**: 30 Sekunden zwischen beliebigen Beiträgen
|
||||
- **Stunden-Limit Threads**: max. 5 neue Threads / Stunde / User
|
||||
- **Stunden-Limit Antworten**: max. 20 Antworten / Stunde / User
|
||||
- **Duplikat-Erkennung**: gleicher Text in 5 Minuten → blockiert
|
||||
- **Content-Filter**: Spam-Keywords, URL-Sperre für Accounts < 7 Tage, Sonderzeichen-Ratio
|
||||
- Moderatoren können Threads sperren, Beiträge löschen (Soft-Delete)
|
||||
- Report-System: User können Beiträge melden
|
||||
|
||||
|
||||
### 5. HTTP-Security-Headers
|
||||
|
||||
| Header | Wert |
|
||||
|--------|------|
|
||||
| `Strict-Transport-Security` | `max-age=31536000; includeSubDomains` |
|
||||
| `Content-Security-Policy` | default-src 'self'; frame-ancestors 'none'; … |
|
||||
| `X-Content-Type-Options` | `nosniff` |
|
||||
| `Referrer-Policy` | `strict-origin-when-cross-origin` |
|
||||
| `Permissions-Policy` | camera=(), microphone=(), geolocation=(self) |
|
||||
|
||||
|
||||
### 6. Rate Limiting (alle Endpunkte)
|
||||
|
||||
| Endpunkt | Limit | Fenster |
|
||||
| ------------------------- | ------ | -------------- |
|
||||
| /auth/register | 5 Req | 60 Min |
|
||||
| /auth/login (IP) | 10 Req | 5 Min |
|
||||
| /auth/login (Email) | 5 Req | 5 Min |
|
||||
| /auth/forgot-password | 3 Req | 60 Min |
|
||||
| /auth/resend-verification | 3 Req | 60 Min / Email |
|
||||
| /auth/reset-password | 5 Req | 60 Min |
|
||||
| KI-Features | 10 Req | 60 Min |
|
||||
| Poison-Reports | 3 Req | 60 Min |
|
||||
| Wiki-Liste | 60 Req | 60 Sek |
|
||||
| Wiki-Detail | 30 Req | 60 Sek |
|
||||
|
||||
|
||||
### 7. Honeypot-Fallen
|
||||
|
||||
Folgende Pfade blockieren Scanner-IPs sofort für 24 Stunden:
|
||||
|
||||
```
|
||||
/api/admin/users /api/v1/users /api/users /api/.env
|
||||
/api/config /api/setup /api/install /api/phpinfo
|
||||
/api/debug /api/actuator /api/swagger /api/graphql
|
||||
/api/wiki/trap
|
||||
```
|
||||
|
||||
|
||||
### 8. Datei-Upload-Sicherheit
|
||||
|
||||
- **Magic-Byte-Prüfung**: JPEG, PNG, GIF, WebP, MP4, WebM
|
||||
- **Path-Traversal-Schutz**: alle Pfade bleiben innerhalb `MEDIA_DIR`
|
||||
- **Größenbeschränkung**: 20 MB globales Limit (Middleware)
|
||||
- Automatische Konvertierung: HEIC→JPEG, MOV/AVI→MP4
|
||||
- Max. 5 Fotos pro Forum-Thread
|
||||
|
||||
|
||||
### 9. Admin & Moderation
|
||||
|
||||
- Admin-Endpoints per `require_admin` Dependency geschützt
|
||||
- Moderatoren-Rolle mit eingeschränkten Rechten
|
||||
- User-Banning mit Sperrgrund, geprüft bei jedem Request
|
||||
- Outreach-Mailing nur über Admin-Panel, vollständiges Log
|
||||
|
||||
|
||||
## Aktuelle Kennzahlen
|
||||
|
||||
| Metrik | Wert |
|
||||
| ------------------------ | ---- |
|
||||
| Gesperrte Accounts | 0 |
|
||||
| Unverifizierte Accounts | 4 |
|
||||
| Gesendete Outreach-Mails | 9 |
|
||||
|
||||
|
||||
## Bekannte Einschränkungen
|
||||
|
||||
- Rate-Limit-Daten und IP-Blocklist sind **in-memory** → Reset bei Container-Neustart
|
||||
- Kein CAPTCHA (bewusst: Nutzerfreundlichkeit vs. Bot-Schutz)
|
||||
- Keine Refresh-Token-Rotation (JWT ist 30 Tage gültig)
|
||||
- Analytics (Besucher) extern über Umami — kein Zugriff aus dem Container
|
||||
|
||||
|
||||
## Empfehlungen für nächste Überprüfung
|
||||
|
||||
- [ ] Prüfen ob IP-Blocklist-Persistenz via DB sinnvoll wäre
|
||||
- [ ] CSP weiter verschärfen (nonce-basiert statt unsafe-inline)
|
||||
- [ ] Login-Logs in DB schreiben (für Audit-Trail)
|
||||
- [ ] Zwei-Faktor-Authentifizierung für Admin-Accounts evaluieren
|
||||
Loading…
Add table
Add a link
Reference in a new issue