From 76dced8a13ddd76b0b9a8cea9bec328ee2efdfc4 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 13 May 2026 15:00:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at May 13 15:00:03. --- .../20260513/20260513150001-Binary.backup | Bin 0 -> 379738 bytes MikroNUC/20260513/20260513150001-Config.rsc | 4778 +++++++++++++++++ .../20260513/20260513150001-Diff-Config.rsc | 4 + 3 files changed, 4782 insertions(+) create mode 100644 MikroNUC/20260513/20260513150001-Binary.backup create mode 100644 MikroNUC/20260513/20260513150001-Config.rsc create mode 100644 MikroNUC/history/20260513/20260513150001-Diff-Config.rsc diff --git a/MikroNUC/20260513/20260513150001-Binary.backup b/MikroNUC/20260513/20260513150001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8698646831edfe51a260ebbdccc050eddeeb1bb9 GIT binary patch literal 379738 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�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%0D>qr-*O130TTNA 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 DQgX1K literal 0 HcmV?d00001 diff --git a/MikroNUC/20260513/20260513150001-Config.rsc b/MikroNUC/20260513/20260513150001-Config.rsc new file mode 100644 index 0000000..dade35a --- /dev/null +++ b/MikroNUC/20260513/20260513150001-Config.rsc @@ -0,0 +1,4778 @@ +# 2026-05-13 15: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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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 require-peer-certificate=yes +/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-store=system +/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-05-07 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/20260513/20260513150001-Diff-Config.rsc b/MikroNUC/history/20260513/20260513150001-Diff-Config.rsc new file mode 100644 index 0000000..e4a44ab --- /dev/null +++ b/MikroNUC/history/20260513/20260513150001-Diff-Config.rsc @@ -0,0 +1,4 @@ +4620c4620 +< enabled=yes require-peer-certificate=yes +--- +> enabled=yes upgrade-policy=require-same-version -- 2.52.0