Auf Filipes Wunsch: dogfather-universe.com/workspace/ soll nicht mehr existieren, er gibt den neuen Link selbst an Creator und Scouts weiter. Vorher stand dort eine Weiterleitung - die haette die alte Adresse auf unbestimmte Zeit am Leben gehalten. Der Server antwortet dort jetzt mit 410 Gone. Beides - 404 und 410 - heisst "gibt es hier nicht"; 410 sagt zusaetzlich "gab es, ist absichtlich weg, kommt nicht wieder". Genau der Sachverhalt. Suchmaschinen nehmen die Adresse dadurch schneller heraus, und in einem Protokoll ist ein 410 sofort als gewollt erkennbar, waehrend ein 404 immer nach Versehen aussieht. Statt einer nackten Fehlermeldung kommt eine kurze Hinweisseite mit der neuen Adresse. Wer hier landet, hat einen alten Link oder eine alte Verknuepfung und soll erfahren, wohin der Workspace gezogen ist, statt vor einem leeren Fenster zu sitzen. Bewusst OHNE Verweis zum Anklicken, damit niemand aus Versehen ein neues Lesezeichen auf den alten Weg setzt. Schnittstellen-Aufrufe unter /workspace/api/ bekommen JSON statt HTML - ein alter, noch offener Browser-Tab wuerde sonst die Hinweisseite als Daten zu lesen versuchen und einen unverstaendlichen Fehler zeigen. Die Pruefung deckt weiterhin 21 Faelle ab und ist mitgezogen: Der gefaehrlichste Fall heisst jetzt nicht mehr "Endlosschleife", sondern "die neue Adresse mit abschalten" - wer nicht auf den Hostnamen prueft, sperrt den Workspace fuer alle aus. Alle gruen, Gegenprobe schlaegt an. Diesmal vor dem Commit den Diff Datei fuer Datei kontrolliert - beim letzten Mal hatte ich hier eine fremde uncommittete Zeile mitgenommen und damit die Website fuer zwei Minuten abgeschossen. Co-Authored-By: Claude Opus 5 <[email protected]>
88 lines
4.9 KiB
JavaScript
88 lines
4.9 KiB
JavaScript
/* =====================================================================
|
|
Prüft, WELCHE Anfragen der abgeschalteten alten Workspace-Adresse
|
|
zugeordnet werden.
|
|
|
|
Zwei Fehler waeren hier teuer, und beide sieht man einer Bedingung
|
|
nicht an:
|
|
|
|
1. DIE NEUE ADRESSE MIT ABSCHALTEN. Derselbe Dienst bedient die alte
|
|
UND die neue Adresse. Wer nicht auf den Hostnamen prueft, sperrt
|
|
den Workspace fuer alle aus -- sofort nach dem Neustart und ohne
|
|
dass es vorher irgendwo auffaellt.
|
|
|
|
2. PRAEFIX-IRRTUM. "faengt an mit /workspace" trifft auch
|
|
/workspaceXYZ oder /workspace-alt -- Pfade, die nicht zum
|
|
Workspace gehoeren.
|
|
|
|
Geprueft wird die ECHTE Funktion aus workspace-umzug.js, nicht eine
|
|
Kopie der Bedingung -- eine Kopie wuerde beim naechsten Umbau
|
|
auseinanderlaufen und dann etwas anderes bestaetigen als das, was
|
|
wirklich laeuft.
|
|
|
|
Aufruf: node server/pruef-workspace-umzug.mjs
|
|
===================================================================== */
|
|
import { istAlteWorkspaceAdresse, NEUE_ADRESSE } from "./workspace-umzug.js";
|
|
|
|
/* [Host, Pfad, erwartet, Begruendung] */
|
|
const FAELLE = [
|
|
// --- muss abgeschaltet sein (410 Gone) ---
|
|
["dogfather-universe.com", "/workspace/", true, "alte Adresse, Startseite"],
|
|
["dogfather-universe.com", "/workspace", true, "alte Adresse, ohne Schraegstrich"],
|
|
["dogfather-universe.com", "/workspace/start.html", true, "alte Adresse, Unterseite"],
|
|
["dogfather-universe.com", "/workspace/api/aufgaben", true, "alte Adresse, Schnittstelle"],
|
|
["www.dogfather-universe.com", "/workspace/", true, "auch mit www"],
|
|
["DOGFATHER-UNIVERSE.COM", "/workspace/", true, "Grossschreibung darf egal sein"],
|
|
["dogfather-universe.com:443", "/workspace/", true, "Portangabe darf egal sein"],
|
|
|
|
// --- darf NIEMALS abgeschaltet werden: das ist der neue Ort ---
|
|
["workspace.dogfather-universe.com", "/workspace/", false, "NEUE Adresse -- darf NIE abgeschaltet werden"],
|
|
["workspace.dogfather-universe.com", "/workspace/start.html", false, "NEUE Adresse, Unterseite"],
|
|
["workspace.dogfather-universe.com", "/workspace/api/aufgaben", false, "NEUE Adresse, Schnittstelle"],
|
|
|
|
// --- darf nicht betroffen sein: gehoert nicht zum Workspace ---
|
|
["dogfather-universe.com", "/", false, "Hauptseite"],
|
|
["dogfather-universe.com", "/index.html", false, "Hauptseite"],
|
|
["dogfather-universe.com", "/webdesign/", false, "anderer Bereich"],
|
|
["dogfather-universe.com", "/workspaceXYZ", false, "PRAEFIX-IRRTUM: gehoert nicht dazu"],
|
|
["dogfather-universe.com", "/workspace-alt/seite", false, "PRAEFIX-IRRTUM mit Bindestrich"],
|
|
["dogfather-universe.com", "/assets/css/main.css", false, "gemeinsame Datei"],
|
|
|
|
// --- darf nicht betroffen sein: lokale Tests wuerden sonst scheitern ---
|
|
["127.0.0.1:4100", "/workspace/", false, "lokaler Testserver"],
|
|
["localhost:4100", "/workspace/start.html", false, "lokaler Testserver"],
|
|
|
|
// --- Sonderfaelle ---
|
|
["", "/workspace/", false, "kein Host-Feld"],
|
|
["boese.example.com", "/workspace/", false, "fremder Host"],
|
|
];
|
|
|
|
let geprueft = 0;
|
|
const fehler = [];
|
|
for (const [host, pfad, erwartet, grund] of FAELLE) {
|
|
const ist = istAlteWorkspaceAdresse(host, pfad);
|
|
geprueft++;
|
|
if (ist !== erwartet) {
|
|
fehler.push(`${host || "(leer)"}${pfad} -> ${ist ? "abgeschaltet" : "erreichbar"}, erwartet ${erwartet ? "abgeschaltet" : "erreichbar"} (${grund})`);
|
|
}
|
|
}
|
|
|
|
/* Gegenprobe: Kann diese Pruefung ueberhaupt "nein" sagen? Ein Fall, von
|
|
dem wir wissen, dass er falsch ist, MUSS auffallen. */
|
|
const gegenprobe = istAlteWorkspaceAdresse("dogfather-universe.com", "/workspace/") === true
|
|
&& istAlteWorkspaceAdresse("workspace.dogfather-universe.com", "/workspace/") === false;
|
|
|
|
/* Und die genannte neue Adresse muss stimmen -- sie steht auf der
|
|
Hinweisseite, die abgemeldete Nutzer zu sehen bekommen. */
|
|
const zielStimmt = NEUE_ADRESSE === "https://workspace.dogfather-universe.com";
|
|
geprueft++;
|
|
if (!zielStimmt) fehler.push(`Ziel ist "${NEUE_ADRESSE}", erwartet https://workspace.dogfather-universe.com`);
|
|
|
|
const SOLL = FAELLE.length + 1;
|
|
console.log(`${geprueft} Faelle geprueft (erwartet ${SOLL}), ${fehler.length} Beanstandungen.`);
|
|
console.log(`Gegenprobe (alt abgeschaltet, neu erreichbar): ${gegenprobe ? "ja" : "NEIN"}`);
|
|
for (const f of fehler) console.log(" FEHL " + f);
|
|
|
|
if (geprueft !== SOLL) { console.log("FEHL: Anzahl stimmt nicht."); process.exit(1); }
|
|
if (!gegenprobe) { console.log("FEHL: Gegenprobe schlaegt nicht an -- die Pruefung waere wertlos."); process.exit(1); }
|
|
process.exit(fehler.length === 0 ? 0 : 1);
|