Neu: Netzwerkeinstellungen des Hosts unter Systemeinstellungen (IP/DNS/DHCP)

Bisher enthielt "Systemeinstellungen" nur das Pruefintervall. Jetzt
zusaetzlich Verwaltung der Netzwerkkonfiguration DIESES Hosts (getrennt
vom Kea-DHCP-*Server* fuer Clients):

- Backend-Erkennung (NetworkManager vs. dhcpcd via systemctl is-active).
  Kein erkanntes Backend -> Seite bleibt rein lesend statt zu raten.
- Status-Anzeige: Interface, IP/Prefix, Gateway, DNS, Modus (DHCP/Statisch).
- Aenderung: Interface, Modus, bei Statisch IP/Prefix/Gateway, DNS
  unabhaengig von Modus setzbar (IP per DHCP + feste DNS moeglich).
- Sicherheitsnetz analog "netplan try": Backup vor jeder Aenderung,
  automatisches Rollback nach 45s ohne explizite Bestaetigung (nur
  moeglich, wenn die Seite ueber die neue Config noch erreichbar ist) --
  verhindert Aussperren durch einen Tippfehler bei IP/Gateway.
- Bugfix waehrend der Implementierung gefunden: der Auto-Revert-Timer
  laeuft in einem Hintergrund-Thread ohne Request-Kontext: log_action()
  griff auf current_user zu und warf dort einen AttributeError (die
  Config wurde trotzdem korrekt zurueckgerollt, nur der Audit-Log-Eintrag
  fehlte und ein Fehler landete im Server-Log). Fix: log_action_system()
  ohne current_user-Abhaengigkeit fuer Code ausserhalb des Request-
  Kontexts.
- Getestet: Backend-Erkennung + rein lesender Fallback live (WSL hat
  weder NetworkManager noch dhcpcd aktiv, korrekt erkannt), Rechte-Gating,
  Anwenden-/Rollback-Logik fuer beide Backends per gemocktem
  subprocess.run verifiziert (inkl. echtem dhcpcd.conf-Rewrite und
  vollständigem Anwenden-dann-Auto-Rollback-Durchlauf mit Audit-Log-
  Eintrag).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 10:50:33 +02:00
co-authored by Claude Sonnet 5
parent 197af26d72
commit 82edf7628b
3 changed files with 419 additions and 30 deletions
+35
View File
@@ -270,6 +270,41 @@ Installation, generierte Konfiguration besteht `kea-dhcp4 -t`, Dienststart
sowie Client-spezifischer Override erscheinen korrekt getrennt in der
Konfiguration.
## Netzwerkeinstellungen des Hosts (Systemeinstellungen)
Eigene, klar getrennte Funktion von obigem DHCP-*Server*: hier geht es um
die Netzwerkkonfiguration des Hosts, auf dem der PoE Manager selbst läuft
(IP-Adresse, DNS-Server, DHCP-Client vs. statisch) — nicht um Adressen, die
er an andere Geräte vergibt.
- **Backend-Erkennung**: prüft, ob NetworkManager oder dhcpcd aktiv ist
(`systemctl is-active`). Ist keins von beiden aktiv, bleibt die Seite
bewusst **rein lesend** (Status wird trotzdem angezeigt) — ohne
zuverlässige Erkennung des Backends keine Änderung, um nicht ins Blaue zu
raten.
- **Anzeige**: aktuelles Interface, IP/Prefix, Gateway, DNS-Server sowie
Modus (DHCP/Statisch) — Modus wird backend-spezifisch ermittelt
(`nmcli ipv4.method` bzw. ein `static ip_address=`-Eintrag im
betreffenden `interface`-Block von `/etc/dhcpcd.conf`).
- **Änderung**: Interface, Modus (DHCP/Statisch), bei Statisch zusätzlich
IP/Prefix/Gateway, sowie unabhängig davon eigene DNS-Server (funktioniert
in beiden Modi — z.B. IP per DHCP, aber feste DNS-Server).
- **Sicherheitsnetz** (wie `netplan try`): vor jeder Änderung wird die
vorherige Konfiguration gesichert. Nach dem Anwenden läuft ein
Hintergrund-Timer (Standard 45s) — wird die Änderung nicht **explizit
bestätigt** (nur möglich, wenn die Seite über die neue Konfiguration noch
erreichbar ist), rollt die App automatisch auf die gesicherte
Konfiguration zurück. Verhindert, dass ein Tippfehler bei IP/Gateway den
Host von der Web-UI/SSH abschneidet.
- Da diese Session ausschließlich in WSL (eigene virtuelle Netzwerkschicht,
weder NetworkManager noch dhcpcd) läuft, konnte der Anwenden-Pfad nicht
gegen eine echte Instanz verifiziert werden — Erkennung/Statusanzeige
sind live getestet (korrekte "kein Backend erkannt"-Erkennung + rein
lesender Fallback), Anwenden/Rollback-Logik gegen beide Backends per
gemockten `subprocess.run`/Dateizugriffen inkl. eines echten
`dhcpcd.conf`-Rewrites und eines vollständigen Anwenden-dann-Auto-
Rollback-Durchlaufs verifiziert.
## Änderungslog
Jede Anlage, Bearbeitung, Löschung sowie jedes Aktivieren/Deaktivieren von