scopedvr-map-editor/docs/server-sektion.md
2026-11-01 19:34:05 +01:00

51 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Server-Sektion (Tab „Server“)
Der Editor ist ein Client der Match-Server-Admin-API (`docs/admin-api.md` im
Repo scopedvr-match-server). Damit verwaltet jeder seinen eigenen Server – ohne
Konsole, ohne Tailscale, auf jedem Betriebssystem.
## Einrichten
1. Auf dem Server in der `server.cfg` `[admin] enabled=true` setzen und starten.
Das Token steht danach in der `state_file` des Servers (Standard `admin.cfg`).
2. Editor → Tab **Server** → **➕ Neu**: Name, Adresse, Port (Standard 24580), Token.
„🔌 Verbindung testen“ prüft Erreichbarkeit und Token.
3. **🔌 Verbinden**.
**Sicher erreichen:** Die Admin-API spricht Klartext-HTTP und hört standardmäßig nur
auf localhost. Entweder SSH-Tunnel (`ssh -L 24580:127.0.0.1:24580 benutzer@server`,
im Editor dann Adresse `127.0.0.1`) oder ein Reverse-Proxy mit https (Haken
„Sichere Verbindung“).
## Funktionen
- Mehrere Server speichern; **Token verschlüsselt** (Schlüssel aus Rechner-ID +
Nutzerordner), nie im Klartext in Datei oder Log. Schutz gegen Zufallsleser, nicht
gegen Schadsoftware auf deinem Benutzerkonto.
- **Übersicht:** Name, Map, Modus, Phase, Spieler/Bots, Laufzeit, öffentlich/privat.
- **⬆ Aktuelle Map hochladen:** prüft und signiert die Map im Editor (wie Speichern),
lädt sie hoch, der Server prüft noch einmal. Ungültige Maps werden gar nicht erst
gesendet; 422-Fehler erscheinen als verständliche Liste mit Hilfetexten.
Existiert der Name schon, fragt der Editor, ob ersetzt werden soll. Optional:
direkt in die Rotation aufnehmen.
- **Einstellungen:** Formular direkt aus der Server-Spec; gesendet werden nur
geänderte Werte. Die Antwort zeigt je Wert: sofort / ab nächster Map / nach
Neustart. „↩ Zurücksetzen“ verwirft Änderungen.
- **Spieler:** Kick, Sperren (10 min … dauerhaft), Sperrliste mit „Aufheben“.
- **Match & Maps:** Match neu starten, Map jetzt laden, Rotation per Häkchen,
hochgeladene Maps löschen. Alles Zerstörerische fragt vorher nach.
- **⏻ Server neu starten:** fragt nach, trennt alle Spieler, zeigt „Server startet neu…“
und verbindet sich wieder, sobald der neue Prozess antwortet (bis 120 s). Der Server
beendet sich dafür mit Exit-Code 75; neu starten muss ihn Docker (Restart-Policy),
systemd oder `tools/start_server.*` (`docs/admin-api.md` im Server-Repo).
- **Bot-Anzahl** geht bis 32, die Grenze kommt vom Server. Reicht die Teamgröße nicht
(2 × Teamgröße = Platz für Bots), zeigt das Speichern eine Warnung mit der nötigen Größe.
- **Server-Log** mit Filter.
## Code
`core/server/` (AdminClient, ServerStore, AdminTexte, MapPush),
`core/ui/panels/server_panel.gd`, `SvmapIO.to_signed_text`.
## Tests
`tests/test_server_sektion.gd` (Unit), `tests/run_server_sektion_e2e.sh`
(echter Match-Server + echtes Panel: Verbinden, falsches Token, unerreichbar,
Einstellungen, Push gültig/doppelt/ersetzen/lokal ungültig/422, Rotation,
Map laden/löschen, Restart, Kick, Logs, 20 Bots, Server-Neustart).