Das Farbhaus von Team Dogi lag oeffentlich im Netz
Ausgeloest von pruef-modi-wortleck, die seit Tagen rot war: "24
Fundstellen -- der verborgene Zugang waere damit auffindbar." Die
erste Frage war, ob sie recht hat. Gemessen: ja, und schlimmer als
gedacht.
WER DIESE DATEIEN BEKOMMT: Nicht nur Kollegen. `curl` ohne jeden Keks
auf workspace.dogfather-universe.com liefert die Skripte und
Stilvorlagen des Arbeitsplatzes mit HTTP 200 -- fuer jeden im Netz
lesbar.
DARUNTER crew-haus.css, 27 806 Byte, das ganze Farbhaus von Team Dogi
samt seiner Kommentare. In deren Kopf stand seit dem 10.09. woertlich
"Diese Datei wird NUR auf crew.dogfather-universe.com ausgeliefert."
Das war eine Behauptung, keine Tatsache: Die Weiche biegt `haus.css`
auf diesen Namen um, wer den Namen direkt nannte, ging an ihr vorbei.
Ein Kommentar, der eine Absicht beschreibt, erfuellt sie nicht.
Zwei Stellen im Haus haben sich damit widersprochen -- die Datei sagte
"nur auf crew.", pruef-crew-adresse verlangte ausdruecklich das
Gegenteil ("sie ist kein Geheimnis"). Durchgesetzt war die offene
Fassung. Filipe hat am 21.09. entschieden: zusperren. Die alte
Begruendung dagegen war die Sorge, eine Sperre koenne die Pruefung
blind machen -- die ist jetzt beantwortet statt vermieden: Jeder
Eintrag der Tafel wird in BEIDE Richtungen gemessen, und dass die
Umbiegung von `haus.css` auf crew. weiterhin greift, ebenfalls.
DIE ADRESSE WAR DAS EIGENTLICHE GEHEIMNIS, nicht das Wort. Die
Rollennamen stehen auf der Zugangswand von Team Dogi ohnehin offen --
so gewollt. WO sie liegt, stand dagegen im Klartext in gate.css,
gate.js und crew-haus.css, alle drei oeffentlich abrufbar. Jetzt steht
sie in keiner ausgelieferten Datei mehr.
DIE PRUEFUNG SELBST HATTE DREI MAENGEL:
1. Sie kannte die Mehrzahl nicht. `\bmodi\b` fand "ein Modi", nicht
"die Modis" -- 23 weitere Stellen, darunter der Satz "Fuer die
rechte Hand und die Modis gibt es dort den stillen Zugang". Also
genau die Auskunft, die sie verhindern soll, in der Form, die sie
nicht sah.
2. Ihre Ausnahmeliste war abgeschrieben. Sie nannte eine Datei; die
zweite, die der Server auf crew. begrenzt, haette sie nie
erfahren. Ausgenommen ist jetzt genau das, was der Server auch
durchsetzt (GEHOERT_ZU_ADRESSE) -- kein Muster, sondern die
Durchsetzung selbst.
3. Sie mahnte 45 Kommentare an. Filipes Entscheidung: in Kommentaren
ja, in Code und sichtbaren Texten nein. Rot, das immer da ist,
wird ueberlesen -- und dann faengt sie auch den echten Fall nicht.
Dafuer neu: helfer-ohne-kommentar.mjs, ein Zerleger, der Kommentare
zeichengenau durch Leerzeichen ersetzt, ohne Zeichenketten,
Vorlagen oder Suchmuster zu beschaedigen. KEIN Suchausdruck -- genau
daran ist am 20.09. die Portumstellung gescheitert, mit gueltigem
JavaScript ohne das Feld `port`. Dreizehn Proben in beide Richtungen
beweisen, dass er weder zu viel noch zu wenig wegnimmt; ein Zerleger,
der zu viel nimmt, macht die ganze Pruefung STILL gruen.
Von 45 blieben damit drei echte, alle behoben:
- daten.modis -> daten.leute (Feldname in der Auskunft, also Code)
- zwei Saetze, die Menschen lesen, auf "die Moderation" umgestellt --
fuer jemanden, der neu im Treff ist, sogar klarer
Nebenbei, beim selben Durchgang gefunden und geschlossen:
- teamlage.js fiel auf einen Rollennamen zurueck. Nachgemessen: Die
Stilvorlage kennt zu dieser Karte gar keine solche Regel -- der
Rueckfall hat nie etwas bewirkt und nur das Wort ausgeliefert.
- werdegang.js fuehrte die Saetze ueber den Rollengruppen selbst,
mit den Rollennamen als Schluessel. Der Kommentar daneben
behauptete sogar, sie seien "abgeleitet, nicht abgeschrieben".
Sie kommen jetzt vom Server, und pruef-werdegang misst, dass
jede Gruppe ihren eigenen behaelt.
pruef-modi-wortleck 8/0 (war 5, davon 1 rot)
pruef-crew-adresse 144/0 (war 135)
pruef-werdegang 98 statt 95 Pruefungen, dieselben 3 alten Fehler
pruef-team-ampel 32/0, pruef-team-stufen 28/0, pruef-hilfe 84/0
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
+40
-6
@@ -214,12 +214,46 @@ export function istWorkspacePfad(pfad) {
|
||||
die jede Wand im Browser ansehen, keine mehr oeffnen -- sie blieben
|
||||
gruen und wuerden nichts mehr messen. Ein gruener Lauf, der nichts
|
||||
mehr prueft, ist schlimmer als ein roter. */
|
||||
/* EINE benannte Wand, seit der Treff keine eigene mehr hat. Die Tafel
|
||||
bleibt trotzdem eine Tafel und wird nicht wieder zum Sonderfall: Sie
|
||||
ist der Ort, an dem die naechste Wand eingetragen wird, ohne dass
|
||||
jemand drei Bedingungen umbauen muss. */
|
||||
const BENANNTE_WAENDE = [
|
||||
/* Die Tafel bleibt eine Tafel und wird nicht wieder zum Sonderfall:
|
||||
Sie ist der Ort, an dem der naechste Eintrag dazukommt, ohne dass
|
||||
jemand drei Bedingungen umbauen muss.
|
||||
|
||||
---------------------------------------------------------------------
|
||||
SEIT DEM 21.09.2026 STEHT HIER AUCH EINE STILVORLAGE
|
||||
|
||||
Im Kopf von crew-haus.css stand seit dem 10.09.: "Diese Datei wird
|
||||
NUR auf crew.dogfather-universe.com ausgeliefert." Nachgemessen war
|
||||
das falsch -- 27 806 Byte, HTTP 200, von der Agenturadresse, OHNE
|
||||
Anmeldung. Die Weiche biegt `haus.css` auf diesen Namen um; wer den
|
||||
Namen direkt nennt, kam an der Weiche vorbei.
|
||||
|
||||
Es war also wieder derselbe Befund: Ein Kommentar, der eine Absicht
|
||||
beschreibt, erfuellt sie nicht. Und es war dieselbe Luecke wie bei
|
||||
der Zugangswand am 10.09. -- express.static liefert jede Datei aus,
|
||||
die man beim Namen nennt.
|
||||
|
||||
WAS DARIN STAND: das ganze Farbhaus von Team Dogi, mit seinen
|
||||
Kommentaren -- darunter zweimal die Crew-Adresse im Klartext. Die
|
||||
Adresse ist das eigentlich Verborgene; die Rollennamen stehen auf
|
||||
der Zugangswand dort ohnehin offen (so gewollt: "3 rollen.
|
||||
dogfather. rechte hand und modis"). Wer die Adresse hat, sieht sie.
|
||||
Wer sie nicht hat, sollte sie nicht aus einer Stilvorlage der
|
||||
Agenturseite erfahren.
|
||||
|
||||
DIE INTERNE UMBIEGUNG BLEIBT UNBERUEHRT, und das ist der Grund,
|
||||
warum dieser Eintrag ueberhaupt funktioniert: Diese Tafel wird in
|
||||
crewWeiche() ganz oben gefragt (Zeile ~323), die Umbiegung von
|
||||
`haus.css` passiert weiter unten (~454). Auf crew. wird also nach
|
||||
wie vor umgebogen -- dort ist die Datei zuhause --, und auf der
|
||||
Agenturadresse gibt es sie beim Namen nicht mehr.
|
||||
|
||||
Nachgeprueft in pruef-crew-adresse: einmal, dass sie auf crew.
|
||||
ankommt, und einmal, dass die Agenturadresse 404 sagt. Ohne die
|
||||
zweite Haelfte waere der Eintrag eine Behauptung wie die, die er
|
||||
ersetzt. */
|
||||
export const GEHOERT_ZU_ADRESSE = [
|
||||
{ datei: "/workspace/crew-index.html", zuhause: istCrewAdresse },
|
||||
{ datei: "/workspace/assets/css/crew-haus.css", zuhause: istCrewAdresse },
|
||||
];
|
||||
|
||||
/** Wird hier eine Wand verlangt, die zu einer ANDEREN Tuer gehoert? */
|
||||
@@ -229,7 +263,7 @@ export function istFremdeWand(hostKopfzeile, pfad) {
|
||||
zieht sie danach selbst zusammen und liefert die Datei aus. Genau
|
||||
daran ist am 04.09.2026 die Schranke des Workspace vorbeigelaufen. */
|
||||
const p = String(pfad || "").toLowerCase().replace(/\/{2,}/g, "/");
|
||||
const wand = BENANNTE_WAENDE.find((w) => w.datei === p);
|
||||
const wand = GEHOERT_ZU_ADRESSE.find((w) => w.datei === p);
|
||||
if (!wand) return false;
|
||||
if (istPruefAdresse(hostKopfzeile)) return false;
|
||||
const benannt = istOhneModiAdresse(hostKopfzeile) || istCrewAdresse(hostKopfzeile);
|
||||
|
||||
Reference in New Issue
Block a user