TP10: Global-Scope-Fix für cfDdnsToken im DDNS-Updater (RouterOS 7.24 Skript-Scope vs CLI-Scope)
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user