Dauer-Editor auf Keepalive/Scheduler-Intervall/Netwatch-Intervall ausgerollt
WireGuard-Peer "Keepalive", Scheduler "Intervall" und Netwatch "Prüf-Intervall" nutzen jetzt RouterOSFieldSchema.Kind.duration statt Freitext. Netwatch-Default von "00:00:10" auf "10s" umgestellt, da DurationFieldEditor.parse nur das Suffix-Format versteht, kein HH:MM:SS. Vorher live geprüft, dass RouterOS das Suffix-Format bei allen drei Feldern akzeptiert. Live bestätigt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+14
-6
@@ -1338,12 +1338,20 @@ passenden Namen lesbar. Live bestätigt ("sieht gut aus").
|
|||||||
bestätigt (siehe oben), der Moduswechsel im Wizard noch nicht.
|
bestätigt (siehe oben), der Moduswechsel im Wizard noch nicht.
|
||||||
4. M10: WLAN-Schemas (an Gerät mit WLAN-Chip), Bonding, PPPoE-Client
|
4. M10: WLAN-Schemas (an Gerät mit WLAN-Chip), Bonding, PPPoE-Client
|
||||||
(mit echten oder Test-ISP-Zugangsdaten) noch gegen Hardware verifizieren.
|
(mit echten oder Test-ISP-Zugangsdaten) noch gegen Hardware verifizieren.
|
||||||
5. Optional, kleinere Politur: den neuen Dauer-Editor
|
5. ~~Dauer-Editor (`RouterOSFieldSchema.Kind.duration`) auch auf weitere
|
||||||
(`RouterOSFieldSchema.Kind.duration`) auch auf weitere Zeitwert-Felder
|
Zeitwert-Felder anwenden~~ — erledigt (2026-09-16): WireGuard-Peer
|
||||||
anwenden, die bisher nur Text mit Beispiel-Tooltip sind — WireGuard-
|
"Keepalive" (Label-Zusatz "(Sekunden)" entfernt, Stepper zeigt Einheit
|
||||||
Peer "Keepalive", Scheduler "Intervall", Netwatch "Prüf-Intervall".
|
selbst), Scheduler "Intervall", Netwatch "Prüf-Intervall" (Default
|
||||||
Optional auch für den Geräte-Tab, falls dort künftig Zeitfelder
|
von `"00:00:10"` auf `"10s"` umgestellt — `DurationFieldEditor.parse`
|
||||||
dazukommen.
|
versteht nur das Suffix-Format `<Zahl><d/h/m/s>` bzw. eine nackte
|
||||||
|
Sekundenzahl, kein `HH:MM:SS`; der alte Default wäre beim Öffnen
|
||||||
|
stillschweigend als "leer" geparst worden). Vor der Umstellung live
|
||||||
|
geprüft (Test-Einträge angelegt und sofort wieder entfernt): RouterOS
|
||||||
|
akzeptiert das Suffix-Format bei allen drei Feldern
|
||||||
|
(`persistent-keepalive=25s`, Scheduler-`interval=30s`,
|
||||||
|
Netwatch-`interval=30s`, jeweils im `print terse` bestätigt). Live in
|
||||||
|
der App bestätigt ("passt, live bestätigt"). Geräte-Tab hat weiterhin
|
||||||
|
keine Zeitfelder, daher nicht betroffen.
|
||||||
6. ~~Firewall-NAT-/Filter-`add`-Befehle sind bei wiederholtem Wizard-Lauf
|
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
|
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
|
gefixten Menüs (dort per `.set`-Retry auf einem eindeutigen Feld wie
|
||||||
|
|||||||
@@ -245,9 +245,9 @@ enum L10n {
|
|||||||
"Port der Gegenstelle": "Peer's Port",
|
"Port der Gegenstelle": "Peer's Port",
|
||||||
"Meist derselbe Port wie der Listen-Port der Gegenstelle, z.B. 51820.":
|
"Meist derselbe Port wie der Listen-Port der Gegenstelle, z.B. 51820.":
|
||||||
"Usually the same as the peer's listen port, e.g. 51820.",
|
"Usually the same as the peer's listen port, e.g. 51820.",
|
||||||
"Keepalive (Sekunden)": "Keepalive (seconds)",
|
"Keepalive": "Keepalive",
|
||||||
"Z.B. 25 — hält die Verbindung durch NAT/Firewalls am Leben. Wichtig bei Clients hinter NAT.":
|
"Hält die Verbindung durch NAT/Firewalls am Leben. Wichtig bei Clients hinter NAT.":
|
||||||
"E.g. 25 — keeps the connection alive through NAT/firewalls. Important for clients behind NAT.",
|
"Keeps the connection alive through NAT/firewalls. Important for clients behind NAT.",
|
||||||
"PPPoE-Client": "PPPoE Client",
|
"PPPoE-Client": "PPPoE Client",
|
||||||
"Ersetzt eine feste/DHCP-WAN-Adresse durch eine PPPoE-Einwahl beim Provider.":
|
"Ersetzt eine feste/DHCP-WAN-Adresse durch eine PPPoE-Einwahl beim Provider.":
|
||||||
"Replaces a static/DHCP WAN address with a PPPoE dial-in to the provider.",
|
"Replaces a static/DHCP WAN address with a PPPoE dial-in to the provider.",
|
||||||
@@ -481,8 +481,8 @@ enum L10n {
|
|||||||
"Startzeit": "Start Time",
|
"Startzeit": "Start Time",
|
||||||
"Z.B. 00:00:00 oder \"startup\".": "E.g. 00:00:00 or \"startup\".",
|
"Z.B. 00:00:00 oder \"startup\".": "E.g. 00:00:00 or \"startup\".",
|
||||||
"Intervall": "Interval",
|
"Intervall": "Interval",
|
||||||
"Wie oft wiederholt wird, z.B. 1d oder 01:00:00. Leer = nur einmal zur Startzeit.":
|
"Wie oft wiederholt wird. Alles auf 0 lassen = nur einmal zur Startzeit.":
|
||||||
"How often it repeats, e.g. 1d or 01:00:00. Empty = only once, at the start time.",
|
"How often it repeats. Leave everything at 0 = only once, at the start time.",
|
||||||
"Auszuführendes Skript": "Script to Run",
|
"Auszuführendes Skript": "Script to Run",
|
||||||
"Name eines zuvor unter \"Skripte\" angelegten Skripts.": "Name of a script previously created under \"Scripts\".",
|
"Name eines zuvor unter \"Skripte\" angelegten Skripts.": "Name of a script previously created under \"Scripts\".",
|
||||||
"Zeitplan inaktiv schalten, ohne ihn zu löschen.": "Turn the schedule off without deleting it.",
|
"Zeitplan inaktiv schalten, ohne ihn zu löschen.": "Turn the schedule off without deleting it.",
|
||||||
@@ -512,7 +512,7 @@ enum L10n {
|
|||||||
"IP-Adresse oder Hostname, ohne Präfix, z.B. 192.168.88.1 oder 8.8.8.8.":
|
"IP-Adresse oder Hostname, ohne Präfix, z.B. 192.168.88.1 oder 8.8.8.8.":
|
||||||
"IP address or hostname, without a prefix, e.g. 192.168.88.1 or 8.8.8.8.",
|
"IP address or hostname, without a prefix, e.g. 192.168.88.1 or 8.8.8.8.",
|
||||||
"Prüf-Intervall": "Check Interval",
|
"Prüf-Intervall": "Check Interval",
|
||||||
"Z.B. 00:00:10.": "E.g. 00:00:10.",
|
"Wie oft die Erreichbarkeit geprüft wird.": "How often reachability is checked.",
|
||||||
"Skript bei Erreichbarkeit": "Script on Reachable",
|
"Skript bei Erreichbarkeit": "Script on Reachable",
|
||||||
"Name eines Skripts unter \"Skripte\".": "Name of a script under \"Scripts\".",
|
"Name eines Skripts unter \"Skripte\".": "Name of a script under \"Scripts\".",
|
||||||
"Skript bei Nichterreichbarkeit": "Script on Unreachable",
|
"Skript bei Nichterreichbarkeit": "Script on Unreachable",
|
||||||
|
|||||||
@@ -292,8 +292,8 @@ enum RouterOSSchemaCatalog {
|
|||||||
help: "Nur nötig, wenn diese Gegenstelle selbst erreichbar sein muss (Site-to-Site), z.B. eine feste öffentliche IP oder ein DNS-Name. Bei Roadwarrior-Clients, die sich selbst melden, leer lassen."),
|
help: "Nur nötig, wenn diese Gegenstelle selbst erreichbar sein muss (Site-to-Site), z.B. eine feste öffentliche IP oder ein DNS-Name. Bei Roadwarrior-Clients, die sich selbst melden, leer lassen."),
|
||||||
RouterOSFieldSchema(key: "endpoint-port", label: "Port der Gegenstelle", kind: .text,
|
RouterOSFieldSchema(key: "endpoint-port", label: "Port der Gegenstelle", kind: .text,
|
||||||
help: "Meist derselbe Port wie der Listen-Port der Gegenstelle, z.B. 51820."),
|
help: "Meist derselbe Port wie der Listen-Port der Gegenstelle, z.B. 51820."),
|
||||||
RouterOSFieldSchema(key: "persistent-keepalive", label: "Keepalive (Sekunden)", kind: .text,
|
RouterOSFieldSchema(key: "persistent-keepalive", label: "Keepalive", kind: .duration,
|
||||||
help: "Z.B. 25 — hält die Verbindung durch NAT/Firewalls am Leben. Wichtig bei Clients hinter NAT.")
|
help: "Hält die Verbindung durch NAT/Firewalls am Leben. Wichtig bei Clients hinter NAT.")
|
||||||
],
|
],
|
||||||
listColumns: ["interface", "allowed-address"]
|
listColumns: ["interface", "allowed-address"]
|
||||||
),
|
),
|
||||||
@@ -681,8 +681,8 @@ enum RouterOSSchemaCatalog {
|
|||||||
fields: [
|
fields: [
|
||||||
RouterOSFieldSchema(key: "name", label: "Name", kind: .text, help: "Frei wählbar, z.B. taeglicher-neustart.", required: true),
|
RouterOSFieldSchema(key: "name", label: "Name", kind: .text, help: "Frei wählbar, z.B. taeglicher-neustart.", required: true),
|
||||||
RouterOSFieldSchema(key: "start-time", label: "Startzeit", kind: .text, help: "Z.B. 00:00:00 oder \"startup\"."),
|
RouterOSFieldSchema(key: "start-time", label: "Startzeit", kind: .text, help: "Z.B. 00:00:00 oder \"startup\"."),
|
||||||
RouterOSFieldSchema(key: "interval", label: "Intervall", kind: .text,
|
RouterOSFieldSchema(key: "interval", label: "Intervall", kind: .duration,
|
||||||
help: "Wie oft wiederholt wird, z.B. 1d oder 01:00:00. Leer = nur einmal zur Startzeit."),
|
help: "Wie oft wiederholt wird. Alles auf 0 lassen = nur einmal zur Startzeit."),
|
||||||
RouterOSFieldSchema(key: "on-event", label: "Auszuführendes Skript",
|
RouterOSFieldSchema(key: "on-event", label: "Auszuführendes Skript",
|
||||||
kind: .menuItemPick(menuPath: "/system script", restPath: "system/script", valueField: "name"),
|
kind: .menuItemPick(menuPath: "/system script", restPath: "system/script", valueField: "name"),
|
||||||
help: "Name eines zuvor unter \"Skripte\" angelegten Skripts."),
|
help: "Name eines zuvor unter \"Skripte\" angelegten Skripts."),
|
||||||
@@ -733,7 +733,8 @@ enum RouterOSSchemaCatalog {
|
|||||||
fields: [
|
fields: [
|
||||||
RouterOSFieldSchema(key: "host", label: "Zu überwachende Adresse", kind: .text,
|
RouterOSFieldSchema(key: "host", label: "Zu überwachende Adresse", kind: .text,
|
||||||
help: "IP-Adresse oder Hostname, ohne Präfix, z.B. 192.168.88.1 oder 8.8.8.8.", required: true),
|
help: "IP-Adresse oder Hostname, ohne Präfix, z.B. 192.168.88.1 oder 8.8.8.8.", required: true),
|
||||||
RouterOSFieldSchema(key: "interval", label: "Prüf-Intervall", kind: .text, help: "Z.B. 00:00:10.", defaultValue: "00:00:10"),
|
RouterOSFieldSchema(key: "interval", label: "Prüf-Intervall", kind: .duration,
|
||||||
|
help: "Wie oft die Erreichbarkeit geprüft wird.", defaultValue: "10s"),
|
||||||
RouterOSFieldSchema(key: "up-script", label: "Skript bei Erreichbarkeit", kind: .text,
|
RouterOSFieldSchema(key: "up-script", label: "Skript bei Erreichbarkeit", kind: .text,
|
||||||
help: "Name eines Skripts unter \"Skripte\"."),
|
help: "Name eines Skripts unter \"Skripte\"."),
|
||||||
RouterOSFieldSchema(key: "down-script", label: "Skript bei Nichterreichbarkeit", kind: .text,
|
RouterOSFieldSchema(key: "down-script", label: "Skript bei Nichterreichbarkeit", kind: .text,
|
||||||
|
|||||||
Reference in New Issue
Block a user