Admin-Modus: Verwaltung aller Matches unter /admin
Anmeldung mit ADMIN_PASSWORD (12 h, Sitzung nur im Speicher, Sperre nach 5 Fehlversuchen pro Minute). Alle Matches mit Codes, Servern, Spielern, Veto und Verlauf. Aktionen: Veto starten bzw. Schritte für beide Teams, Warmup beenden, nächste Map, Server stoppen/neu starten, abschließen, abbrechen, Spieler entfernen, Codes erneuern, Match löschen. Ohne ADMIN_PASSWORD ist der Admin-Modus komplett aus. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
726974fe82
commit
330048acfc
8 files changed
+446
No files matched your search
@@ -86,6 +86,17 @@ export class ServerManager {
|
||||
this.timers.push(setInterval(() => this.reap().catch((e) => this.logger.error(e)), this.config.reaperIntervalSeconds * 1000));
|
||||
}
|
||||
|
||||
/** Löscht ein Match samt Server-Datensatz. Ein laufender Server wird vorher freigegeben. */
|
||||
async deleteMatch(matchId) {
|
||||
this.service.getMatch(matchId);
|
||||
clearTimeout(this.autoAdvance.get(matchId));
|
||||
this.autoAdvance.delete(matchId);
|
||||
this.simulator.stop(matchId);
|
||||
await this.stop(matchId, 'Match vom Admin gelöscht');
|
||||
this.db.prepare('DELETE FROM matches WHERE id = ?').run(matchId);
|
||||
this.service.emit('changed', matchId);
|
||||
}
|
||||
|
||||
/** Wartet, bis keine Server-Aktion mehr läuft (höchstens timeoutMs). */
|
||||
async idle(timeoutMs = 5000) {
|
||||
const deadline = Date.now() + timeoutMs;
|
||||
|
||||
Reference in new issue
Block a user