From 97c0be61460847c0d05763b2a20fdd62777602c3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 13 Jun 2026 03:20:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jun 13 03:20:03. --- .../20260613/20260613032001-Binary.backup | Bin 0 -> 380432 bytes MikroNUC/20260613/20260613032001-Config.rsc | 4790 +++++++++++++++++ .../20260613/20260613032001-Diff-Config.rsc | 8 + 3 files changed, 4798 insertions(+) create mode 100644 MikroNUC/20260613/20260613032001-Binary.backup create mode 100644 MikroNUC/20260613/20260613032001-Config.rsc create mode 100644 MikroNUC/history/20260613/20260613032001-Diff-Config.rsc diff --git a/MikroNUC/20260613/20260613032001-Binary.backup b/MikroNUC/20260613/20260613032001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..5d96f1621d3f10a821e1caaa177b4334de596492 GIT binary patch literal 380432 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 dA<$6Xzzk3o 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 z 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

M|37O^urk$>{OO%A_VmE0xlq39OSc189% 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

db>t(K1*TQ+lFknz>F&pG;Vq>S5DZ_!Mh_q*Tzv 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 K56bsmxnRa5!L_Cl_I2;Enc2*!XCCL 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 V-d8j>i$n9EO`I` literal 0 HcmV?d00001 diff --git a/MikroNUC/20260613/20260613032001-Config.rsc b/MikroNUC/20260613/20260613032001-Config.rsc new file mode 100644 index 0000000..3158492 --- /dev/null +++ b/MikroNUC/20260613/20260613032001-Config.rsc @@ -0,0 +1,4790 @@ +# 2026-06-13 03:20: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\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/683/6160edd1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 11:50:03 12.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add 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-06-11 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/20260613/20260613032001-Diff-Config.rsc b/MikroNUC/history/20260613/20260613032001-Diff-Config.rsc new file mode 100644 index 0000000..4c5536c --- /dev/null +++ b/MikroNUC/history/20260613/20260613032001-Diff-Config.rsc @@ -0,0 +1,8 @@ +843c843 +< \n:global CommitId \"main/683/6160edd1\";\r\ +--- +> \n:global CommitId \"main/680/f2c803f5\";\r\ +846c846 +< r: root, in 11:50:03 12.06.2026.\";\r\ +--- +> r: root, in 21:20:03 11.06.2026.\";\r\ -- 2.52.0