Map-Pools: Overpass, Vertigo und Cache für Competitive, Map-Auswahl im Admin, Veto-Ablauf passend zur Map-Anzahl

This commit is contained in:
mregosar committed 2026-10-29 21:03:29 +01:00
1 parent e3834bb071
commit 2d65634d6e
13 files changed
+459 -45

No files matched your search

+16 -1
View File
@@ -15,7 +15,7 @@ function bearer(req) {
* (nur im Speicher, verfällt nach 12 Stunden oder beim Neustart). Admin-Aktionen nutzen die bestehenden
* Organisator-Funktionen mit einem Admin-Zugang, die Berechtigungen bleiben also an einer Stelle.
*/
export function createAdminRouter({ service, manager, config, settings, knife }) {
export function createAdminRouter({ service, manager, config, settings, knife, pools }) {
const router = express.Router();
const sessions = new Map(); // Token -> Ablaufzeit (ms)
const loginLimit = createRateLimiter({ windowMs: 60_000, max: 5 });
@@ -125,6 +125,21 @@ export function createAdminRouter({ service, manager, config, settings, knife })
return hostView();
}));
// Map-Pools: welche Maps gespielt werden. Der Veto-Ablauf passt sich der Anzahl an.
const poolView = () => ({
pools: Object.values(pools).map((p) => ({
mode: p.mode,
label: p.label,
maps: p.allMaps.map((m) => ({ ...m, active: p.maps.some((a) => a.id === m.id) })),
formats: p.formats,
})),
});
router.get('/map-pools', requireAdmin, wrap(() => poolView()));
router.put('/map-pools', requireAdmin, wrap((req) => {
settings.saveMapSelection(pools, req.body?.mode, req.body?.maps);
return poolView();
}));
// Messer-Server für die Seitenwahl
router.get('/knife', requireAdmin, wrap(() => ({
servers: knife.list(),