From 98534a38afa6137b698b8fb7fc545aa0d2e4d1b0 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 02:00:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at May 05 02:00:03. --- .../20260505/20260505020001-Binary.backup | Bin 0 -> 383661 bytes MikroNUC/20260505/20260505020001-Config.rsc | 4848 +++++++++++++++++ .../20260505/20260505020001-Diff-Config.rsc | 4 + 3 files changed, 4852 insertions(+) create mode 100644 MikroNUC/20260505/20260505020001-Binary.backup create mode 100644 MikroNUC/20260505/20260505020001-Config.rsc create mode 100644 MikroNUC/history/20260505/20260505020001-Diff-Config.rsc diff --git a/MikroNUC/20260505/20260505020001-Binary.backup b/MikroNUC/20260505/20260505020001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4b7c7c26281e72f937cce91c11a781a8d5d53a97 GIT binary patch literal 383661 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

bLyL2a>eyNga3#Wmgl^DP_u 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 z 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 a0uL57MDt30Zb#flpM@wraGI-cI#y3vmPg9~ literal 0 HcmV?d00001 diff --git a/MikroNUC/20260505/20260505020001-Config.rsc b/MikroNUC/20260505/20260505020001-Config.rsc new file mode 100644 index 0000000..875a21e --- /dev/null +++ b/MikroNUC/20260505/20260505020001-Config.rsc @@ -0,0 +1,4848 @@ +# 2026-05-05 02:00:01 by RouterOS 7.22.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=Bridge-DOC +add name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no name=ether2 +/interface veth +add address=172.18.20.6/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ + gateway=172.18.20.5 gateway6="" name=docker-xray-vless-veth +add address=10.10.10.10/24 container-mac-address=5C:26:FE:05:6F:12 dhcp=no \ + gateway=10.10.10.1 gateway6="" mac-address=5C:26:FE:05:6F:11 name=veth1 +/caps-man datapath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=xs-DataPath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=DataPath +/caps-man security +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=xs-Sec +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=WPA2 +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/disk +add slot=tmpfs tmpfs-max-size=715827882 type=tmpfs +/interface list +add include=dynamic,static name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=P1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=test owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#:local ScriptName [ :jobname ];\r\ + \n:local expSrc;\r\ + \n:local FileName;\r\ + \n:local FilePath;\r\ + \n:local DirPath \"tmpfs/\";\r\ + \n:global WaitForFile;\r\ + \n:global IfThenElse;\r\ + \n\r\ + \n:foreach Script in=([ /system/script find where name~\"Amster-GlobalConf\ + *\" ]) do={\r\ + \n:local ScriptVal [ /system/script/get \$Script ];\r\ + \n\r\ + \n:local expName [ (\$ScriptVal->\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\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\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:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +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 SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\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 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 :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 } else={\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 (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\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 :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 \"\";\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 {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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/612/a9497a83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 00:40:03 05.05.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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\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 /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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n#:set FetchLargeFiles do={\r\ + \n# :local RunName [:tostr \$1];\r\ + \n# :local fetchUrl [:tostr \$2];\r\ + \n# :local fetchFile [:tostr \$3];\r\ + \n# :local CheckCert [:tostr \$4];\r\ + \n# :local fetchMode [:tostr \$5];\r\ + \n# :local fetchMethod [:tostr \$6];\r\ + \n# :local tmpName;\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-\ + without-crl\" ];\r\ + \n#\r\ + \n# :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n# :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n# :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n# :log error (\$RunName . \" Failed creating directory: \" . \$DirNam\ + e . \"!\");\r\ + \n# :return false;\r\ + \n# }\r\ + \n#\r\ + \n# :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"\ + -\" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n# :local Url (\$fetchUrl . \$fetchFile);\r\ + \n# :onerror Err {\r\ + \n# /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName\ + \_\\\r\ + \n# http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-valu\ + e;\r\ + \n# } do={\r\ + \n# :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n# \$RmFile \$FileName;\r\ + \n# }\r\ + \n# :log error (\$RunName . \" 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# :log error (\$RunName . \" 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=3\ + 2768 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## \$RmFile \$FileName;\r\ + \n# \$RmDir \$DirName;\r\ + \n# :return \$Return;\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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\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 dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\r\ + \n#\r\ + \n#root.mnuc.backuper\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n#:local FetchFile AM-DOHCert.rsc\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\r\ + \n:global MkDir;\r\ + \n\r\ + \n:local FetchFile Binary.backup\r\ + \n:local localDir \"[usb1]/scripts/\";\r\ + \n\r\ + \n\$MkDir \$localDir;\r\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\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# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\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 :local 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\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$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:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n :local ReadFile (\"tmpfs/\" .\$tmpIndex);\r\ + \n :local filebody [/file/get \$ReadFile contents];\r\ + \n:foreach fwList in=[:deserialize \$ReadFile delimiter=\"\\n\" from=dsv o\ + ptions=dsv.plain] do={\r\ + \n :log error \$fwList;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" . \ + \$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/app settings +set auto-update=yes disk=sata1 lan-bridge=Bridge-LAN registry-mirrors="https:/\ + /reg.vados.ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes package-path=/tmpfs/capsman-packages +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=Bridge-LAN +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store=fetch crl-download=yes crl-use=yes +/container config +set layer-dir=/sata1 registry-url=https://reg.vados.ru tmpdir=/ramstorage \ + username=amster-dev +/container envs +add key=ENV list=carkeeperbot_envs value=/root/.ashrc +add key=PATH list=carkeeperbot_envs value=\ + /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +add key=PORT list=carkeeperbot_envs value="\${SSH_PORT}" +add key=SSH_PORT list=carkeeperbot_envs value=8222 +/container mounts +add dst=/app list=carkeeper_app src=/sata1/carkeeper/app +add dst=/configs list=carkeeper_configs src=/sata1/carkeeper/configs +add dst=/root/.ashrc list=carkeeper_configs/.profile src=\ + /sata1/carkeeper/configs/.profile +add dst=/etc/php82/php.ini list=carkeeper_configs/php.ini src=\ + /sata1/carkeeper/configs/php.ini +add dst=/etc/ssh/sshd_config list=carkeeper_configs/sshd_config src=\ + /sata1/carkeeper/configs/sshd_config +add dst=/scripts list=carkeeper_scripts src=/sata1/carkeeper/scripts +add dst=/var/sync list=carkeeper_sync src=/sata1/carkeeper/sync +add dst=/var/tmp list=carkeeper_tmp src=/sata1/carkeeper/tmp +/interface bridge port +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-DOC interface=veth1 +add bridge=Bridge-LAN interface=LAN +add bridge=Bridge-LAN interface=dynamic +/ipv6 settings +set disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=LAN internet-interface-list=LAN lan-interface-list=\ + LAN wan-interface-list=LAN +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.10.10.1/24 disabled=yes interface=Bridge-DOC network=\ + 10.10.10.0 +add address=172.18.20.5/30 disabled=yes interface=docker-xray-vless-veth \ + network=172.18.20.4 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=Bridge-LAN \ + lease-script=lease-script lease-time=10m name=nucDHCP server-address=\ + 10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.81 verify-doh-cert=yes +/ip firewall filter +add action=accept chain=input +add action=accept chain=output +add action=accept chain=forward comment="Comment of the rule" disabled=yes +/ip firewall mangle +# docker-xray-vless-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-xray-vless-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +/ip firewall nat +# docker-xray-vless-veth not ready +add action=masquerade chain=srcnat out-interface=docker-xray-vless-veth +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add disabled=no dst-address=0.0.0.0/0 gateway=10.30.30.81 routing-table=main +/ip service +set ftp disabled=yes +set www disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api disabled=yes +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both password-authentication=no \ + publickey-authentication-options=verify-required strong-crypto=yes +/ip upnp +set allow-disable-external-interface=yes enabled=yes +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +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 +/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 +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" interval=30s name=mod/AM-TG-Bot on-event=\ + "/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-30 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool netwatch +add disabled=yes down-script=\ + ":local msg \"Host MikroYellow is DOWN\";\r\ + \n\$TGSendMessage \$msg;" host=10.30.30.86 http-codes="" interval=10s \ + test-script="" type=simple up-script=\ + ":global TGSendMessage;\r\ + \n\$TGSendMessage \"Host MikroYellow is UP\";" +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260505/20260505020001-Diff-Config.rsc b/MikroNUC/history/20260505/20260505020001-Diff-Config.rsc new file mode 100644 index 0000000..df4de26 --- /dev/null +++ b/MikroNUC/history/20260505/20260505020001-Diff-Config.rsc @@ -0,0 +1,4 @@ +382d381 +< \n \"container\";\r\ +4688a4688 +> # bad package path -- 2.52.0