Highlights: auf der Agenturadresse gibt es die Rudel-Bretter nicht mehr
Filipe, dringend: "ich kann gerade bei highlights keine videos
hochladen."
DAS HOCHLADEN WAR NICHT KAPUTT. Gemessen an der laufenden Datenbank:
49 Highlights, ALLE mit haus = crew -- so legt hausFuerNeuenEintrag
sie an, ausdruecklich "egal, von welcher Adresse aus jemand
hineinschreibt". Der Adressriegel vom 03.10. zeigt auf der
Agenturadresse aber nur haus = agentur:
crew. -> 49 Highlights
workspace -> 0
Das Brett stand dort leer, und ein eingefuegtes Video verschwand in
derselben Sekunde: angelegt und sofort ausgeblendet. Von aussen sieht
das aus wie "geht nicht hoch". Beleg: Eintrag #77 wurde heute um
08:41 erfolgreich angelegt, #76 gestern von Filipe selbst.
Im Serverlog stand seit Stunden keine Fehlerzeile, und TikTok
antwortet dem Server normal (HTTP 200 in 0,2 s) -- beides geprueft,
bevor im Code gesucht wurde.
ZWEI REGELN WIDERSPRACHEN SICH, und jede fuer sich war richtig:
"diese Bretter sind immer crew" gegen "diese Adresse zeigt nur
agentur". Keine Pruefung konnte das merken, weil keine den
Zwischenraum ansah.
Aufgeloest in Filipes Richtung (Rueckfrage 05.10.): Auf der
Agenturadresse gibt es diese Bretter gar nicht -- 404 statt leerem
Brett. Das ist die Regel vom 24.09. beim Wort genommen: "auf jeder
Adresse nur deren Bestand."
EINE Regel (brettAufDieserAdresse), zwei Tore: die Middleware in
workspace-bereiche.js und die Video-Route, die NICHT an ihr haengt.
Ohne das zweite liesse sich weiterhin etwas anlegen, das danach
niemand sieht -- derselbe Zustand, nur still.
Ohne Adresse (Pruefungen, 127.0.0.1) bleibt alles offen, dieselbe
vorsichtige Richtung wie in nurDiesesHaus.
ZWEIMAL VON DER MESSUNG KORRIGIERT WORDEN:
1. Ich hatte zusaetzlich einen Kachelfilter gebaut. Er war toter
Code: Auf der Agenturadresse liefert bereicheRoh `null` ("der
Browser nimmt seine eigene Liste"), und in dieser stehen die
Rudel-Bretter gar nicht -- weder in start.html noch in
bereiche.js. Es gab nichts zu filtern. Wieder entfernt: Ein
Filter, den nichts erreicht, sieht beim Lesen aus wie der Schutz,
und man sucht den echten nicht mehr.
2. Meine erste Pruefzeile erwartete auf der Agenturadresse
Serverkacheln und wurde rot -- zu Recht, ich hatte eine Liste
vermutet, wo keine ist.
pruef-haus-trennung 100 -> 107, beide Richtungen und alle drei Wege
(Kachel, Brett, Video). Die Gegenprobe auf crew. schickt bewusst
KEINE echte TikTok-Adresse: Der Riegel sitzt vor der Adresspruefung,
also beweist 400 ebenso gut, dass er nicht gesprungen ist -- und der
Lauf geht dafuer nicht ins Netz. Mit einer echten Adresse riss der
Server beim Beenden in einen libuv-Absturz (107 Pruefungen, 1 Fehler,
Rueckgabewert 127).
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -996,6 +996,99 @@ console.log("=== Haengt es wirklich an der Adresse? ===");
|
||||
+ `(${titel(fremd) || "leer"} / ${titel(echt) || "leer"})`);
|
||||
}
|
||||
|
||||
/* =======================================================================
|
||||
DIE BRETTER DES RUDELS GIBT ES NUR AUF DER CREW-ADRESSE (05.10.2026)
|
||||
|
||||
Filipe: "ich kann gerade bei highlights keine videos hochladen."
|
||||
|
||||
GEMESSEN AN DER LAUFENDEN DATENBANK, bevor etwas angefasst wurde:
|
||||
49 Highlights, ALLE mit `haus = crew` -- so legt
|
||||
`hausFuerNeuenEintrag` sie an, ausdruecklich unabhaengig von der
|
||||
Adresse. Der Adressriegel vom 03.10. zeigt auf der Agenturadresse
|
||||
aber nur `haus = agentur`:
|
||||
|
||||
crew. -> 49 Highlights
|
||||
workspace -> 0
|
||||
|
||||
Das Brett stand dort leer, und ein eingefuegtes Video verschwand in
|
||||
derselben Sekunde -- angelegt und sofort ausgeblendet. Von aussen
|
||||
sieht das aus wie "das Hochladen geht nicht". Belegt: Eintrag #77
|
||||
wurde heute um 08:41 erfolgreich angelegt.
|
||||
|
||||
ZWEI REGELN WIDERSPRACHEN SICH, und keine Pruefung konnte das
|
||||
merken: Jede fuer sich war richtig. Diese hier misst genau den
|
||||
Zwischenraum -- deshalb in BEIDE Richtungen und auf allen drei
|
||||
Wegen (Kachel, Brett, Video). Ein Riegel an nur einem davon waere
|
||||
derselbe Fehler in leiser.
|
||||
======================================================================= */
|
||||
console.log("");
|
||||
console.log("=== Rudel-Bretter: nur auf crew. ===");
|
||||
{
|
||||
const a = await beide("/workspace/api/ich", dogi.keks);
|
||||
const ziele = (x) => [...(x?.bereiche || []), ...(x?.bereiche_zusatz || [])]
|
||||
.map((k) => k.ziel || "");
|
||||
const crewZiele = ziele(a.crew);
|
||||
const wsZiele = ziele(a.ws);
|
||||
|
||||
/* Die Zahl gehoert in die Bedingung: Kaeme gar keine Kachel zurueck,
|
||||
waere "keine Highlight-Kachel" gruen, ohne etwas gesehen zu haben. */
|
||||
ok(crewZiele.length > 0 && crewZiele.some((z) => /b=highlight/.test(z)),
|
||||
`auf crew. steht die Highlights-Kachel (${crewZiele.length} Kacheln)`);
|
||||
|
||||
/* AUF DER AGENTURADRESSE SCHICKT DER SERVER GAR KEINE LISTE, und das
|
||||
ist Absicht: `bereiche === null` heisst "der Browser nimmt seine
|
||||
eigene". Hier stand zuerst eine Zeile, die dort Agenturbretter
|
||||
erwartete -- sie wurde rot, und zwar zu Recht: Ich hatte eine
|
||||
Liste vermutet, wo keine ist. In der Browserliste stehen die
|
||||
Rudel-Bretter ohnehin nicht (weder in start.html noch in
|
||||
bereiche.js nachweisbar), deshalb gibt es dort auch nichts
|
||||
auszublenden -- die Kachel war nie das Problem. */
|
||||
ok(a.ws?.bereiche === null,
|
||||
`auf der Agenturadresse kommt bewusst keine Serverliste (${JSON.stringify(a.ws?.bereiche)})`);
|
||||
ok(!wsZiele.some((z) => /b=highlight/.test(z)),
|
||||
`und nirgends eine Highlights-Kachel (${wsZiele.length} Zusatzkacheln geprueft)`);
|
||||
|
||||
/* ---- Das Brett selbst ------------------------------------------- */
|
||||
const hl = {
|
||||
crew: await hole("/workspace/api/bereich/highlight", { host: CREW, keks: dogi.keks }),
|
||||
ws: await hole("/workspace/api/bereich/highlight", { host: WS, keks: dogi.keks }),
|
||||
};
|
||||
ok(hl.crew.status === 200, `das Brett antwortet auf crew. (${hl.crew.status})`);
|
||||
ok(hl.ws.status === 404,
|
||||
`auf der Agenturadresse gibt es es gar nicht -- 404 statt leer (${hl.ws.status})`);
|
||||
|
||||
/* ---- Und der Weg, auf dem das Video hereinkommt ------------------
|
||||
Er haengt NICHT an derselben Middleware und braucht seinen
|
||||
eigenen Riegel. Genau deshalb wird er hier eigens gemessen: Ohne
|
||||
ihn liesse sich weiterhin etwas anlegen, das danach niemand
|
||||
sieht -- derselbe Zustand, nur still. */
|
||||
const video = await hole("/workspace/api/bereich/highlight/video", {
|
||||
host: WS, keks: dogi.keks, methode: "POST",
|
||||
rumpf: JSON.stringify({ url: "https://www.tiktok.com/@dogfather/video/1234567890" }),
|
||||
});
|
||||
ok(video.status === 404,
|
||||
`auch ein Video laesst sich von dort nicht mehr einfuegen (${video.status})`);
|
||||
|
||||
/* GEGENPROBE: Auf crew. wird es NICHT mit 404 abgewiesen. Die
|
||||
Adresse ist der Unterschied, nicht etwa eine kaputte Route --
|
||||
sonst waere die Zeile darueber wertlos. (Dass TikTok die erfundene
|
||||
Nummer nicht kennt, ist hier egal: Jede Antwort ausser 404 zeigt,
|
||||
dass der Riegel nicht gegriffen hat.) */
|
||||
const videoCrew = await hole("/workspace/api/bereich/highlight/video", {
|
||||
host: CREW, keks: dogi.keks, methode: "POST",
|
||||
/* ABSICHTLICH KEINE ECHTE TIKTOK-ADRESSE. Der Riegel sitzt VOR der
|
||||
Adresspruefung: Kommt hier 400 ("keine TikTok-Adresse") zurueck,
|
||||
ist er nachweislich nicht gesprungen -- und die Pruefung schickt
|
||||
dabei keine Anfrage ins Netz. Mit einer echten Adresse lief der
|
||||
Server gegen TikTok, und die offenen Verbindungen rissen ihn
|
||||
beim Beenden in einen libuv-Absturz: 107 Pruefungen, 1 Fehler,
|
||||
Rueckgabewert 127. */
|
||||
rumpf: JSON.stringify({ url: "https://example.invalid/kein-tiktok" }),
|
||||
});
|
||||
ok(videoCrew.status === 400,
|
||||
`Gegenprobe: auf crew. greift der Riegel nicht (${videoCrew.status} statt 404)`);
|
||||
}
|
||||
|
||||
d.close();
|
||||
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ }
|
||||
console.log("");
|
||||
|
||||
@@ -82,7 +82,7 @@ import {
|
||||
db, protokolliere, echteIp, sitzungLesen, DATEN_ORDNER, betreutWo, darfCreator, betreuteIds, istLeitung, istDogFather, siehtAlles, istSpicy, ohneDogFather,
|
||||
externPruefen, externSql,
|
||||
ohneTeamDogi, ohneAgentur, siehtModis, fuehrtTeamDogi, MODI_BEREICHE_ERLAUBT, brettHinterSeiteOffen, TEAM_DOGI_ROLLEN,
|
||||
TREFF_BRETTER, TREFF_ROLLEN, AUSSEN_ROLLEN,
|
||||
TREFF_BRETTER, TREFF_ROLLEN, AUSSEN_ROLLEN, brettAufDieserAdresse,
|
||||
heuteLokal,
|
||||
gehoertAufDieseAdresse,
|
||||
bereicheFuer, kanaeleFuer, KANAELE,
|
||||
@@ -949,6 +949,13 @@ bereicheRouter.use("/workspace/api/bereich/:bereich", (req, res, next) => {
|
||||
Faellt eines weg, haelt das andere. */
|
||||
if (TREFF_BRETTER.includes(b) && !TREFF_ROLLEN.has(req.person?.rolle)) return nein();
|
||||
|
||||
/* UND AUF DER AGENTURADRESSE GIBT ES SIE GAR NICHT (05.10.2026).
|
||||
Begruendung bei `brettAufDieserAdresse` in workspace.js -- kurz:
|
||||
Diese Bretter sind immer `crew`, der Adressriegel zeigt dort nur
|
||||
`agentur`, also standen sie leer da und Neues verschwand sofort.
|
||||
Jetzt antwortet die Seite gar nicht erst. */
|
||||
if (!brettAufDieserAdresse(req.person, b)) return nein();
|
||||
|
||||
if (!TEAM_DOGI_ROLLEN.has(req.person?.rolle)) return next();
|
||||
/* Bretter mit eigener Kachel: wer die Kachel hat, darf hinein. */
|
||||
if (MODI_BEREICHE_ERLAUBT.has(b)) return next();
|
||||
|
||||
@@ -46,7 +46,7 @@ import { join } from "node:path";
|
||||
import { mkdirSync, writeFileSync, unlinkSync } from "node:fs";
|
||||
import {
|
||||
db, protokolliere, echteIp, sitzungLesen, DATEN_ORDNER,
|
||||
KANAELE, kanalVonHandle, TREFF_BRETTER,
|
||||
KANAELE, kanalVonHandle, TREFF_BRETTER, brettAufDieserAdresse,
|
||||
heuteLokal,
|
||||
hausFuerNeuenEintrag,
|
||||
} from "./workspace.js";
|
||||
@@ -162,7 +162,14 @@ videoRouter.post("/workspace/api/bereich/:bereich/video", async (req, res) => {
|
||||
let abgelegt = null;
|
||||
try {
|
||||
const bereich = String(req.params.bereich);
|
||||
if (!TREFF_BRETTER.includes(bereich)) {
|
||||
/* DIESE ROUTE HAT IHR EIGENES TOR. Sie haengt nicht an der
|
||||
Middleware von workspace-bereiche.js -- deshalb steht der
|
||||
Adressriegel hier eigens. Ohne ihn liesse sich von der
|
||||
Agenturadresse aus weiterhin ein Video anlegen, das danach
|
||||
niemand dort sieht: genau der Zustand, der heute gemeldet
|
||||
wurde, nur still. */
|
||||
if (!TREFF_BRETTER.includes(bereich)
|
||||
|| !brettAufDieserAdresse(req.person, bereich)) {
|
||||
return res.status(404).json({ fehler: "nicht_gefunden" });
|
||||
}
|
||||
const warum = darfSchreiben(req.person, bereich);
|
||||
|
||||
@@ -2160,6 +2160,53 @@ const TREFF_MIT_EIGENEM = [...TREFF_BEREICHE, HILFE_KACHEL, STECKBRIEF_KACHEL_TR
|
||||
assets/js/bereiche.js und wird dort ergaenzt. `[]` heisst "diese
|
||||
Rolle bekommt gar nichts"; ihr eine einzelne Kachel zu geben waere
|
||||
die Ausnahme, die spaeter niemand mehr erklaeren kann. */
|
||||
/** Gibt es dieses Brett auf der Adresse, auf der jemand angemeldet ist?
|
||||
*
|
||||
* DIE SIEBEN BRETTER DES RUDELS GIBT ES NUR BEI TEAM DOGI (05.10.2026).
|
||||
*
|
||||
* Filipe: "ich kann gerade bei highlights keine videos hochladen."
|
||||
*
|
||||
* Nachgemessen an der laufenden Datenbank: 49 Highlights, ALLE mit
|
||||
* `haus = crew` -- so legt `hausFuerNeuenEintrag` sie an, ausdruecklich
|
||||
* "egal, von welcher Adresse aus jemand hineinschreibt". Seit dem
|
||||
* Adressriegel vom 03.10. zeigt die Agenturadresse aber nur Eintraege
|
||||
* mit `haus = agentur`. Ergebnis:
|
||||
*
|
||||
* crew. -> 49 Highlights
|
||||
* workspace-> 0
|
||||
*
|
||||
* Das Brett stand dort also leer da, und was jemand einfuegte,
|
||||
* verschwand in derselben Sekunde -- angelegt, aber sofort
|
||||
* ausgeblendet. Von aussen sieht das aus wie "das Hochladen geht
|
||||
* nicht"; in Wahrheit ging alles, nur sehen konnte er es nicht.
|
||||
*
|
||||
* Zwei Regeln widersprachen sich: Die eine sagt "diese Bretter sind
|
||||
* immer crew", die andere "auf dieser Adresse nur agentur". Aufgeloest
|
||||
* wird es in Filipes Richtung (05.10.2026, nach Rueckfrage): Auf der
|
||||
* Agenturadresse gibt es diese Bretter gar nicht mehr -- weder als
|
||||
* Kachel noch als Seite noch als Schnittstelle. Das ist die Regel vom
|
||||
* 24.09. beim Wort genommen: "auf jeder Adresse nur deren Bestand."
|
||||
*
|
||||
* OHNE ADRESSE (Pruefungen, 127.0.0.1) bleibt alles offen. Dieselbe
|
||||
* vorsichtige Richtung wie in `nurDiesesHaus` -- ein Riegel, der auch
|
||||
* dort zuschlaegt, wo niemand ein Haus kennt, sperrt die eigenen
|
||||
* Messungen aus. */
|
||||
export const brettAufDieserAdresse = (person, bereich) =>
|
||||
!(TREFF_BRETTER.includes(String(bereich)) && person?.haus === "agentur");
|
||||
|
||||
/* HIER STAND EIN KACHELFILTER -- und er war toter Code (05.10.2026).
|
||||
|
||||
Die Idee war, die Rudel-Kacheln auf der Agenturadresse aus der
|
||||
Serverliste zu streichen. Nachgemessen gibt es dort gar keine
|
||||
Serverliste: `bereicheRoh` liefert fuer die Agenturrollen `null`,
|
||||
und das heisst "der Browser nimmt seine eigene Liste". In dieser
|
||||
stehen die Rudel-Bretter nicht -- weder in start.html noch in
|
||||
bereiche.js. Es gab also nichts zu filtern.
|
||||
|
||||
Ein Filter, den nichts erreicht, ist schlimmer als keiner: Er sieht
|
||||
beim Lesen aus wie der Schutz, und man sucht den echten nicht mehr.
|
||||
Der echte ist das Tor in workspace-bereiche.js und in der
|
||||
Video-Route -- beide gemessen in pruef-haus-trennung. */
|
||||
export function bereicheFuer(person) {
|
||||
const liste = bereicheRoh(person);
|
||||
if (liste === null || !Array.isArray(liste) || !liste.length) return liste;
|
||||
|
||||
Reference in New Issue
Block a user