Dokumentation: Security-Features und Upload-Konsolidierung (Phase 6)
Neue Packages und Module: - fileutil: Shared Upload-Logik mit Tenant-Isolation - httpapi/csrf.go: Double-Submit-Cookie CSRF-Schutz - httpapi/ratelimit.go: Rate-Limiting für /login - httpapi/uploads.go: neuteredFileSystem (kein Directory-Listing) - httpapi/manage/csrf_helpers.go: CSRF-Helpers für Templates - player/agent/internal/screenshot/screenshot.go: Periodische Screenshot-Erfassung Neue Umgebungsvariablen: - MORZ_INFOBOARD_REGISTER_SECRET: Pre-Shared-Secret für Agent-Registrierung - MORZ_INFOBOARD_SCREENSHOT_EVERY: Screenshot-Intervall im Player-Agent (Sekunden) Dokumentation aktualisiert: - server/backend/README.md: Neue Packages und Env-Variable REGISTER_SECRET - DEVELOPMENT.md: Beide neuen Env-Variablen mit Erklärungen - docs/API-ENDPOINTS.md: Screenshot-Endpoint als "In Vorbereitung" dokumentiert Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
931652a550
commit
029fa39ffd
3 changed files with 26 additions and 0 deletions
|
|
@ -161,6 +161,7 @@ Konfigurierbar ueber:
|
|||
- `MORZ_INFOBOARD_STATUS_STORE_PATH` – Pfad zur JSON-Datei fuer persistenten Status-Store; leer lassen fuer reinen In-Memory-Betrieb
|
||||
- `MORZ_INFOBOARD_ADMIN_PASSWORD` – Passwort fuer den initialen Admin-User (leer = kein EnsureAdminUser-Lauf)
|
||||
- `MORZ_INFOBOARD_DEFAULT_TENANT` – Slug des Standard-Tenants, dem der Admin-User zugeordnet wird (Standard: `morz`)
|
||||
- `MORZ_INFOBOARD_REGISTER_SECRET` – Pre-Shared-Secret fuer POST /api/v1/screens/register; leer = offen fuer alle
|
||||
- `MORZ_INFOBOARD_DEV_MODE` – wenn `true`: Session-Cookie wird ohne `Secure`-Flag gesetzt (nur fuer lokale Entwicklung)
|
||||
|
||||
Beispiele:
|
||||
|
|
@ -194,6 +195,8 @@ Optional:
|
|||
|
||||
- `MORZ_INFOBOARD_MQTT_USERNAME` – MQTT-Benutzername
|
||||
- `MORZ_INFOBOARD_MQTT_PASSWORD` – MQTT-Passwort
|
||||
- `MORZ_INFOBOARD_REGISTER_SECRET` – Pre-Shared-Secret fuer Selbstregistrierung; muss mit Server-Konfiguration uebereinstimmen
|
||||
- `MORZ_INFOBOARD_SCREENSHOT_EVERY` – Intervall fuer periodische Screenshots in Sekunden (z.B. `300` fuer 5 Minuten; 0 oder leer = deaktiviert)
|
||||
- `MORZ_INFOBOARD_CONFIG=/etc/signage/config.json` – dateibasierte Konfiguration
|
||||
|
||||
Eine Beispielkonfiguration liegt in `player/config/config.example.json`.
|
||||
|
|
|
|||
|
|
@ -941,8 +941,25 @@ Typische HTTP-Status:
|
|||
|
||||
---
|
||||
|
||||
## In Vorbereitung (Phase 6 / künftig)
|
||||
|
||||
Die folgenden Endpoints sind derzeit vorbereitet, aber noch nicht vollständig implementiert:
|
||||
|
||||
- `POST /api/v1/player/screenshot` — Upload von Player-Screenshots an den Backend-Server
|
||||
- Wird vom Agent unter `player/agent/internal/screenshot/screenshot.go` mit dem Intervall `MORZ_INFOBOARD_SCREENSHOT_EVERY` aufgerufen
|
||||
- Multipart-Request mit `screen_id`, `screenshot` (Datei), `mime_type`
|
||||
- Benötigt Backend-Handler für Persistierung und/oder Verarbeitung
|
||||
|
||||
---
|
||||
|
||||
## Änderungshistorie
|
||||
|
||||
- **2026-03-23 (Update):** Security-Enhancements und Upload-Konsolidierung (Doris / Doku-Review)
|
||||
- CSRF-Schutz (Double-Submit-Cookie) in `internal/httpapi/csrf.go`
|
||||
- Rate-Limiting für `/login` in `internal/httpapi/ratelimit.go`
|
||||
- Upload-Logik konsolidiert in `internal/fileutil/fileutil.go` und `internal/httpapi/uploads.go`
|
||||
- Neue Env-Variable `MORZ_INFOBOARD_REGISTER_SECRET` dokumentiert
|
||||
- Screenshot-Modul im Agent vorbereitet mit `MORZ_INFOBOARD_SCREENSHOT_EVERY`
|
||||
- **2026-03-23 (Update):** Auth- und Tenant-Dashboard-Endpoints ergaenzt (Doris / Doku-Review)
|
||||
- `GET /login`, `POST /login`, `POST /logout` dokumentiert
|
||||
- `GET /tenant/{tenantSlug}/dashboard` dokumentiert
|
||||
|
|
|
|||
|
|
@ -18,8 +18,13 @@ Dieses Verzeichnis enthaelt das zentrale Go-Backend fuer das Info-Board-System.
|
|||
- `internal/config/` — Konfiguration via Umgebungsvariablen
|
||||
- `internal/db/` — PostgreSQL-Anbindung und Migrations-Runner
|
||||
- `internal/store/` — Datenbankzugriff (TenantStore, ScreenStore, MediaStore, PlaylistStore, AuthStore)
|
||||
- `internal/fileutil/` — Upload-Hilfsfunktionen (SaveUploadedFile mit Tenant-Isolation)
|
||||
- `internal/httpapi/` — HTTP-Routing, Middleware und Handler
|
||||
- `internal/httpapi/csrf.go` — Double-Submit-Cookie CSRF-Schutz
|
||||
- `internal/httpapi/ratelimit.go` — Rate-Limiting fuer /login (Brute-Force-Schutz)
|
||||
- `internal/httpapi/uploads.go` — Upload-Handler konsolidiert
|
||||
- `internal/httpapi/manage/` — Admin-UI und Playlist-Management-UI
|
||||
- `internal/httpapi/manage/csrf_helpers.go` — CSRF-Token Helpers fuer Templates
|
||||
- `internal/httpapi/tenant/` — Tenant-Self-Service-Dashboard
|
||||
- `internal/mqttnotifier/` — MQTT-Notifizierungen
|
||||
- `internal/reqcontext/` — Context-Keys fuer authentifizierten User
|
||||
|
|
@ -102,6 +107,7 @@ Alle Werte per Umgebungsvariable:
|
|||
| `MORZ_INFOBOARD_ADMIN_PASSWORD` | Passwort des initialen Admin-Users (leer = kein Anlegen) | leer |
|
||||
| `MORZ_INFOBOARD_DEFAULT_TENANT` | Slug des Tenants, dem der Admin zugeordnet wird | `morz` |
|
||||
| `MORZ_INFOBOARD_DEV_MODE` | `true` = Session-Cookie ohne Secure-Flag (nur lokal) | `false` |
|
||||
| `MORZ_INFOBOARD_REGISTER_SECRET` | Pre-Shared-Secret fuer POST /api/v1/screens/register | leer |
|
||||
| `MORZ_INFOBOARD_MQTT_BROKER` | MQTT-Broker-URL (leer = kein MQTT) | leer |
|
||||
| `MORZ_INFOBOARD_MQTT_USERNAME` | MQTT-Benutzername | leer |
|
||||
| `MORZ_INFOBOARD_MQTT_PASSWORD` | MQTT-Passwort | leer |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue