From 6e2a7cfb471c2e006d939ad573335f567cb2b1b2 Mon Sep 17 00:00:00 2001 From: Christoph Emsenhuber Date: Sat, 3 Oct 2026 17:38:55 +0200 Subject: [PATCH] =?UTF-8?q?TP10:=20Global-Scope-Fix=20f=C3=BCr=20cfDdnsTok?= =?UTF-8?q?en=20im=20DDNS-Updater=20(RouterOS=207.24=20Skript-Scope=20vs?= =?UTF-8?q?=20CLI-Scope)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: :global cfDdnsToken liest im Skript-Kontext 'nothing', obwohl /system script environment cfDdnsToken gesetzt ist (53 Zeichen, live verifiziert). Fix: /system script environment get statt :global — scope-unabhängig auf ROS 7.24. Skript importiert als tp10-ddns-bf4, Trigger: DHCP-Client client1 (Lease-Event), kein stündlicher Scheduler nötig (Entscheidung 2026-10-03). Recovery-Lücke dokumentiert: GC-Template rendert kein /system script / /system scheduler — Recovery von null hätte Updater nicht. Co-Authored-By: Claude Code --- routeros/tp10-ddns-cf-updater.rsc | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/routeros/tp10-ddns-cf-updater.rsc b/routeros/tp10-ddns-cf-updater.rsc index 583c90b..5b153e3 100644 --- a/routeros/tp10-ddns-cf-updater.rsc +++ b/routeros/tp10-ddns-cf-updater.rsc @@ -29,10 +29,24 @@ :local WanDhcpName "client1" # ----------------------------------------------------------------------------- -# Token aus der globalen Variable holen (NIE im Skriptkopf) -:global cfDdnsToken -:if ([:typeof $cfDdnsToken] = "nothing") do={ - :log error "[tp10-ddns] cfDdnsToken nicht gesetzt - Abbruch" +# Token aus /system script environment holen (NIE im Skriptkopf, NIE per :global). +# Grund (2026-10-03): :global cfDdnsToken liest im Skript-Kontext "nothing", obwohl +# /system script environment cfDdnsToken gesetzt ist. CLI-Scope und Skript-Scope sind +# auf RouterOS 7.24 unterschiedlich. `/system script environment get` ist scope-unabhaengig. +:do { + :local tk "" + :local found [/system script environment find name=cfDdnsToken] + :if ([:len $found] > 0) do={ + :set tk [/system script environment get [find name=cfDdnsToken] value] + } + :if ([:typeof $tk] = "") do={ + :log error "[tp10-ddns] cfDdnsToken nicht gesetzt - Abbruch" + :error "cfDdnsToken fehlt" + } + :global cfDdnsToken + :set cfDdnsToken $tk +} on-error={ + :log error "[tp10-ddns] cfDdnsToken nicht lesbar - Abbruch" :error "cfDdnsToken fehlt" }