forked from kay/RouterOS
Neuer "Einrichten"-Tab führt durch Internet-Anschluss (DHCP/statisch/ PPPoE) und Heimnetzwerk+DHCP-Server, zeigt vor dem Anwenden eine Klartext-Übersicht (optional mit den exakten RouterOS-Befehlen) und erstellt automatisch eine Sicherung, bevor Änderungen geschrieben werden. Änderungen laufen über beide Transporte: CLI-Zeile für SSH, JSON-POST für REST — beide aus einem gemeinsamen RouterOSCommand gebaut. RouterOS-CLI-Syntax ist Standard und langjährig stabil, aber nicht gegen ein echtes Gerät verifiziert; deshalb die Detailanzeige im Übersichtsschritt vor dem Anwenden. ConnectionService ist jetzt der einzige App-weite Zustand (ersetzt SessionStore) und wird explizit an alle drei Tabs durchgereicht. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HReLXMbmPvtQ23p1iWiJNW
51 lines
1.9 KiB
Swift
51 lines
1.9 KiB
Swift
import SwiftUI
|
|
|
|
struct LanStepView: View {
|
|
@ObservedObject var viewModel: SetupViewModel
|
|
let availableInterfaces: [NetworkInterface]
|
|
|
|
var body: some View {
|
|
Form {
|
|
Section("Heimnetzwerk (LAN)") {
|
|
Picker("Anschluss/Bridge", selection: $viewModel.lanConfig.interfaceName) {
|
|
ForEach(availableInterfaces) { interface in
|
|
Text(interface.name).tag(interface.name)
|
|
}
|
|
}
|
|
TextField("Router-Adresse (z.B. 192.168.88.1/24)", text: $viewModel.lanConfig.routerAddress)
|
|
TextField("Netzwerk (z.B. 192.168.88.0/24)", text: $viewModel.lanConfig.networkAddress)
|
|
}
|
|
|
|
Section("Automatische Adressvergabe (DHCP)") {
|
|
TextField("Von", text: $viewModel.lanConfig.poolRangeStart)
|
|
TextField("Bis", text: $viewModel.lanConfig.poolRangeEnd)
|
|
Stepper(
|
|
"Adresse behalten für \(viewModel.lanConfig.leaseTimeHours) Stunden",
|
|
value: $viewModel.lanConfig.leaseTimeHours,
|
|
in: 1...168
|
|
)
|
|
TextField("DNS-Server", text: $viewModel.lanConfig.dnsServers)
|
|
}
|
|
|
|
Section {
|
|
HStack {
|
|
Button("Zurück") { viewModel.goBack() }
|
|
Spacer()
|
|
Button("Weiter") { viewModel.goNext() }
|
|
.disabled(!isStepValid)
|
|
}
|
|
}
|
|
}
|
|
.formStyle(.grouped)
|
|
.navigationTitle("Heimnetzwerk einrichten")
|
|
}
|
|
|
|
private var isStepValid: Bool {
|
|
!viewModel.lanConfig.interfaceName.isEmpty
|
|
&& !viewModel.lanConfig.routerAddress.isEmpty
|
|
&& !viewModel.lanConfig.networkAddress.isEmpty
|
|
&& !viewModel.lanConfig.poolRangeStart.isEmpty
|
|
&& !viewModel.lanConfig.poolRangeEnd.isEmpty
|
|
}
|
|
}
|