From 82e9e61c6f6b959f86d9252e86939cfe496683b1 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 19 Jun 2026 14:20:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jun 19 14:20:03. --- .../20260619/20260619142001-Binary.backup | Bin 0 -> 363887 bytes MikroNUC/20260619/20260619142001-Config.rsc | 4878 +++++++++++++++++ .../20260619/20260619142001-Diff-Config.rsc | 19 + 3 files changed, 4897 insertions(+) create mode 100644 MikroNUC/20260619/20260619142001-Binary.backup create mode 100644 MikroNUC/20260619/20260619142001-Config.rsc create mode 100644 MikroNUC/history/20260619/20260619142001-Diff-Config.rsc diff --git a/MikroNUC/20260619/20260619142001-Binary.backup b/MikroNUC/20260619/20260619142001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c47c648853a4b43fb9750b57491af36ac3f31f91 GIT binary patch literal 363887 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

(j@CPdNobY9}#ICoO9|`97MF?FEXa*5gs> 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

S~mp$rZq85v=hUEGx*YHx}{iK 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 >o5k1kw3yjCkkyYHx?|0l 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 Hx2suy=$3-! literal 0 HcmV?d00001 diff --git a/MikroNUC/20260619/20260619142001-Config.rsc b/MikroNUC/20260619/20260619142001-Config.rsc new file mode 100644 index 0000000..ec97040 --- /dev/null +++ b/MikroNUC/20260619/20260619142001-Config.rsc @@ -0,0 +1,4878 @@ +# 2026-06-19 14:20:01 by RouterOS 7.23.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.2/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ + gateway=172.18.20.1 gateway6="" name=docker-awg-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=ram tmpfs-max-size=100000000 type=tmpfs +add slot=tmpfs tmpfs-max-size=715827882 type=tmpfs +/interface list +add include=dynamic,static name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/iot wiliot servers +set *1 address=mqtt.us-east-2.prod.wiliot.cloud name="Wiliot US East" +/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 +/routing table +add disabled=no fib name=r_to_vpn +/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/694/a1b071a6\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:04 15.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" +add dont-require-permissions=no name=AmneziaWG owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /routing table \ + \n#add disabled=no fib name=r_to_vpn\ + \n#/ip firewall address-list\ + \n#add address=8.8.4.4 list=to_vpn\ + \n#/ip firewall address-list\ + \n#add address=10.0.0.0/8 list=RFC1918\ + \n#add address=172.16.0.0/12 list=RFC1918\ + \n#add address=192.168.0.0/16 list=RFC1918\ + \n#/interface/list/add name=WAN\ + \n#/interface/list/member/add list=WAN interface=ether1\ + \n\ + \n/ip firewall mangle\ + \nadd action=accept chain=prerouting dst-address-list=RFC1918 in-interface\ + -list=!WAN\ + \n/ip firewall mangle\ + \nadd action=mark-connection chain=prerouting connection-mark=no-mark dst-\ + address-list=to_vpn in-interface-list=!WAN \\\ + \n new-connection-mark=to-vpn-conn passthrough=yes\ + \n/ip firewall mangle\ + \nadd action=mark-routing chain=prerouting connection-mark=to-vpn-conn in-\ + interface-list=!WAN new-routing-mark=r_to_vpn \\\ + \n passthrough=yes\ + \n/ip firewall mangle\ + \nadd action=mark-connection chain=output connection-mark=no-mark \\\ + \n dst-address-list=to_vpn new-connection-mark=to-vpn-conn-local \\\ + \n passthrough=yes\ + \nadd action=mark-routing chain=output connection-mark=to-vpn-conn-local \ + \\\ + \n new-routing-mark=r_to_vpn passthrough=yes\ + \n\ + \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 +set cinny firewall-redirects=8094:80:tcp:web +set goaway container-command-lines=goaway:none:docker.io/pommee/goaway:latest +set home-assistant container-command-lines=\ + home-assistant:none:lscr.io/linuxserver/homeassistant +set n8n firewall-redirects=5678:5678:tcp:web +set nextcloud container-command-lines="db:none:docker.io/postgres:17,redis:non\ + e:docker.io/valkey/valkey:/bin/sh -c 'valkey-server --port 6379 --appendon\ + ly yes --requirepass \$VALKEY_PASSWORD',server:none:docker.io/nextcloud:ap\ + ache" +set pihole environment="pihole:FTLCONF_dns_listeningMode=all,pihole:FTLCONF_we\ + bserver_api_password=password" +set redlib firewall-redirects=8087:8080:tcp:web +set solr container-command-lines=solr:none:docker.io/solr:latest +set uptime-kuma container-command-lines=\ + uptime-kuma:none:docker.io/louislam/uptime-kuma:1 +/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=/etc/amnezia/amneziawg list=awg_conf src=/wg +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=all internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface list member +add interface=Bridge-LAN list=WAN +add interface=lo 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 +add address=172.18.20.1/30 interface=docker-awg-veth network=172.18.20.0 +/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 address-list +add address=8.8.4.4 list=to_vpn +add address=10.0.0.0/8 list=RFC1918 +add address=172.16.0.0/12 list=RFC1918 +add address=192.168.0.0/16 list=RFC1918 +/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 +add action=accept chain=prerouting dst-address-list=RFC1918 \ + in-interface-list=!WAN +add action=mark-connection chain=prerouting connection-mark=no-mark \ + dst-address-list=to_vpn in-interface-list=!WAN new-connection-mark=\ + to-vpn-conn +add action=mark-routing chain=prerouting connection-mark=to-vpn-conn \ + in-interface-list=!WAN new-routing-mark=r_to_vpn +add action=mark-connection chain=output connection-mark=no-mark \ + dst-address-list=to_vpn new-connection-mark=to-vpn-conn-local +add action=mark-routing chain=output connection-mark=to-vpn-conn-local \ + new-routing-mark=r_to_vpn +# docker-awg-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-awg-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 +# docker-awg-veth not ready +add action=masquerade chain=srcnat out-interface=docker-awg-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 check-gateway=bfd disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + 10.30.30.81 routing-table=main scope=30 target-scope=10 +add distance=1 dst-address=0.0.0.0/0 gateway=172.18.20.2 routing-table=\ + r_to_vpn +/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 enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=external +add interface=Bridge-DOC type=internal +/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 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-18 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/20260619/20260619142001-Diff-Config.rsc b/MikroNUC/history/20260619/20260619142001-Diff-Config.rsc new file mode 100644 index 0000000..c6611f7 --- /dev/null +++ b/MikroNUC/history/20260619/20260619142001-Diff-Config.rsc @@ -0,0 +1,19 @@ +29,30d28 +< add address=172.18.20.2/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ +< gateway=172.18.20.1 gateway6="" name=docker-awg-veth +64d61 +< add slot=ram tmpfs-max-size=100000000 type=tmpfs +4715d4711 +< add dst=/etc/amnezia/amneziawg list=awg_conf src=/wg +4748d4743 +< add address=172.18.20.1/30 interface=docker-awg-veth network=172.18.20.0 +4781,4783d4775 +< # docker-awg-veth not ready +< add action=change-mss chain=forward new-mss=1360 out-interface=\ +< docker-awg-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +4787,4788d4778 +< # docker-awg-veth not ready +< add action=masquerade chain=srcnat out-interface=docker-awg-veth +4798,4799d4787 +< add distance=1 dst-address=0.0.0.0/0 gateway=172.18.20.2 routing-table=\ +< r_to_vpn -- 2.52.0