Modul-Felder speichern wieder, und die Feed-Adresse ist einstellbar
Die LS-Kanaele liessen sich im Panel waehlen und waren nach dem Speichern wieder leer. Der Grund: PUT /api/settings fuehrt fuer jede Feldart eine von Hand gepflegte Liste erlaubter Schluessel, und ein Schluessel, der nirgends steht, faellt still durch. Keine Fehlermeldung, kein Log — das Feld sieht funktionsfaehig aus und vergisst. Das ist keine Einzelheit, sondern eine Falle fuer jedes kuenftige Modul: wer eins ergaenzt und diese Listen nicht mitpflegt, baut denselben Fehler nach. Die Modulliste weiss laengst, welche Felder es gibt und welcher Art sie sind — also holt der Handler sie jetzt von dort, statt sie ein zweites Mal aufzuzaehlen. Beim Bauen des Helfers ware ich fast in die naechste Falle gelaufen: ich hatte alle requires-Eintraege als Kanaele eingestuft. Dort stehen aber auch gitea_api_token und watchdog_urls, und die haetten dann die Kanal-Pruefung durchlaufen — Speichern waere mit "Kanal nicht gefunden" gescheitert, sobald jemand seinen Gitea-Token aendert. Uebernommen wird jetzt nur, was der Namenskonvention folgt. Dazu die fest verdrahtete Feed-Adresse. http://host:port/feed war eine Wette auf drei Annahmen gleichzeitig: dass jeder Hoster http nimmt, den Feed unter /feed ablegt und keinen Pfad davorsetzt. Aendern konnte das niemand. Jetzt gibt es ein Feld dafuer, und wer die ganze Abfrage-URL ins Host-Feld einfuegt, bekommt es mitsamt Schema und Pfad automatisch ausgefuellt. Was dahinter kommt (dedicated-server-stats.xml und Geschwister) gibt Giants vor und bleibt im Code. Geprueft: jedes Feld jedes Moduls landet in einem Eimer — der Test faellt kuenftig aus, sobald jemand ein Feld ergaenzt, das nicht speicherbar waere. Dazu, dass nichts faelschlich in die Kanal- oder Rollenpruefung geraet, keine Dubletten, und die Feed-Basis mit eigenem Pfad, https, ueberzaehligen Schraegstrichen sowie sechs Sorten Unbrauchbarem. Das Einfuegen einer https-URL mit Pfad im laufenden Panel angesehen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+14
-2
@@ -361,8 +361,20 @@ export function preisEmbed(client, preise, { jetzt = null, anzahl = 12, sorten =
|
||||
|
||||
// ── Abrufen und Posten ────────────────────────────────────────────────────
|
||||
|
||||
/** Basis-URL eines LS-Servers aus dem Monitor-Eintrag */
|
||||
function feedBasis(server) {
|
||||
/**
|
||||
* Wohin die Abfragen gehen.
|
||||
*
|
||||
* Bevorzugt die eingetragene Feed-Adresse, sonst aus Host und Port gebaut.
|
||||
* Fest verdrahtet war das eine Wette darauf, dass jeder Hoster `http` nimmt,
|
||||
* den Feed unter `/feed` ablegt und keinen Pfad davor hat — drei Annahmen,
|
||||
* von denen jede einzeln schiefgehen kann und die niemand ändern konnte.
|
||||
*
|
||||
* Was hinten dran hängt (`/dedicated-server-stats.xml` und Geschwister), ist
|
||||
* dagegen von Giants vorgegeben und bleibt im Code.
|
||||
*/
|
||||
export function feedBasis(server) {
|
||||
const eigene = String(server.query_url ?? '').trim();
|
||||
if (/^https?:\/\/.+/i.test(eigene)) return eigene.replace(/\/+$/, '');
|
||||
const port = server.port || 8080;
|
||||
return `http://${server.host}:${port}/feed`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user