From f3bcd1f0df48997a862411f46610d35098a82852 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 5 Jun 2026 00:00:35 +0300 Subject: [PATCH] Backup for MikroGig created successfully at Jun 05 00:00:35. --- .../20260605/20260605000031-Binary.backup | Bin 0 -> 164162 bytes MikroGig/20260605/20260605000031-Config.rsc | 2667 +++++++++++++++++ .../20260605/20260605000031-Diff-Config.rsc | 4 + 3 files changed, 2671 insertions(+) create mode 100644 MikroGig/20260605/20260605000031-Binary.backup create mode 100644 MikroGig/20260605/20260605000031-Config.rsc create mode 100644 MikroGig/history/20260605/20260605000031-Diff-Config.rsc diff --git a/MikroGig/20260605/20260605000031-Binary.backup b/MikroGig/20260605/20260605000031-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..da17f65f27e6f0f8a126b4c62e1581144e1835a8 GIT binary patch literal 164162 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 G;_M~K;5hsM literal 0 HcmV?d00001 diff --git a/MikroGig/20260605/20260605000031-Config.rsc b/MikroGig/20260605/20260605000031-Config.rsc new file mode 100644 index 0000000..b31021c --- /dev/null +++ b/MikroGig/20260605/20260605000031-Config.rsc @@ -0,0 +1,2667 @@ +# 2026-06-05 00:00:32 by RouterOS 7.21.4 +# software id = 2961-C4ZZ +# +# model = RBD52G-5HacD2HnD +# serial number = HCX084RAVFA +/interface bridge +add name=Bridge-LAN +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wps-mode=disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wps-mode=disabled +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store=fetch crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether1 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no +/interface list member +add interface=ether1 list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan2 list=LAN +add interface=wlan1 list=LAN +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.86/24 interface=Bridge-LAN network=10.30.30.0 +/ip dns +set servers=10.30.30.81 +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no dst-address=0.0.0.0/0 gateway=10.30.30.81 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/system clock +set time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroGig +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=10.30.30.81 +add address=10.30.30.10 +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=long-term +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system script +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="Download custom Certificates By Routers Identity " \ + dont-require-permissions=no name=mod/AM-Certs-By-Ident owner=\ + mod/AM-Certs-By-Ident policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Certs-By-Ident\r\ + \n# Script comment: Download custom Certificates By Routers Identity \r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n#:local ScriptName [ :jobname ];\r\ + \n#\r\ + \n# CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n:global tmpAddCerts true; \r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n:local UrlSuffix [/system/identity/get name];\r\ + \n:local UrlDir \"certs/\";\r\ + \n:local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\");\r\ + \n\r\ + \n:log error \$CertUrl;\r\ + \n\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n:global tmpAddCerts (a);\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n:global GlobalScriptsUrl;\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n" +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com diff --git a/MikroGig/history/20260605/20260605000031-Diff-Config.rsc b/MikroGig/history/20260605/20260605000031-Diff-Config.rsc new file mode 100644 index 0000000..75e9260 --- /dev/null +++ b/MikroGig/history/20260605/20260605000031-Diff-Config.rsc @@ -0,0 +1,4 @@ +10c10 +< # channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +--- +> # channel: 2442/20-Ce/gn(17dBm), SSID: vados, local forwarding -- 2.52.0