aether-framework/resources/[aether]/aether-admin/README.md
Jerrit Fritzsche e4b82dd685 Aether-Framework: Fachmodule, Admin-Panel und Docker-Datenbank
- 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>
2026-07-27 18:55:32 +02:00

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.