Neu: DHCP-Reservierungen aus Client-Stammdaten (Systemeinstellungen -> DHCP)

- Neue Unterseite unter Einstellungen (eigenes Rechtepaar
  settings_dhcp.view/settings_dhcp.edit, in PERMISSIONS/NAV_ITEMS/
  _nav_key_visible integriert, Kill-Switch über settings_group.view
  greift wie bei den anderen Einstellungen-Unterpunkten).
- Rein lesende Installations-/Status-Erkennung (shutil.which("dhcpd"),
  systemctl is-active isc-dhcp-server) — die App installiert/startet nie
  selbst einen DHCP-Dienst, sondern zeigt bei fehlender Installation den
  passenden manuellen Befehl an.
- Konfigurierbare Netzwerkparameter (Interface/Subnet/Netzmaske/Range/
  DNS/Domain/Lease-Zeiten/Ausgabepfad), gespeichert als dhcp_*-Schlüssel
  in der bestehenden settings-Tabelle.
- Reservierungen werden aus aktiven Geräten mit gültiger MAC+IP generiert
  (Hostname aus Gerätename abgeleitet, Kollisionen automatisch
  durchnummeriert, Geräte ohne MAC/IP werden übersprungen).
- "In Datei schreiben" (nur mit settings_dhcp.edit) schreibt eine
  separate Include-Datei statt der aktiven dhcpd.conf; kein automatischer
  Dienst-Reload/-Restart durch die App.
- Live getestet: Status-Erkennung, Config speichern, Reservierungs-
  Generierung inkl. Namenskollisionen, Datei-Schreiben in sicheren
  Testpfad, View-only-Gating (Formular ausgeblendet, POST blockiert),
  Kill-Switch über settings_group.view.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-10 21:10:05 +02:00
co-authored by Claude Sonnet 5
parent 06db4c1382
commit 9eb9cfdda6
5 changed files with 388 additions and 1 deletions
+14
View File
@@ -1024,6 +1024,20 @@ select {
word-break: break-word;
color: #c7ccd6;
}
.code-preview {
background: #0a0c10;
border: 1px solid var(--border-soft);
border-radius: 8px;
padding: 14px 18px;
font-family: var(--font-mono);
font-size: 12.5px;
line-height: 1.6;
color: #c7ccd6;
max-height: 360px;
overflow: auto;
white-space: pre-wrap;
word-break: break-word;
}
.log-line { display: block; }
.log-line.online { color: #4ade80; }
.log-line.offline { color: #f87171; }