From a35ff1a9e55e653f068330b921890c69521fcfb5 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 01:00:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at May 07 01:00:03. --- .../20260507/20260507010001-Binary.backup | Bin 0 -> 381427 bytes MikroNUC/20260507/20260507010001-Config.rsc | 4778 +++++++++++++++++ .../20260507/20260507010001-Diff-Config.rsc | 222 + 3 files changed, 5000 insertions(+) create mode 100644 MikroNUC/20260507/20260507010001-Binary.backup create mode 100644 MikroNUC/20260507/20260507010001-Config.rsc create mode 100644 MikroNUC/history/20260507/20260507010001-Diff-Config.rsc diff --git a/MikroNUC/20260507/20260507010001-Binary.backup b/MikroNUC/20260507/20260507010001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d4d99385aafeb56f5e71187b0517ea744c1c2e40 GIT binary patch literal 381427 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 *+=(u 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%0DljRKe7-6=HgdwW`nmo_04 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 !f3DxJLL#ak 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

S3Lq$>n6k!V=mT&sv>kJ>aZW;^cGfr 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 literal 0 HcmV?d00001 diff --git a/MikroNUC/20260507/20260507010001-Config.rsc b/MikroNUC/20260507/20260507010001-Config.rsc new file mode 100644 index 0000000..4a23857 --- /dev/null +++ b/MikroNUC/20260507/20260507010001-Config.rsc @@ -0,0 +1,4778 @@ +# 2026-05-07 01: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 Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } 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 (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35: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 MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global 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 :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add 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\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 warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :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/20260507/20260507010001-Diff-Config.rsc b/MikroNUC/history/20260507/20260507010001-Diff-Config.rsc new file mode 100644 index 0000000..2ac8b85 --- /dev/null +++ b/MikroNUC/history/20260507/20260507010001-Diff-Config.rsc @@ -0,0 +1,222 @@ +440d439 +< \n:global Identity [/system/identity/get name];\r\ +442,443c441,442 +< \n:global RemoveMe true;\r\ +< \n:global RunOnce (a);\r\ +--- +> \n:global RemoveMe;\r\ +> \n:global RunOnce;\r\ +455,459c454 +< \n\r\ +< \n :local UrlSuffix \$Identity;\r\ +< \n :local UrlDir \"certs/\";\r\ +< \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ +< \r\ +--- +> \n \r\ +473,474c468,473 +< \n \r\ +< \n\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\ +482,483c481,482 +< \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ +< \_as-value;\r\ +--- +> \n /tool/fetch (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ +> ame) dst-path=\$CertFileName as-value;\r\ +486,487d484 +< \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ +< t YE\" ];\r\ +490,493d486 +< \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\ +567,568c560 +< \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ +< Certs-By-Ident\" } do={\r\ +--- +> \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ +626c618 +< \n:global Identity [/system/identity/get name];\r\ +--- +> \n:global Identity [ /system identity get name ];\r\ +633c625 +< \n:global ScriptsUrlSuffix (a);\r\ +--- +> \n:global ScriptsUrlSuffix \"\";\r\ +695,696c687,688 +< \n:global CertRenewPass (a); #{\r\ +< \n# \"\";\r\ +--- +> \n:global CertRenewPass {\r\ +> \n \"\";\r\ +699c691 +< \n#};\r\ +--- +> \n};\r\ +701,702c693,694 +< \n:global CertIssuedExportPass (a); # {\r\ +< \n# \"\";\r\ +--- +> \n:global CertIssuedExportPass {\r\ +> \n \"\";\r\ +705c697 +< \n#};\r\ +--- +> \n};\r\ +828c820 +< \n:global CommitId \"main/633/2f6d4158\";\r\ +--- +> \n:global CommitId \"main/612/a9497a83\";\r\ +831c823 +< r: root, in 14:35:03 05.05.2026.\";\r\ +--- +> r: root, in 00:40:03 05.05.2026.\";\r\ +856a849 +> \n:global GlobalEnvRemove;\r\ +858d850 +< \n:global MicroDateTimeStamp;\r\ +1692d1683 +< \n :local mikro [ :tobool \$1 ];\r\ +1711,1719c1702 +< \n :local Return;\r\ +< \n :if (\$mikro = true) do={\r\ +< \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ +< \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ +< \n } else={\r\ +< \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ +< \r\ +< \n }\r\ +< \n :return \$Return;\r\ +--- +> \n :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\r\ +2271a2255,2339 +> \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\ +2659,2663c2727,2728 +< \n } else={\r\ +< \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ +< \_changes are not available.\");\r\ +< \n\r\ +< \n }\r\ +--- +> \n } else={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ +> ws and changes are not available.\")}\r\ +2665,2668c2730,2731 +< \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ +< } else={ :global GlobalConfChanges (a); }\r\ +< \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ +< on; } else={ :global GlobalConfMigration (a); }\r\ +--- +> \n :set GlobalConfChanges;\r\ +> \n :set GlobalConfMigration;\r\ +4395a4459,4465 +> \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\ +4399c4469 +< \n# :set List (\$List->0);\r\ +--- +> \n :set List (\$List->0);\r\ +4441,4443c4511,4513 +< \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ +< um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ +< \_\$ListUrl);\r\ +--- +> \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ +> \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" . \ +> \$ListUrl);\r\ -- 2.52.0