forked from kay/RouterOS
Firewall-NAT/Filter-Regeln beim Wizard-Apply idempotent machen
Wiederholter Wizard-Lauf gegen einen bereits konfigurierten Router hat bisher jedes Mal dieselben NAT-/Filter-Regeln erneut angelegt (RouterOS lehnt Duplikate hier nicht ab). SetupViewModel.apply holt jetzt einmalig eine Live-Momentaufnahme der bestehenden Regeln und überspringt geplante .add-Befehle mit identischem Argument-Set (ohne das rein schreibseitige place-before). Live bestätigt: zweimaliger Wizard-Lauf, Regelanzahl blieb beim zweiten Mal unverändert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+22
-8
@@ -1329,14 +1329,28 @@ Claude-Memory `future-language-support.md` für Details.
|
||||
Peer "Keepalive", Scheduler "Intervall", Netwatch "Prüf-Intervall".
|
||||
Optional auch für den Geräte-Tab, falls dort künftig Zeitfelder
|
||||
dazukommen.
|
||||
6. **Firewall-NAT-/Filter-`add`-Befehle sind bei wiederholtem Wizard-Lauf
|
||||
weiterhin nicht idempotent** — im Gegensatz zu den bei Bug 22–24
|
||||
gefixten Menüs lässt RouterOS identische NAT-/Filter-Regeln mehrfach
|
||||
zu (kein Fehler, kein Abbruch), aber jeder erneute Wizard-Durchlauf
|
||||
häuft doppelte Regeln an. Nicht blockierend (heute so live
|
||||
beobachtet, Apply lief trotzdem durch), aber auf Dauer Regel-Bloat —
|
||||
bei Gelegenheit auf "vorhandene identische Regel überspringen"
|
||||
umstellen.
|
||||
6. ~~Firewall-NAT-/Filter-`add`-Befehle sind bei wiederholtem Wizard-Lauf
|
||||
weiterhin nicht idempotent~~ — behoben (2026-09-16): im Gegensatz zu den bei Bug 22–24
|
||||
gefixten Menüs (dort per `.set`-Retry auf einem eindeutigen Feld wie
|
||||
`name`/`interface` gelöst) haben Firewall-Filter/NAT-Regeln kein
|
||||
eindeutiges Identitätsfeld — "dieselbe Regel" heißt hier "identisches
|
||||
Argument-Set". `SetupViewModel.apply(credentials:)` holt deshalb
|
||||
einmalig (nicht pro Befehl) eine Live-Momentaufnahme der bestehenden
|
||||
`/ip firewall filter`- und `/ip firewall nat`-Regeln
|
||||
(`connectionService.fetchMenuItems`), und `isDuplicateFirewallRule`
|
||||
vergleicht jeden geplanten `.add`-Befehl (ohne das rein schreibseitige
|
||||
`"place-before"`-Argument, das nie ein gespeichertes RouterOS-Feld
|
||||
ist) gegen diese Momentaufnahme — bei Treffer wird der Befehl
|
||||
übersprungen und im Ablauf-Log als "bereits vorhanden, übersprungen"
|
||||
vermerkt statt erneut ausgeführt. Einmalige Momentaufnahme statt
|
||||
Nachfrage pro Befehl, damit in derselben Wizard-Ausführung neu
|
||||
hinzugefügte Regeln (z.B. eine zweite Isolationsregel) nicht
|
||||
versehentlich gegen sich selbst als Duplikat erkannt werden, aber
|
||||
Regeln aus einem früheren Wizard-Lauf trotzdem erkannt werden.
|
||||
Live bestätigt: kompletter Wizard mit aktivierter Firewall-Sektion
|
||||
zweimal hintereinander gegen denselben Router angewendet, Filter-/
|
||||
NAT-Regelanzahl blieb beim zweiten Durchlauf unverändert
|
||||
("passt, anzahlen ändern sich nicht").
|
||||
7. ~~`.id`-Positions-Überlagerung (`fetchMenuItems`) auf weitere Menüs
|
||||
prüfen~~ — am 2026-09-16 live an `/ip address`/`/ip route`/erneut
|
||||
`/ip dhcp-server lease` geprüft, keine erneute Fehlzuordnung
|
||||
|
||||
Reference in New Issue
Block a user