Files
RouterOS/RouterOSAssistant/Core/Models/LanDhcpConfig.swift
T
KayandClaude Sonnet 5 8a5df3338a M25: Einrichten-Wizard-Politur + SSH-Trust-Persistenz endlich verifiziert
- WAN-Schritt: fehlenden "Zurück"-Button ergänzt (beide Modi)
- "Abbrechen"/"Jetzt sichern" prominent gemacht (wie "Neu scannen")
- LAN-/VLAN-Schritt: Adressfelder starten leer, nur Format-Beispiel im
  Feld sichtbar statt vorbelegter Werte. VlanStepView bekam dafür eine
  Validierungssperre auf "Weiter" (fehlte bisher, war ok solange
  Defaults immer gültig waren). Zwei Tests entsprechend angepasst.
- SSH-Host-Key-Trust aus M24 hatte sich entgegen der Live-Bestätigung
  nie tatsächlich persistiert (defaults read zeigte leeren Schlüssel,
  Ursache ungeklärt) — betraf BackupServices dedizierte SSH-Verbindung
  beim ersten Experte-Tab-Schreibversuch pro Sitzung. Erneut über den
  bestehenden Trust-Dialog bestätigt, diesmal per defaults read
  verifiziert statt nur der UI-Bestätigung vertraut.

Alles live bestätigt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 12:41:47 +02:00

38 lines
1.7 KiB
Swift

import Foundation
struct LanDhcpConfig: Identifiable, Equatable {
var id = UUID()
var interfaceName: String = "bridge"
/// Empty on purpose (Nutzerwunsch: "die auszufüllenden Felder leer lassen, nur Beispiele
/// zeigen ... so sieht man das Schema dahinter") — each TextField's label (e.g.
/// "Router-Adresse (z.B. 192.168.88.1/24)") doubles as its placeholder while empty, so a
/// pre-filled value would hide the format example instead of showing it. `interfaceName`
/// above and `leaseTimeHours` below stay as real defaults — a Picker selection and a
/// Stepper, neither has a "type an example" UI to hide.
var networkAddress: String = ""
var routerAddress: String = ""
var poolRangeStart: String = ""
var poolRangeEnd: String = ""
var leaseTimeHours: Int = 24
var dnsServers: String = ""
/// Blocks forward traffic to/from every other configured LAN/VLAN network — see
/// `FirewallConfig.NetworkSegment`. Internet access (WAN NAT) is unaffected.
var isolated: Bool = false
/// RouterOS commands for this LAN/DHCP setup. Standard, long-stable RouterOS CLI syntax —
/// not yet verified against a live device; the Review-step shows every command before
/// it runs so this can be caught before anything is applied.
func buildCommands() -> [RouterOSCommand] {
DhcpServerCommandBuilder.buildCommands(
interfaceName: interfaceName,
routerAddress: routerAddress,
networkAddress: networkAddress,
poolRangeStart: poolRangeStart,
poolRangeEnd: poolRangeEnd,
leaseTimeHours: leaseTimeHours,
dnsServers: dnsServers,
context: "auf \(interfaceName)"
)
}
}