Files
mdg-filius/tools/ticket-oracle
julian.kiedaischandClaude Opus 5.5 5ded84cb33 feat: F5.2 sign-in with the dashboard's ticket and the service way
Server F checks the dashboard's entry ticket as itsdangerous does
(tools/ticket-oracle: tickets made by itsdangerous 2.2.0 itself), redeems
it at /__auth for a session cookie (only the key's SHA-256 is kept) and
decides at /sync by the session's grant: none, read or write; a frozen
project is read by everyone; every refusal names its reason (one list in
packages/protocol/src/sync.ts). A WebSocket from a page of another origin
is refused. /svc/* with the service key makes, deletes, freezes and
thaws projects, ends a person's grant or all their sessions (connections
let go) and lists the sessions. Snapshots, restoring and copying move to
F6 (they need the canonical doc.json and an epoch).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 13:56:45 +00:00
..

Orakel für die Eintrittskarte

Das Dashboard signiert die Eintrittskarte für Server F mit itsdangerous (URLSafeTimedSerializer, Salz mdg-filius-ticket, 60 s), Server F prüft sie in Node (packages/server/src/ticket.ts). Dieses Orakel lässt itsdangerous selbst Karten ausstellen — bei fester Uhr — und hält fest, was es beim Lesen zu einem Zeitpunkt antwortet: die Nutzlast, abgelaufen oder falsch signiert.

./run.sh   # schreibt packages/server/test/tickets.python.json

Braucht Python 3; itsdangerous kommt in der Version des Dashboards (backend/requirements.txt) in ein eigenes .venv.

Fälle: gewöhnliche Karte (schon sie ist zlib-gepackt), Lesestufe, Umlaute und Emoji, lange Namen, genau 60 s alt, 61 s alt, aus der Zukunft, fremdes Geheimnis, Scratchs Salz, eine veränderte Nutzlast, ohne Signatur, Unsinn, leer, eine Liste statt eines Objekts (ungepackt), Karten ohne Stufe, mit unbekannter Stufe, mit einem Projekt, das keine UUID ist, ohne Namen, nur mit den Pflichtfeldern.