Release 2.0 ist vor allem das Ergebnis eines Härtungs-Audits: sechs Stellen, an denen OpenWhistle mehr preisgab, als nötig war, oder nicht hielt, was es versprach. Alle Details im CHANGELOG.
Nachtrag vom 27. September 2026: Aktualisieren Sie auf 2.0.1. Bis dahin legte der Einrichtungsassistent das erste Konto als einfachen Admin an. Superadmin kann aber nur ein Superadmin vergeben, also hatte keine Installation einen. Organisationen und Multi-Tenancy waren deshalb nicht erreichbar. Migration 008 befördert beim Update das erste Konto; prüfen Sie danach /admin/users. Details im Änderungsprotokoll.
Das PDF, das die eigenen Worte verschluckte
Ein Fallbericht auf Polnisch, Griechisch oder Kyrillisch ließ sich als PDF exportieren — nur stand der Text der meldenden Person danach nicht mehr darin. Jedes Zeichen außerhalb des lateinischen Alphabets und jedes typografische Anführungszeichen „wie dieses" wurde beim Export zu einem einzelnen ?. Ursache: Die eingebaute PDF-Schriftart kennt nur Latin-1. Der Fix behebt die Ursache: eine echte Unicode-Schriftart (DejaVu LGC Sans, Latin/Griechisch/Kyrillisch) ist jetzt eingebettet. Chinesisch, Japanisch, Koreanisch und rechts-nach-links-Schriften bleiben eine offene Baustelle — mit einem sichtbaren Ersatzkästchen statt eines stillen „?".
Die Identität kommt nur noch auf Anfrage ans Licht
Bislang standen Name und Kontakt einer vertraulichen Meldung offen auf der Fallseite. Ab 2.0 bleiben beide verborgen, auf der Fallseite wie im PDF-Export, bis jemand auf Identität anzeigen klickt und einen protokollierten Grund von 10 bis 500 Zeichen angibt. Der Grund landet verschlüsselt im Audit-Log. Und weil bislang nicht einmal das bloße Öffnen eines Falls vermerkt wurde, schreibt jetzt jeder Aufruf einer Fallseite einen eigenen Log-Eintrag. Details im Admin-Handbuch.
Die Onion-Adresse vertraute dem falschen Header
Wer OpenWhistle über einen Tor-Hidden-Service anbietet, tut das für Hinweisgeber in einem überwachten Netzwerk. Die erste Fassung entschied „bin ich der Onion-Dienst?" anhand des Host-Headers — den aber der Client mitschickt, nicht der Server. Eine gefälschte Host: irgendwas.onion-Anfrage hätte sich so als Tor-Besucher ausgegeben, mit Cookies ohne Secure-Flag und ganz ohne HSTS. Jetzt entscheidet nginx: Es setzt einen eigenen Header nur im Onion-Listener und löscht jeden Client-Wert überall sonst — ein CI-Job prüft das bei jedem Push gegen einen echten Container. Details in der Anleitung Eine Onion-Adresse anbieten.
Webhooks verraten nur noch Zahlen
Der Sammel-Webhook für neue Meldungen schickte bislang Fallnummern selbst mit, als Array in der Payload. Er sendet jetzt nur noch Zählwerte: wie viele Meldungen, wie viele Nachrichten, plus einen daraus gebauten Satz. Die Erinnerungs-Mail an die eigenen Admins nennt weiterhin die Fallnummer; nur der Weg nach außen wurde beschnitten. Siehe Benachrichtigungen.
Ein Kollisionsfall legte halbe Sitzungen lahm
Fallnummern erhalten einen zufälligen fünfstelligen Zusatz, der gelegentlich kollidiert — dann versucht die Anwendung es erneut. Der Retry rief dafür ein volles rollback() der Datenbank-Sitzung auf, das jedes bereits geladene Objekt ungültig macht, nicht nur den fehlgeschlagenen Datensatz. Der nächste Lesezugriff auf ein solches Objekt stürzte dann mit MissingGreenlet ab — unberechenbar, weil er erst bei einer schon vollen Datenbank auftrat. Die Lösung: ein SAVEPOINT pro Versuch, das nur den kollidierenden Versuch zurückrollt.
Der Zurück-Button, der nichts mehr vergisst
Ein Dateiupload-Feld zeigt beim Zurücknavigieren immer einen leeren Zustand — klickte man im Melde-Assistenten auf Zurück und dann auf Weiter, löschte die Anwendung bereits hochgeladene Dateien. Jeder Schritt antwortet jetzt auf ein Absenden mit einer Weiterleitung, ein nicht passender Schritt wird ignoriert, und Anhänge bleiben erhalten, bis neue gewählt werden. Gemeldet und behoben von Zachary Bridges (#94) — vielen Dank dafür.
Alle sechs Funde im Detail
Der vollständige technische Verlauf steht im CHANGELOG; die Live-Demo zeigt Release 2.0 in Aktion.
CHANGELOG lesen →Weitere Ressourcen: Vollständige Dokumentation · HinSchG-Compliance-Leitfaden · GitHub Issues