- aether-medical: Stationen/Belegung, Intensivstation, Blutbank, Fuhrpark, Nachrichten/Aushänge, Berichte und Textbausteine (server + NUI) - aether-admin: vollständiges Server-Admin-Panel als echtes FiveM-Resource, an aether-core gekoppelt (Rechte über aether_users.admin_group), mit WebRTC-Live-Kameras (Bildschirmfreigabe) und separatem Media-Server (SFU) - Prototypen admin/ vervollständigt - SQL-Schema aether_admin.sql - Docker-Compose mit MariaDB und idempotenter Auto-Migration (schema_migrations) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.5 KiB
aether-admin
Zentrales Server-Admin-Panel für das Aether-Framework — als echtes
FiveM-Resource, mit Anbindung an aether-core und echten WebRTC-Live-
Kameras über einen separaten Media-Server.
Im Spiel mit F9 öffnen (Command /adminpanel). Zugriff hat nur, wessen
aether_users.admin_group mindestens support ist.
Rechte (Kopplung an aether-core)
Die Gruppe eines Spielers steht in aether_users.admin_group — genau
dort, wo der Core sie ohnehin führt (user < support < admin < owner).
Dieses Modul liest sie und prüft jede Aktion serverseitig gegen die
Rechte-Matrix in shared/config.lua. Die Oberfläche blendet nur aus, was
ohnehin abgelehnt würde — sie ist nie der Torwächter.
Eigene Gruppe setzen:
UPDATE aether_users SET admin_group='owner' WHERE license='DEINE_LIZENZ';
Oder direkt im Panel unter Admin-Team (ab owner).
Datenbank
mysql < sql/aether_admin.sql
Setzt auf aether.sql auf (aus aether-core). Bans nutzen aether_users
mit (is_banned/ban_reason/ban_until) — der Core sperrt darüber schon
beim Connect. Eigene Tabellen: Warns, Bann-Verlauf, Reports, Notizen,
Prüfprotokoll, Ankündigungen, Staatsprojekte, Immobilien, Fraktions-Meta,
Einstellungen.
Bereiche
Dashboard · Weltkarte · Spieler (alle Eingriffe) · Fahrzeuge · Immobilien · Fraktionen (inkl. Payday) · Wirtschaft · Staatsprojekte · Live-Kameras (WebRTC) · Weltsteuerung · Ankündigungen · Bans & Warns · Reports · Ressourcen · Audit-Log · Admin-Team · Einstellungen.
Alles läuft über ein einziges Netz-Event (aether-admin:aufruf), das im
Kern rechtegeprüft an die Fachmodule verteilt. Jede eingreifende Aktion
landet im Prüfprotokoll (aether_admin_log).
Spieler melden aus dem Spiel mit /report <Text> — Tickets erscheinen
im Bereich Reports.
Live-Kameras (WebRTC)
Echtes WebRTC über einen eigenen Media-Server (SFU). Der FiveM-Server routet kein Video: er prüft Rechte, lässt sich vom Media-Server kurzlebige Token ausstellen und weist die Ziel-Clients an, in einen Raum zu senden. Viewer (das Panel) und Publisher (der Ziel-Client, im Hintergrund) sprechen per WebSocket direkt mit dem Media-Server.
Einrichtung und die einzige ehrliche Grenze — die NUI kann das Spielbild
nicht selbst abgreifen, die echte Videoquelle wird extern angeklemmt
(window.__aetherCapture / OBS-Virtual-Cam) — stehen in
media-server/README.md.
Aufbau
shared/config.lua Rechtegruppen, Rechte-Matrix, Sektionen, Media-Config
server/
db.lua auth.lua log.lua kern.lua Basis: DB, Rechte, Protokoll, Dispatcher
kamera.lua WebRTC-Orchestrierung (Token, Publisher-Aufträge)
module/*.lua je Sektion ein Fachmodul
main.lua Netz-Schnittstelle
client/
main.lua Öffnen, Spielaktionen (Teleport/Heal/Spectate/…)
kamera.lua Brücke Server → NUI (Publisher steuern)
html/ Oberfläche + echtes WebRTC (js/webrtc.js)
media-server/ eigenständiger Node-SFU (nicht Teil des Resources)
Status / Tests
Server- und Client-Lua sowie die NUI-Skripte sind syntaktisch geprüft. Der
Media-Server (media-server/server.js) ist syntaktisch geprüft, aber ein
WebRTC-SFU lässt sich nur im laufenden Betrieb wirklich verifizieren —
siehe die Hinweise in media-server/README.md. Ein erster Lauf gegen einen
echten FiveM-Server mit eingespieltem Schema steht noch aus.