Backend: Match-Lobbys, Map-Veto, Echtzeit und CS2-Serveradapter
Express + Socket.IO + SQLite. Veto-Engine mit konfigurierbaren Map-Pools und validierten Abläufen, rollenbasierte Berechtigungen, Server-Lebenszyklus mit Demo-, Docker- und Static-Pool-Adapter (RCON), automatisches Herunterfahren. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
104aa1a67b
27 files changed
+6355
No files matched your search
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* Schnittstelle für die CS2-Serververwaltung.
|
||||
*
|
||||
* Jeder Adapter implementiert genau diese vier Operationen. Der ServerManager ruft sie auf;
|
||||
* Routen und Frontend kennen nur den ServerManager.
|
||||
*
|
||||
* start({ matchId, mode, secrets })
|
||||
* -> { handle, host, port, tvPort }
|
||||
* Startet (oder reserviert) einen Server. handle ist ein beliebiges JSON-Objekt,
|
||||
* das ausschließlich im Backend gespeichert wird (z. B. Containername, RCON-Ziel).
|
||||
* secrets = { rconPassword, serverPassword, tvPassword } werden vom Manager erzeugt.
|
||||
*
|
||||
* status(handle)
|
||||
* -> { state: 'starting' | 'running' | 'stopped' | 'failed', message?, playerCount?, map? }
|
||||
*
|
||||
* configure(handle, { map, beforeMapChange, afterMapChange, commands })
|
||||
* -> void Wirft einen Fehler mit verständlicher Meldung, wenn die Konfiguration scheitert.
|
||||
*
|
||||
* stop(handle)
|
||||
* -> void Darf mehrfach aufgerufen werden.
|
||||
*
|
||||
* Optional:
|
||||
* sendCommands(handle, commands) -> string[] für Aktionen wie mp_warmup_end.
|
||||
*
|
||||
* Eigenschaften:
|
||||
* name Kurzname des Adapters
|
||||
* simulated true, wenn kein echter Server existiert. Das Frontend zeigt dann niemals
|
||||
* "läuft" an, sondern kennzeichnet alles als Demo.
|
||||
*/
|
||||
|
||||
import { DemoServerAdapter } from './demoAdapter.js';
|
||||
import { DockerServerAdapter } from './dockerAdapter.js';
|
||||
import { StaticPoolServerAdapter } from './staticPoolAdapter.js';
|
||||
|
||||
export function createServerAdapter(config, deps) {
|
||||
switch (config.serverAdapter) {
|
||||
case 'demo':
|
||||
return new DemoServerAdapter(config.demo);
|
||||
case 'docker':
|
||||
return new DockerServerAdapter(config.docker, deps);
|
||||
case 'static':
|
||||
return new StaticPoolServerAdapter(config.staticPool, deps);
|
||||
default:
|
||||
throw new Error(`Unbekannter SERVER_ADAPTER "${config.serverAdapter}" (erlaubt: demo, docker, static)`);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user