aether-framework/resources/[aether]/aether-admin
Jerrit Fritzsche 32879ac07b aether-admin: Netzwerk-Race beim Join beheben
Die Client-Threads (Positions-Meldung, Wetter/Zeit) liefen ab Resource-
Start ungebremst — also schon während Ladebildschirm/Charakterauswahl,
bevor der Spieler gespawnt ist. Zusammen mit den Server-Events der
Character-NUI (eigener Thread) führte das zu gleichzeitigen Netz-Sends:
"SendNetPacket called from multiple threads" -> Client-Crash.

Fix: Nichts Vernetztes vor 'aether:client:bereit' (Spieler geladen).
Weltzustand wird beim Spawn einmalig angewandt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 19:36:38 +02:00
..
client aether-admin: Netzwerk-Race beim Join beheben 2026-07-27 19:36:38 +02:00
html Aether-Framework: Fachmodule, Admin-Panel und Docker-Datenbank 2026-07-27 18:55:32 +02:00
media-server Aether-Framework: Fachmodule, Admin-Panel und Docker-Datenbank 2026-07-27 18:55:32 +02:00
server Aether-Framework: Fachmodule, Admin-Panel und Docker-Datenbank 2026-07-27 18:55:32 +02:00
shared Aether-Framework: Fachmodule, Admin-Panel und Docker-Datenbank 2026-07-27 18:55:32 +02:00
fxmanifest.lua Aether-Framework: Fachmodule, Admin-Panel und Docker-Datenbank 2026-07-27 18:55:32 +02:00
README.md Aether-Framework: Fachmodule, Admin-Panel und Docker-Datenbank 2026-07-27 18:55:32 +02:00

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.