Messer-Server für die Seitenwahl: 5v5/2v2, im Admin startbar, setzen sich nach der Runde selbst zurück

This commit is contained in:
mregosar committed 2026-10-29 20:33:15 +01:00
1 parent 0bfac952b6
commit c6c39b914f
15 files changed
+717 -14

No files matched your search

+13 -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 }) {
export function createAdminRouter({ service, manager, config, settings, knife }) {
const router = express.Router();
const sessions = new Map(); // Token -> Ablaufzeit (ms)
const loginLimit = createRateLimiter({ windowMs: 60_000, max: 5 });
@@ -125,6 +125,18 @@ export function createAdminRouter({ service, manager, config, settings }) {
return hostView();
}));
// Messer-Server für die Seitenwahl
router.get('/knife', requireAdmin, wrap(() => ({
servers: knife.list(),
modes: knife.modes(),
maxServers: config.knife.maxServers,
})));
router.post('/knife', requireAdmin, wrap((req) => knife.create({ map: req.body?.map, mode: req.body?.mode })));
router.post('/knife/:id/reset', requireAdmin, wrap((req) => knife.reset(req.params.id)));
router.post('/knife/:id/round', requireAdmin, wrap((req) => knife.startRound(req.params.id)));
router.post('/knife/:id/restart', requireAdmin, wrap((req) => knife.restart(req.params.id)));
router.delete('/knife/:id', requireAdmin, wrap((req) => knife.remove(req.params.id)));
router.get('/notifications', requireAdmin, wrap(() => service.notificationSettings()));
router.put('/notifications', requireAdmin, wrap((req) => service.setNotificationEvents(req.body?.events)));
router.post('/notifications/test', requireAdmin, wrap(async () => {