diff --git a/README.md b/README.md index 5e5ef43..2dbcf0c 100644 --- a/README.md +++ b/README.md @@ -15,20 +15,25 @@ Schritt für Schritt, mit Erklär-Tooltips (ⓘ) bei jedem Fachbegriff: 1. **Verbindung** – IP-Adresse, Benutzername, Passwort 2. **Geräte-Erkennung** – liest Modell, RouterOS-Version und Schnittstellen aus -3. **Modus wählen** – geführter Assistent (Standard) oder **Experten-Modus**: Letzterer blendet in den folgenden Schritten zusätzliche, technischere RouterOS-Optionen ein (siehe unten) -4. **Internet-Zugang** – WAN-Schnittstelle, DHCP oder feste IP, NAT -5. **Heimnetzwerk (DHCP)** – Bridge, IP-Bereich, DHCP-Server, DNS -6. **VLANs** *(optional)* – zusätzliche, getrennte Netzwerke (z. B. Gäste, IoT) -7. **WLAN** *(übersprungen, wenn nicht vorhanden – oder bewusst abwählbar, z. B. bei einem reinen Switch)* -8. **Firewall** – sichere Basisregeln, optionale Portfreigaben -9. **Zusammenfassung** – alle geplanten Änderungen im Klartext, automatisches Backup auf dem Gerät vor dem Anwenden, **PDF-Export** mit allen Zugangsdaten inkl. WLAN-QR-Code zum Ausdrucken/Aufbewahren -10. **RouterOS-Update** *(optional)* – prüft auf eine neuere RouterOS-Version und kann sie mit deutlicher Warnung starten +3. **Vorhandene Netzwerke** – bei einem Bestandsgerät: anklickbare Grafik der bereits eingerichteten Bridges, VLANs, IP-Adressen, DHCP-Server, Routen und WLANs (siehe unten); bei werksneuen Geräten erscheint nur ein kurzer Hinweis +4. **Modus wählen** – geführter Assistent (Standard) oder **Experten-Modus**: Letzterer blendet in den folgenden Schritten zusätzliche, technischere RouterOS-Optionen ein (siehe unten) +5. **Internet-Zugang** – WAN-Schnittstelle, DHCP oder feste IP, NAT +6. **Heimnetzwerk (DHCP)** – Bridge, IP-Bereich, DHCP-Server, DNS +7. **VLANs** *(optional)* – zusätzliche, getrennte Netzwerke (z. B. Gäste, IoT) +8. **WLAN** *(übersprungen, wenn nicht vorhanden – oder bewusst abwählbar, z. B. bei einem reinen Switch)* +9. **Firewall** – sichere Basisregeln, optionale Portfreigaben +10. **Zusammenfassung** – alle geplanten Änderungen im Klartext, automatisches Backup auf dem Gerät vor dem Anwenden, **PDF-Export** mit allen Zugangsdaten inkl. WLAN-QR-Code zum Ausdrucken/Aufbewahren +11. **RouterOS-Update** *(optional)* – prüft auf eine neuere RouterOS-Version und kann sie mit deutlicher Warnung starten Nichts wird am Gerät verändert, bevor der Nutzer in der Zusammenfassung ausdrücklich auf „Jetzt einrichten“ klickt. +### Vorhandene Netzwerke (IST-Zustand-Analyse) + +Bei einem bereits konfigurierten Bestandsgerät liest der dritte Schritt automatisch aus, was dort schon eingerichtet ist, und zeichnet es als Diagramm: jeder Knoten ist eine Bridge, ein VLAN, eine IP-Adresse, ein DHCP-Server, ein WLAN oder der Internet-Zugang. Ein Klick auf einen Knoten hebt seinen kompletten Weg („Hops") bis zum Internet-Zugang hervor. Rein informativ — verändert nichts am Gerät und fließt nicht in die vom Assistenten geplante Konfiguration ein. Bei einem werksneuen Gerät ohne bestehende Konfiguration erscheint statt der Grafik nur ein kurzer Hinweis. + ### Experten-Modus -Wer RouterOS kennt, kann im dritten Schritt den Experten-Modus wählen. Die Schritte 4–8 zeigen dann zusätzlich (Laien-Modus bleibt exakt wie zuvor, Defaults entsprechen dem bisherigen Verhalten): +Wer RouterOS kennt, kann im vierten Schritt den Experten-Modus wählen. Die Schritte 5–9 zeigen dann zusätzlich (Laien-Modus bleibt exakt wie zuvor, Defaults entsprechen dem bisherigen Verhalten): - **Internet-Zugang:** DHCP-Standardroute/-DNS an/aus, feste MTU, NAT nur für ein bestimmtes Subnetz - **Heimnetzwerk:** DHCP-Lease-Zeit, Domainname, NTP-Server @@ -98,7 +103,7 @@ src/ flowchart TB subgraph App["MikrotikInstaller.App (WPF, MVVM)"] MainVM["MainViewModel
Wizard-Navigation"] - Steps["Step-ViewModels
Connection - DeviceOverview - ModeSelection -
Wan - Lan - Vlan - Wlan - Firewall - Summary - Update"] + Steps["Step-ViewModels
Connection - DeviceOverview - NetworkAnalysis - ModeSelection -
Wan - Lan - Vlan - Wlan - Firewall - Summary - Update"] Session["WizardSession
geteilter Zustand über alle Schritte"] MainVM --> Steps --> Session end @@ -137,6 +142,21 @@ Verbindungsaufbau läuft immer über `RouterOsClientFactory`: REST-API zuerst, b Der `ModeSelectionStepViewModel`-Schritt setzt lediglich `WizardSession.IsExpertMode` (bool). Jeder folgende Step-ViewModel liest dieses Flag als Passthrough-Property; die zugehörige View blendet damit zusätzliche Eingabefelder ein oder aus (`Visibility`-Binding auf denselben `BoolToVisibilityConverter`, der auch sonst im Wizard verwendet wird). Es gibt keine zweite Steps-Liste und keinen separaten Codepfad — bei nicht gesetzten Experten-Feldern (Default) erzeugen die Configurators exakt dieselben RouterOS-Befehle wie im reinen Laien-Modus. +### IST-Zustand-Analyse + +```mermaid +flowchart LR + Service["NetworkAnalysisService
Core/Analysis"] + Facts["Existing*-Records
Bridge-Ports, VLANs, IP-Adressen,
DHCP-Server, Routen, WLANs"] + StepVM["NetworkAnalysisStepViewModel
App"] + Graph["TopologyNodeViewModel / TopologyConnectionViewModel
Spalten-Layout, IsHighlighted"] + Editor["nodify:NodifyEditor
Klick -> SelectedItem -> Pfad-Hervorhebung"] + + Service --> Facts --> StepVM --> Graph --> Editor +``` + +`NetworkAnalysisService` fragt (fehlertolerant pro Endpunkt) `/interface/bridge/port`, `/interface/vlan`, `/ip/address`, `/ip/pool`, `/ip/dhcp-server`, `/ip/route` und `/interface/wireless` ab und liefert reine Fakten — keine Positions-/Grafik-Konzepte, Core bleibt UI-frei. Der Step-ViewModel (App) baut daraus einen Baum: jeder Knoten hat höchstens einen `ParentNodeId` (Bridge-Port → Bridge, VLAN → Eltern-Interface, IP/DHCP → ihr Interface, WAN-Interface → synthetischer „Internet"-Knoten anhand der Standardroute). Das macht Pfad-Hervorhebung trivial (Eltern-Kette hochlaufen) und ein eigenes Auto-Layout überflüssig (Spalte = Tiefe im Baum). Die Grafik selbst nutzt [Nodify](https://github.com/miroiu/nodify) (reines, abhängigkeitsfreies WPF-Steuerelement für MVVM-Node-Editoren) — Klicks laufen über dessen eingebautes `SelectedItem`-Binding, nicht über eigene Maus-Behandlung. + ### Datenstruktur Die wichtigsten Records, die während eines Assistenten-Durchlaufs entstehen und durch `WizardSession` zusammengehalten werden: @@ -328,6 +348,7 @@ classDiagram - [WPF-UI](https://github.com/lepoco/wpfui) – modernes Fluent-Design für WPF - [CommunityToolkit.Mvvm](https://github.com/CommunityToolkit/dotnet) – MVVM-Grundgerüst +- [Nodify](https://github.com/miroiu/nodify) – anklickbare Netzwerk-Grafik im Schritt „Vorhandene Netzwerke" - [PDFsharp](https://github.com/empira/PDFsharp) – PDF-Erzeugung - [QRCoder](https://github.com/codebude/QRCoder) – WLAN-QR-Code @@ -343,6 +364,7 @@ Die Weiterentwicklung wird als Milestones mit zugehörigen Issues im internen Gi | **v1.1 – Release-Housekeeping** | `v1.0.0`-Tag-Strategie klären, Copyright-Name in `LICENSE` bestätigen, Trennung Gitea (laufendes Dev) / GitHub (nur Releases) wiederherstellen | | **v1.2 – Eingabevalidierung** | Rest von Phase 7: Live-Fehlermeldungen bei ungültigen Eingaben (z. B. IP-/Subnetz-Format) direkt im jeweiligen Wizard-Schritt | | **v1.3 – SFTP-Backup-Download** | Backup-Download aufs PC per SFTP nachrüsten (bisher liegt das Backup nur auf dem Gerät selbst) | +| **IST-Zustand-Analyse** | Route-zu-Interface-Zuordnung und Gesamt-Layout der Netzwerk-Grafik gegen ein echtes Bestandsgerät verifizieren (Route→Interface-Auflösung ist derzeit best-effort, RouterOS-versionsabhängig) | | **CI/CD – Gitea-Actions-Runner** | Runner registrieren und `.gitea/workflows/build.yml` erstmals scharf testen | ## Lizenz