- Automatisches Schreiben+Neustart: jede relevante Änderung (Reservierung,
Option, Subnetz, globale Einstellung) ruft jetzt _dhcp_write_and_restart()
direkt nach dem Speichern auf -- schreibt die Kea-Config neu und startet
den Dienst neu, FALLS er gerade aktiv ist (kein ungefragtes Hochfahren
eines bewusst gestoppten Dienstes). Ein manuelles "Datei schreiben" +
"Neu starten" kann dadurch nicht mehr vergessen werden. Der bisherige
"Speichern"-Button (write_dhcp_file) restartet jetzt ebenfalls
automatisch statt nur zu schreiben.
- Leases-Übersicht dedupliziert: Keas memfile-Backend hängt bei jeder
Verlängerung eine neue Zeile an, statt die alte zu ersetzen -- dieselbe
Adresse stand oft dutzendfach in der CSV. _dhcp_read_leases() zeigt jetzt
nur noch die jeweils neueste (per "expire") Zeile pro IP.
- Einzelne Leases löschen (neuer Button + Route): entfernt alle Zeilen
einer Adresse aus der Lease-CSV und startet den Dienst neu, damit Kea sie
beim Neuladen nicht aus dem Speicher zurückschreibt.
- Eigenständiger Autostart-Slider (wie beim Aktivieren/Deaktivieren von
Clients) -- steuert nur systemctl enable/disable, entkoppelt vom
aktuellen Start/Stopp-Zustand.
- KRITISCH, live gefunden und behoben: die erste Version von
_dhcp_delete_lease() hat Kea beim Neustart zum Absturz gebracht --
Pythons csv-Modul schreibt standardmäßig "\r\n"-Zeilenenden, Kea erwartet
aber reines "\n" und lehnte die Datei mit "invalid column: 'pool_id^M'"
komplett ab. Zusätzlich hätte das Neuanlegen der Datei als root (der
App-Prozess) sie root:root statt dem Kea-Dienstnutzer gehören lassen,
wodurch Kea keine neuen Leases mehr hätte schreiben können. Beides
gefixt (lineterminator="\n", Eigentümer/Rechte der Originaldatei nach dem
Schreiben wiederhergestellt) und auf POETEST bestätigt: Dienst übersteht
den Neustart jetzt, Datei bleibt _kea:_kea, keine ^M mehr.