Admin-Panel (/admin): Auth, Spieler-Tracking, Live-Tuning, Bild-Verwaltung
- Passwortgeschütztes Panel unter /admin (Auto-Passwort 20 Zeichen, per CLI abrufbar: `node server/admin.js password` / `password reset`), In-Memory-Sessions + Cookie, Login-Rate-Limit. - Spieler-Tracking: pro Score IP (CF/XFF/req.ip), Gerät/Browser (ua-parser-js), grober Ort (geoip-lite, offline) -> data/players.json; Aggregation pro Name. - Live-Tuning: configStore (data/config.json) für Timer + Schwierigkeitskurve; Server (makeRound) und Client (/api/config) lesen daraus -> Änderungen ohne Neustart. - Bild-Verwaltung: Upload/Löschen von Füßen & Deko (multer) + rescanLibrary(). - Panel-Aktionen: Spieler bannen/entbannen, Rangliste heute/alles leeren. - Fix: .item object-fit:contain -> nicht-quadratische Bilder werden nicht mehr verzerrt. - trust proxy für korrekte Client-IP hinter Reverse-Proxy/Cloudflare. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
22
README.md
22
README.md
@@ -82,6 +82,10 @@ node server/admin.js bans # gebannte Namen anzeigen
|
||||
node server/admin.js mode # aktuellen Modus anzeigen
|
||||
node server/admin.js mode public # Spiel öffentlich unter "/"
|
||||
node server/admin.js mode private geheim # "/" gesperrt, Spiel nur unter "/geheim"
|
||||
|
||||
# Admin-Panel-Passwort
|
||||
node server/admin.js password # Passwort anzeigen (Login unter /admin)
|
||||
node server/admin.js password reset # neues Passwort erzeugen
|
||||
```
|
||||
|
||||
(Kurzform via npm: `npm run lb -- <befehl>`.)
|
||||
@@ -90,6 +94,24 @@ node server/admin.js mode private geheim # "/" gesperrt, Spiel nur unter "/geh
|
||||
- **private**: `/` zeigt „You are not allowed to play", das Spiel läuft nur unter dem
|
||||
gewählten Pfad (`/<pfad>`) — praktisch zum Testen im Live-Betrieb.
|
||||
|
||||
## Admin-Panel (`/admin`)
|
||||
|
||||
Passwortgeschütztes Web-Panel. Passwort wird beim ersten Start automatisch generiert
|
||||
(20 Zeichen) und liegt in `data/admin.json` — anzeigen mit `node server/admin.js password`.
|
||||
|
||||
Funktionen:
|
||||
- **Spieler**: approximative Zuordnung (IP, grober Ort via `geoip-lite` offline, Gerät, Browser)
|
||||
aus den Spiel-Logs; einzelne Spieler direkt **bannen/entbannen**.
|
||||
- **Einstellungen**: Timer (Start/Max/Bonus/Strafe) **und** Schwierigkeitskurve (Objekt-Anzahl,
|
||||
Stufen, Tempo) **live** einstellen — wirkt sofort beim nächsten Spielstart.
|
||||
- **Bilder**: Füße & Deko **hochladen/löschen** (kein Neustart). Empfehlung: **quadratische**
|
||||
Bilder, 256×256 oder 512×512 PNG (transparent) bzw. SVG mit quadratischem `viewBox`;
|
||||
nicht-quadratische werden per `object-fit: contain` eingepasst statt verzerrt.
|
||||
- **Rangliste**: heute/alles zurücksetzen.
|
||||
|
||||
> Datenschutz: IP + grober Ort + Gerät/Browser sind personenbezogen (nur für Moderation).
|
||||
> Für den öffentlichen Betrieb einen kurzen Datenschutz-Hinweis ergänzen.
|
||||
|
||||
## Deployment (Ausblick)
|
||||
|
||||
Normaler Node-Server. Auf einen Node-Host bringen (VPS/LXC/Railway/Render), `./install.sh`,
|
||||
|
||||
Reference in New Issue
Block a user