You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DM-Chunking zerschnitt Umlaute/Emojis und kappte lange Antworten: Die Aufteilung langer Nachrichten in mehrere Funkpakete zaehlte bisher Zeichen statt UTF-8-Bytes - bei Umlauten/Emojis konnte ein 150-Zeichen-Chunk deutlich ueber dem 150-Byte-Firmware-Limit liegen und wurde dann mitten in einer Mehrbyte-Sequenz abgeschnitten. Zusaetzlich wurden lange Einzeltexte (u.a. die Willkommens-/Bestaetigungs-DM nach erfolgreicher Registrierung) gar nicht in mehrere Pakete aufgeteilt und dadurch bei 150 Byte hart gekappt. Beides jetzt byte-genau korrekt.
cmd_kill (K/ND) ermoeglichte Aufzaehlen fremder Postfach-Nachrichten: Wer eine private Nachricht nicht loeschen durfte, bekam "Keine Berechtigung" (verraet: ID existiert) statt "nicht gefunden" - damit liess sich per Durchprobieren erkennen, welche fremden Nachrichten-IDs existieren. Jetzt dieselbe Maskierung wie beim Lesen (R<n>): wer eine private Nachricht nicht einmal lesen darf, bekommt "nicht gefunden".
Watchdog-Reinitialisierung wird beim Shutdown jetzt sauber abgebrochen (war zuvor ein ungetrackter Task); Nachrichtenabruf vom Node bricht ab, sobald "keine weiteren Nachrichten" gemeldet wird, statt immer 20 Anfragen zu senden.
Performance
Board-/Nachrichtenliste (BL/NL) laden nicht mehr die komplette Tabelle: Filterung und Seitenweise-Anzeige laufen jetzt per SQL-Query (WHERE/LIMIT/OFFSET) statt die gesamte messages-Tabelle in den Speicher zu laden. Bei der Board-Liste wurden dabei bisher auch alle privaten Nachrichten aller User unnoetig entschluesselt, nur um sie anschliessend wegzufiltern - das entfaellt jetzt komplett.
Sicherheit / Haertung
TLS-Cipher-Suiten eingeschraenkt: Das Web-Admin-Zertifikat verhandelt jetzt nur noch Forward-Secret-AEAD-Suiten (ECDHE/DHE + AES-GCM/ChaCha20); ungenutzte PSK-/SRP-Suiten (keine PSK-Identity konfiguriert, reine Angriffsflaeche) sind ausgeschlossen. TLS 1.3 ist davon unberuehrt.
TLS-Private-Key-Datei: Dateirechte (0600) werden jetzt auch bei bereits vorhandenen Dateien (z.B. nach manuellem Kopieren oder Backup-Wiederherstellung) explizit erzwungen, nicht nur bei Neuanlage.
AES-GCM-Entschluesselung faengt jetzt gezielt ungueltige Tags/defektes Base64 ab, statt pauschal jede Ausnahme (auch z.B. MemoryError) stillschweigend zu verschlucken.
scrypt-Passwort-Hashing hat jetzt eine explizite Speicherobergrenze (maxmem), damit ein manipulierter Hash mit ueberhoehten Parametern keinen Speicher-DoS ausloesen kann.
Web-Admin-Login: Konstantzeit-Vergleich gegen unbekannte Zusatz-Admin-Benutzernamen (verhindert Enumeration ueber die Antwortzeit); Sessions werden jetzt regelmaessig bereinigt statt unbegrenzt zu wachsen.
Sonstiges
datetime.utcnow() durch die zukunftssichere now_utc()-Hilfsfunktion ersetzt (utcnow() ist ab Python 3.12 deprecated), Speicherformat/Verhalten unveraendert.