Waechter: engere Dateirechte und ein Probeschalter

Der erste automatische Lauf war erfolgreich (14:20, 18 Punkte, 0
auffaellig). Zwei Nachtraege:

RECHTE

Zustandsdatei und Protokoll lagen mit 644 in einem 755-Verzeichnis.
Personenbezogene Daten stehen dort keine -- wohl aber eine
vollstaendige Liste aller Dienste, Adressen und ihres Zustands. Fuer
jemanden, der einen Angriff vorbereitet, ist das eine bequeme
Landkarte. Jetzt 700/600. Kostet nichts, also gibt es auch keinen
Grund, es herzugeben.

PROBESCHALTER

  node waechter.mjs --probe

Verschickt eine Meldung, ohne dass etwas kaputt sein muss. Das ist die
einzige Moeglichkeit, den MELDEWEG zu pruefen, ohne auf eine echte
Stoerung zu warten.

Der Grund ist derselbe wie beim stillen "if (!url) return;", das diese
Reihe ausgeloest hat: Eine Ueberwachung, deren Zustellung
stillschweigend nicht funktioniert, ist schlimmer als gar keine. Man
haelt die Stille dann fuer "alles in Ordnung" -- dabei ist sie nur
Stille.

Steht bewusst VOR den Messungen: Wer den Meldeweg pruefen will, soll
nicht erst 18 Punkte abfragen muessen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-08-26 14:21:08 +02:00
co-authored by Claude Opus 5
parent 3a5805bfad
commit bcf6e01fa9
+33 -4
View File
@@ -274,11 +274,20 @@ async function meldung(titel, text) {
ABLAUF
--------------------------------------------------------------------- */
/* 700/600 statt der Vorgabe 755/644. Hier stehen keine
personenbezogenen Daten, aber eine vollstaendige Liste aller Dienste,
Adressen und ihres Zustands -- fuer jemanden, der einen Angriff
vorbereitet, eine bequeme Landkarte. Sie kostet nichts, also gibt es
auch keinen Grund, sie herzugeben. */
function verzeichnisSichern(pfad) {
mkdirSync(dirname(pfad), { recursive: true, mode: 0o700 });
}
function protokoll(text) {
try {
mkdirSync(dirname(PROTOKOLL), { recursive: true });
verzeichnisSichern(PROTOKOLL);
writeFileSync(PROTOKOLL,
`${new Date().toISOString()} ${text}\n`, { flag: "a" });
`${new Date().toISOString()} ${text}\n`, { flag: "a", mode: 0o600 });
} catch { /* Protokoll ist Beiwerk, nicht der Zweck */ }
console.log(text);
}
@@ -292,8 +301,28 @@ function zustandLesen() {
}
function zustandSchreiben(z) {
mkdirSync(dirname(ZUSTAND_DATEI), { recursive: true });
writeFileSync(ZUSTAND_DATEI, JSON.stringify(z, null, 1), "utf8");
verzeichnisSichern(ZUSTAND_DATEI);
writeFileSync(ZUSTAND_DATEI, JSON.stringify(z, null, 1), { encoding: "utf8", mode: 0o600 });
}
/* ---------------------------------------------------------------------
PROBELAUF: node waechter.mjs --probe
Verschickt eine Meldung, ohne dass etwas kaputt sein muss.
Das ist nicht Spielerei, sondern die einzige Moeglichkeit, den
MELDEWEG zu pruefen, ohne auf eine echte Stoerung zu warten. Eine
Ueberwachung, deren Zustellung stillschweigend nicht funktioniert,
ist schlimmer als gar keine: Man haelt Stille faelschlich fuer
"alles in Ordnung" -- dabei ist sie nur Stille.
--------------------------------------------------------------------- */
if (process.argv.includes("--probe")) {
const r = await meldung(
"Probe vom Waechter",
"Wenn du das liest, kommen Stoerungsmeldungen an."
);
protokoll(`Probelauf: ${r.gesendet ? r.gesendet + " Geraet(e) erreicht" : "NICHT zugestellt (" + r.grund + ")"}`);
process.exit(r.gesendet ? 0 : 1);
}
const jetzt = {};