fix: die Panel-Anbindung steht jetzt dort, wo man sie sucht
Der Betreiber hat sie nicht gefunden, und das zu Recht: die zwei Felder gab es nur auf der Modul-Detailseite unter Module -> Game-Server-Monitor. Der Reiter "Game-Server" hat aber einen eigenen, handgeschriebenen Block mit Status- und Alarm-Kanal -- und genau dort schaut nach, wer den Monitor einrichtet. Also stehen sie jetzt auch dort, direkt unter den Kanaelen, mit dem Absatz, der erklaert wofuer das gut ist. Die Modulseite behaelt sie; es sind dieselben Formularwerte, keine zweite Wahrheit -- genauso wie status_channel_id schon an beiden Stellen steht. Und ins Suchregister (setting-index.js), sonst findet die Suche in der Seitenleiste das Feld nicht und man sucht es mit den Augen. Das Register traegt selbst den Kommentar, dass ein vergessener Eintrag genau so endet. Geprueft, indem die Frontend-Stufe des Images gebaut und im Ergebnis nachgesehen wurde -- "Panel-Adresse", "Panel-Zeichen" und "Panel-Anbindung speichern" stehen im ausgelieferten Bundle. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -101,7 +101,7 @@ auf nichts mehr: keine Posts, keine Hintergrund-Prüfungen.
|
|||||||
| Funktion | Was sie macht |
|
| Funktion | Was sie macht |
|
||||||
|---|---|
|
|---|---|
|
||||||
| 🎮 **Game-Server-Monitor** | DiscordGSM-Stil: pro Server ein Live-Embed (🟢/🔴, Name im Spiel, 🔒 bei Passwort oder Whitelist, Spieler-Balken, Map, Version, Mod-Anzahl, Spieler-Liste, Knöpfe für Verbinden, Mod-Download und frei eintragbare Links wie Regeln oder TeamSpeak, Ping); **alle Spiele, die gamedig kennt** — die Auswahl im Panel kommt aus der Bibliothek selbst, inklusive Standard-Port und Hinweis auf nötige Zugangs-Codes (Farming Simulator, Terraria) — plus FiveM + HTTP-Check; Down/Up-Alerts mit Ausfalldauer |
|
| 🎮 **Game-Server-Monitor** | DiscordGSM-Stil: pro Server ein Live-Embed (🟢/🔴, Name im Spiel, 🔒 bei Passwort oder Whitelist, Spieler-Balken, Map, Version, Mod-Anzahl, Spieler-Liste, Knöpfe für Verbinden, Mod-Download und frei eintragbare Links wie Regeln oder TeamSpeak, Ping); **alle Spiele, die gamedig kennt** — die Auswahl im Panel kommt aus der Bibliothek selbst, inklusive Standard-Port und Hinweis auf nötige Zugangs-Codes (Farming Simulator, Terraria) — plus FiveM + HTTP-Check; Down/Up-Alerts mit Ausfalldauer |
|
||||||
| 🖥️ **Panel-Anbindung** *(optional)* | Trägt der Betreiber unter „Server" die Adresse des [d4rk_gameserver](https://git.d4rkst3r.de/D4rkst3r/d4rk_media)-Panels und ein Lese-Zeichen ein, weiß der Monitor mehr als eine Abfrage hergibt. gamedig **fragt** einen Server — ein startendes Modpack antwortet nicht und sieht dadurch aus wie ein Ausfall (am ATM10 gemessen: 306 Sekunden bis zum ersten Spieler). Das Panel **sieht** den Container: 🟡 „Startet gerade" statt 🔴 „Offline", kein Fehlalarm während des Hochfahrens, kein Alarm für einen im Panel gestoppten Server — aber sehr wohl einer für Absturz, OOM-Kill oder fehlenden Container. Dazu RAM und CPU im Embed. Ohne Eintrag ändert sich nichts, und antwortet das Panel nicht, ebenfalls nicht |
|
| 🖥️ **Panel-Anbindung** *(optional)* | Trägt der Betreiber unter **Config → Game-Server** die Adresse des [d4rk_gameserver](https://git.d4rkst3r.de/D4rkst3r/d4rk_media)-Panels und ein Lese-Zeichen ein, weiß der Monitor mehr als eine Abfrage hergibt. gamedig **fragt** einen Server — ein startendes Modpack antwortet nicht und sieht dadurch aus wie ein Ausfall (am ATM10 gemessen: 306 Sekunden bis zum ersten Spieler). Das Panel **sieht** den Container: 🟡 „Startet gerade" statt 🔴 „Offline", kein Fehlalarm während des Hochfahrens, kein Alarm für einen im Panel gestoppten Server — aber sehr wohl einer für Absturz, OOM-Kill oder fehlenden Container. Dazu RAM und CPU im Embed. Ohne Eintrag ändert sich nichts, und antwortet das Panel nicht, ebenfalls nicht |
|
||||||
| 🚜 **LS — Höfe & Preise** | Für Farming-Simulator-Server: Besitzkarte auf dem Luftbild des Servers (Parzellen nach Hof eingefärbt, Fläche = Hektar, Fahrzeuge und Spieler live), die Preiskurven übers Jahr mit „jetzt verkaufen oder warten", dazu **je Hof ein Embed**, das sich selbst aktualisiert: Land, Fuhrpark mit Wert und Betriebsstunden, was in die Werkstatt muss, was gewaschen gehört und was geladen ist. Dazu die **Modliste**: der Bot meldet, was neu, aktualisiert oder entfernt wurde, und auf `/mods/<server>` steht jeder Mod einzeln zum Laden — durch den Bot hindurch, damit der Zugangs-Code des Spielservers nicht in einem Link landet. **Nicht möglich:** welche Frucht auf welchem Feld steht, und Tierställe — beides gibt der Feed nicht her (siehe [docs/ls-feed.md](docs/ls-feed.md)) |
|
| 🚜 **LS — Höfe & Preise** | Für Farming-Simulator-Server: Besitzkarte auf dem Luftbild des Servers (Parzellen nach Hof eingefärbt, Fläche = Hektar, Fahrzeuge und Spieler live), die Preiskurven übers Jahr mit „jetzt verkaufen oder warten", dazu **je Hof ein Embed**, das sich selbst aktualisiert: Land, Fuhrpark mit Wert und Betriebsstunden, was in die Werkstatt muss, was gewaschen gehört und was geladen ist. Dazu die **Modliste**: der Bot meldet, was neu, aktualisiert oder entfernt wurde, und auf `/mods/<server>` steht jeder Mod einzeln zum Laden — durch den Bot hindurch, damit der Zugangs-Code des Spielservers nicht in einem Link landet. **Nicht möglich:** welche Frucht auf welchem Feld steht, und Tierställe — beides gibt der Feed nicht her (siehe [docs/ls-feed.md](docs/ls-feed.md)) |
|
||||||
|
|
||||||
### Server & Technik
|
### Server & Technik
|
||||||
|
|||||||
@@ -3337,6 +3337,56 @@ export default function Settings({ me }) {
|
|||||||
<button className="btn btn-save" onClick={save}>Kanäle speichern</button>
|
<button className="btn btn-save" onClick={save}>Kanäle speichern</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Die Panel-Anbindung steht HIER und nicht nur auf der
|
||||||
|
Modul-Seite. Wer sie einrichten will, sucht sie bei den
|
||||||
|
Game-Servern -- dort, wo auch die Kanäle stehen. */}
|
||||||
|
<div className="field" data-setting="panel_url">
|
||||||
|
<label>
|
||||||
|
Panel-Anbindung
|
||||||
|
<span className="field-hint">
|
||||||
|
optional — unterscheidet „startet gerade" von „offline"
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<p className="section-intro" style={{ marginTop: 0 }}>
|
||||||
|
Der Monitor <b>fragt</b> einen Server ab. Ein startendes Modpack antwortet
|
||||||
|
nicht und sieht dadurch aus wie ein Ausfall — am ATM10 sind das 306 Sekunden
|
||||||
|
Fehlalarm bei jedem Neustart. Trägst du hier dein{' '}
|
||||||
|
<b>d4rk_gameserver</b>-Panel ein, <b>sieht</b> der Bot den Container: 🟡
|
||||||
|
„Startet gerade" statt 🔴 „Offline", kein Alarm während des Hochfahrens und
|
||||||
|
keiner für einen im Panel gestoppten Server — aber sehr wohl einer für
|
||||||
|
Absturz, vollen Speicher oder fehlenden Container. Dazu RAM und CPU im
|
||||||
|
Embed. Leer lassen heißt: alles bleibt wie bisher.
|
||||||
|
</p>
|
||||||
|
<div className="field-row">
|
||||||
|
<div style={{ flex: 1 }}>
|
||||||
|
<label>Panel-Adresse</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
placeholder="https://panel.d4rkst3r.de"
|
||||||
|
value={form.panel_url ?? ''}
|
||||||
|
onChange={(e) => setForm({ ...form, panel_url: e.target.value })}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div style={{ flex: 1 }} data-setting="panel_zeichen">
|
||||||
|
<label>
|
||||||
|
Panel-Zeichen{' '}
|
||||||
|
<span className="field-hint">
|
||||||
|
im Panel unter „Zugang für Programme" anlegen — darf nur lesen
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
placeholder="d4rkp_…"
|
||||||
|
value={form.panel_zeichen ?? ''}
|
||||||
|
onChange={(e) => setForm({ ...form, panel_zeichen: e.target.value })}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="settings-actions" style={{ marginBottom: '1.4rem' }}>
|
||||||
|
<button className="btn btn-save" onClick={save}>Panel-Anbindung speichern</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
{servers.length > 0 && (
|
{servers.length > 0 && (
|
||||||
<div className="key-list" style={{ marginBottom: '1.2rem' }}>
|
<div className="key-list" style={{ marginBottom: '1.2rem' }}>
|
||||||
{servers.map((s) => (
|
{servers.map((s) => (
|
||||||
|
|||||||
@@ -33,6 +33,11 @@ export const SETTING_INDEX = [
|
|||||||
{ id: 'backup_channel_id', tab: 'system', label: 'Backup-Kanal', find: 'sicherung upload' },
|
{ id: 'backup_channel_id', tab: 'system', label: 'Backup-Kanal', find: 'sicherung upload' },
|
||||||
{ id: 'status_channel_id', tab: 'server', label: 'Server-Status-Kanal', find: 'monitor game embed' },
|
{ id: 'status_channel_id', tab: 'server', label: 'Server-Status-Kanal', find: 'monitor game embed' },
|
||||||
{ id: 'server_alert_channel_id', target: 'status_channel_id', tab: 'server', label: 'Alarm-Kanal', find: 'down ausfall alert' },
|
{ id: 'server_alert_channel_id', target: 'status_channel_id', tab: 'server', label: 'Alarm-Kanal', find: 'down ausfall alert' },
|
||||||
|
// Ohne diese zwei Zeilen findet die Suche das Feld nicht, und dann sucht
|
||||||
|
// man es im Reiter "Game-Server" mit den Augen -- genau so ist es dem
|
||||||
|
// Betreiber ergangen.
|
||||||
|
{ id: 'panel_url', tab: 'server', label: 'Panel-Adresse', find: 'gameserver panel d4rk_gameserver startet gerade container docker' },
|
||||||
|
{ id: 'panel_zeichen', tab: 'server', label: 'Panel-Zeichen', find: 'panel token bearer zugang programme schluessel' },
|
||||||
|
|
||||||
/* ── Rollen ─────────────────────────────────────── */
|
/* ── Rollen ─────────────────────────────────────── */
|
||||||
{ id: 'devlog_ping_role_id', tab: 'feeds', label: 'Devlog-Ping-Rolle', find: 'benachrichtigung abo erwähnen' },
|
{ id: 'devlog_ping_role_id', tab: 'feeds', label: 'Devlog-Ping-Rolle', find: 'benachrichtigung abo erwähnen' },
|
||||||
|
|||||||
Reference in New Issue
Block a user