diff --git a/RouterOSAssistant/Core/Models/RouterOSSchemaCatalog.swift b/RouterOSAssistant/Core/Models/RouterOSSchemaCatalog.swift index f43a05c..1a68d84 100644 --- a/RouterOSAssistant/Core/Models/RouterOSSchemaCatalog.swift +++ b/RouterOSAssistant/Core/Models/RouterOSSchemaCatalog.swift @@ -658,17 +658,32 @@ enum RouterOSSchemaCatalog { menuPath: "/system ntp client", restPath: "system/ntp/client", category: .system, displayName: "Zeitserver (NTP)", summary: "Hält die Router-Uhr über einen Zeitserver synchron.", - explanation: "", + explanation: "Die Server-Liste selbst liegt in einem eigenen Menü (\"NTP-Zeitserver-Liste\") — hier nur Ein/Aus und Modus.", warning: "Falsche Systemzeit kann Zertifikatsprüfungen (HTTPS/REST) und Log-Zeitstempel durcheinanderbringen.", fields: [ RouterOSFieldSchema(key: "enabled", label: "Aktiviert", kind: .bool, help: "Zeitsynchronisation ein-/ausschalten.", defaultValue: "yes"), - RouterOSFieldSchema(key: "servers", label: "Zeitserver", kind: .text, - help: "Ein oder mehrere Server, kommagetrennt, z.B. pool.ntp.org.") + RouterOSFieldSchema(key: "mode", label: "Modus", kind: .enumPick(options: [ + "unicast", "broadcast", "multicast", "manycast" + ]), help: "Fast immer \"unicast\" (direkte Anfrage an feste Server).", defaultValue: "unicast") ], - listColumns: ["servers"], + listColumns: ["enabled", "mode"], isSingleton: true ), + RouterOSMenuSchema( + menuPath: "/system ntp client servers", restPath: "system/ntp/client/servers", category: .system, + displayName: "NTP-Zeitserver-Liste", + summary: "Die Zeitserver, die der Client abfragt.", + explanation: "\"servers\" ist bei RouterOS 7.x kein Feld am NTP-Client selbst, sondern eine eigene Liste — jeder Server ist ein eigener Eintrag hier (statt kommagetrennt in einem Textfeld).", + fields: [ + RouterOSFieldSchema(key: "address", label: "Adresse", kind: .text, + help: "Hostname oder IP eines Zeitservers, z.B. pool.ntp.org.", required: true), + RouterOSFieldSchema(key: "disabled", label: "Deaktiviert", kind: .bool, + help: "Diesen Server deaktivieren, ohne ihn zu löschen.", defaultValue: "no"), + RouterOSFieldSchema(key: "comment", label: "Kommentar", kind: .text, help: "Nur zur eigenen Wiedererkennung.") + ], + listColumns: ["address", "disabled"] + ), generic("/system logging", "system/logging", .system, "Protokollierung", "Was der Router mitschreibt und wohin (Speicher, Datei, Remote-Syslog, E-Mail).", "Besteht aus \"rules\" (was protokolliert wird) und \"actions\" (wohin) — hier generischer Zugriff, verwandte Teile über \"Eigener Menüpfad\" (z.B. \"/system logging action\")."), diff --git a/found.md b/found.md new file mode 100644 index 0000000..bb27132 --- /dev/null +++ b/found.md @@ -0,0 +1,21 @@ +# Fundzettel + +Notizzettel für Feedback/Funde des Users. Neue Einträge unten anhängen, Status pflegen. + +**Status:** `offen` | `postponed` | `fixed` + +--- + +## 2026-09-16 + +### 1. NTP Server bricht mit Error HTTP 400 ab +**Status:** fixed (live bestätigt) + +Ursache 1 (behoben): Experte-Schema PATCHte `servers` als kommagetrenntes Textfeld direkt auf `/system/ntp/client` — Feld existiert dort in RouterOS 7.x nicht, Server liegen in eigener Liste `/system ntp client servers`. Schema aufgeteilt: Singleton-Menü (enabled/mode) bleibt, neues Listen-Menü `/system ntp client servers` (Feld `address`) dazu. + +Ursache 2 (behoben): Live-Test meldete beim Anlegen eines Server-Eintrags `HTTP 400: unknown parameter enabled` — Listen-Einträge in RouterOS nutzen durchgängig `disabled` (nicht `enabled`) zum Ein-/Ausschalten, wie der Rest des Schemas es auch macht. Feld in `RouterOSSchemaCatalog.swift` von `enabled`/"yes" auf `disabled`/"no" korrigiert. Build grün, noch nicht erneut live getestet. + +### 2. Interfaces-Ansicht zu unübersichtlich +**Status:** offen + +Interfaces-Einträge sehr umfangreich beim Öffnen. Zweispaltige Ansicht gewünscht, um Scrollen zu reduzieren.