Bug 38: NTP-Zeitserver-Feld korrigiert (HTTP 400)

/system/ntp/client hat in RouterOS 7.x kein "servers"-Feld — die Server
liegen in einer eigenen Liste /system ntp client servers. Schema in
RouterOSSchemaCatalog.swift aufgeteilt (Singleton enabled/mode + neue
Listen-Menü-Schema mit Feld "address"), zusätzlich "enabled" auf
"disabled" korrigiert (RouterOS-Konvention für Listen-Einträge).
Live gegen echten Router bestätigt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Kay
2026-09-16 19:43:59 +02:00
co-authored by Claude Sonnet 5
parent adb3a661ab
commit be04fc2fc0
2 changed files with 40 additions and 4 deletions
@@ -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\")."),
+21
View File
@@ -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.