From 170cdb9320074621336982cc219cc455cc88ffbb Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 1 May 2026 05:00:04 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at May 01 05:00:04. --- .../20260501/20260501050002-Binary.backup | Bin 0 -> 380889 bytes MikroNUC/20260501/20260501050002-Config.rsc | 4733 +++++++++++++++++ .../20260501/20260501050002-Diff-Config.rsc | 292 + 3 files changed, 5025 insertions(+) create mode 100644 MikroNUC/20260501/20260501050002-Binary.backup create mode 100644 MikroNUC/20260501/20260501050002-Config.rsc create mode 100644 MikroNUC/history/20260501/20260501050002-Diff-Config.rsc diff --git a/MikroNUC/20260501/20260501050002-Binary.backup b/MikroNUC/20260501/20260501050002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3f09e20cd9e170bca2ac49e0809a189b09db1fad GIT binary patch literal 380889 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�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 fnDg`i8HY`STn93nJJ%o?$RykSu`TNn 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 Kru=^Xx#H^WZV^`i literal 0 HcmV?d00001 diff --git a/MikroNUC/20260501/20260501050002-Config.rsc b/MikroNUC/20260501/20260501050002-Config.rsc new file mode 100644 index 0000000..3e23f7f --- /dev/null +++ b/MikroNUC/20260501/20260501050002-Config.rsc @@ -0,0 +1,4733 @@ +# 2026-05-01 05:00:02 by RouterOS 7.22.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=Bridge-DOC +add name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no name=ether2 +/interface veth +add address=172.18.20.6/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ + gateway=172.18.20.5 gateway6="" name=docker-xray-vless-veth +add address=10.10.10.10/24 container-mac-address=5C:26:FE:05:6F:12 dhcp=no \ + gateway=10.10.10.1 gateway6="" mac-address=5C:26:FE:05:6F:11 name=veth1 +/caps-man datapath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=xs-DataPath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=DataPath +/caps-man security +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=xs-Sec +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=WPA2 +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/disk +add slot=tmpfs tmpfs-max-size=715827882 type=tmpfs +/interface list +add include=dynamic,static name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=P1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=test owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#:local ScriptName [ :jobname ];\r\ + \n:local expSrc;\r\ + \n:local FileName;\r\ + \n:local FilePath;\r\ + \n:local DirPath \"tmpfs/\";\r\ + \n:global WaitForFile;\r\ + \n:global IfThenElse;\r\ + \n\r\ + \n:foreach Script in=([ /system/script find where name~\"Amster-GlobalConf\ + *\" ]) do={\r\ + \n:local ScriptVal [ /system/script/get \$Script ];\r\ + \n\r\ + \n:local expName [ (\$ScriptVal->\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n \r\ + \n:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs true;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (!(((\$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 \r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix \"\";\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\r\ + \n \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/347/81bfb1ca\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 04:45:02 01.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global ExitError;\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 Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$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\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\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\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\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\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: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: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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\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 :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\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 \$LogPrint 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 \$LogPrint 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 \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint 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 \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\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 GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$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 \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' 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 :global LogPrint;\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 \$LogPrint 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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\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 (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\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 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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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 MiniDateTimeStamp do={\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {: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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\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 :global LogPrint;\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 \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint 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 \$LogPrint 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 \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint 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 \$LogPrint 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 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 [ :len\ + \_\$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 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 LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint 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 \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 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: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: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 LogPrint;\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 \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\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 \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', 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: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: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:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\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 \$LogPrint 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: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: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: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:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\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:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\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 #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\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 :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\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 \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\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 ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\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 \"Setup Global Environment for scripts\";\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#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\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# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\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} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\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\r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\r\ + \n#/usb1/mikro_bak_rsa.pub" +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 FwAddrLists;\r\ + \n :global FwAddrListTimeOut;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHuge;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n\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 :if ([ :len [ /log/find where topics=({\"script\"; \"warning\"}) \\\r\ + \n message=(\"\\\$LogPrint: The message is already in log, scripting \ + subsystem may have crashed before!\") ] ] > 0) do={\r\ + \n :log warning (\$ScriptName . \" Scripting subsystem may have crashed\ + , possibly caused by us. Delaying!\");\r\ + \n :delay 5m;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n\r\ + \n :foreach FwListName,FwList in=\$FwAddrLists do={\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\r\ + \n :foreach List in=\$FwList do={\r\ + \n :local CheckCertificate false;\r\ + \n :local Data false;\r\ + \n :local TimeOut [ \$EitherOr [ :totime (\$List->\"timeout\") ] \$Fw\ + AddrListTimeOut ];\r\ + \n\r\ + \n :if ([ :len (\$List->\"cert\") ] > 0) do={\r\ + \n :set CheckCertificate true;\r\ + \n :if ([ \$CertificateAvailable (\$List->\"cert\") \"fetch\" ] = f\ + alse) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certif\ + icate (\" . \$FwListName . \\\r\ + \n \" / \" . \$List->\"url\" . \") failed, trying anyway.\");\ + \r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHuge \$ScriptName (\$List->\"url\")\ + \_\$CheckCertificate ] ];\r\ + \n :if (\$Data = false) do={\r\ + \n :if (\$I < 5) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Failed downloading for li\ + st '\" . \$FwListName . \\\r\ + \n \"', \" . \$I . \". try from: \" . \$List->\"url\");\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\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 \$LogPrint warning \$ScriptName (\"Failed downloading for list '\ + \" . \$FwListName . \\\r\ + \n \"' from: \" . \$List->\"url\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Downloaded \" . [ \$HumanReadab\ + leNum [ :len \$Data ] 1024 ] . \\\r\ + \n \"B for list '\" . \$FwListName . \"' from: \" . \$List->\"u\ + rl\");\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Li\ + ne ] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"\ + cidr\") ];\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 \$C\ + IDR ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\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 :error true;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\")\ + \_do={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\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=\$FwListName 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 debug (\$ScriptName . \" Renewing IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' 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 debug (\$ScriptName . \" Removing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\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=\$FwListName 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 debug (\$ScriptName . \" Renewing IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' 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 debug (\$ScriptName . \" Removing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName .\".\");\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 debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv4 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$FwListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed to add IPv4 address \ + \" . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv6 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$FwListName comment=\$Li\ + stComment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed to add IPv6 address \ + \" . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n \$LogPrint info \$ScriptName (\"list: \" . \$FwListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/app settings +set auto-update=yes disk=sata1 lan-bridge=Bridge-LAN registry-mirrors="https:/\ + /reg.vados.ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man manager +# bad package path +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes package-path=/tmpfs/capsman-packages +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=Bridge-LAN +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store=fetch crl-download=yes crl-use=yes +/container config +set layer-dir=/sata1 registry-url=https://reg.vados.ru tmpdir=/ramstorage \ + username=amster-dev +/container envs +add key=ENV list=carkeeperbot_envs value=/root/.ashrc +add key=PATH list=carkeeperbot_envs value=\ + /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +add key=PORT list=carkeeperbot_envs value="\${SSH_PORT}" +add key=SSH_PORT list=carkeeperbot_envs value=8222 +/container mounts +add dst=/app list=carkeeper_app src=/sata1/carkeeper/app +add dst=/configs list=carkeeper_configs src=/sata1/carkeeper/configs +add dst=/root/.ashrc list=carkeeper_configs/.profile src=\ + /sata1/carkeeper/configs/.profile +add dst=/etc/php82/php.ini list=carkeeper_configs/php.ini src=\ + /sata1/carkeeper/configs/php.ini +add dst=/etc/ssh/sshd_config list=carkeeper_configs/sshd_config src=\ + /sata1/carkeeper/configs/sshd_config +add dst=/scripts list=carkeeper_scripts src=/sata1/carkeeper/scripts +add dst=/var/sync list=carkeeper_sync src=/sata1/carkeeper/sync +add dst=/var/tmp list=carkeeper_tmp src=/sata1/carkeeper/tmp +/interface bridge port +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-DOC interface=veth1 +add bridge=Bridge-LAN interface=LAN +add bridge=Bridge-LAN interface=dynamic +/ipv6 settings +set disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=LAN internet-interface-list=LAN lan-interface-list=\ + LAN wan-interface-list=LAN +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.10.10.1/24 disabled=yes interface=Bridge-DOC network=\ + 10.10.10.0 +add address=172.18.20.5/30 disabled=yes interface=docker-xray-vless-veth \ + network=172.18.20.4 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=Bridge-LAN \ + lease-script=lease-script lease-time=10m name=nucDHCP server-address=\ + 10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.81 verify-doh-cert=yes +/ip firewall filter +add action=accept chain=input +add action=accept chain=output +add action=accept chain=forward comment="Comment of the rule" disabled=yes +/ip firewall mangle +# docker-xray-vless-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-xray-vless-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +/ip firewall nat +# docker-xray-vless-veth not ready +add action=masquerade chain=srcnat out-interface=docker-xray-vless-veth +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add disabled=no dst-address=0.0.0.0/0 gateway=10.30.30.81 routing-table=main +/ip service +set ftp disabled=yes +set www disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api disabled=yes +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both password-authentication=no \ + publickey-authentication-options=verify-required strong-crypto=yes +/ip upnp +set allow-disable-external-interface=yes enabled=yes +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +/system scheduler +add comment="Setup Global Environment for scripts" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" interval=30s name=mod/AM-TG-Bot on-event=\ + "/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-30 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool netwatch +add disabled=yes down-script=\ + ":local msg \"Host MikroYellow is DOWN\";\r\ + \n\$TGSendMessage \$msg;" host=10.30.30.86 http-codes="" interval=10s \ + test-script="" type=simple up-script=\ + ":global TGSendMessage;\r\ + \n\$TGSendMessage \"Host MikroYellow is UP\";" +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260501/20260501050002-Diff-Config.rsc b/MikroNUC/history/20260501/20260501050002-Diff-Config.rsc new file mode 100644 index 0000000..0890a7d --- /dev/null +++ b/MikroNUC/history/20260501/20260501050002-Diff-Config.rsc @@ -0,0 +1,292 @@ +817c817 +< \n:global CommitId \"main/347/81bfb1ca\";\r\ +--- +> \n:global CommitId \"main/324/d193fd99\";\r\ +820c820 +< r: root, in 04:45:02 01.05.2026.\";\r\ +--- +> r: root, in 01:00:02 01.05.2026.\";\r\ +3393d3392 +< \n#\r\ +4276,4556d4274 +< \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 FwAddrLists;\r\ +< \n :global FwAddrListTimeOut;\r\ +< \n\r\ +< \n :global CertificateAvailable;\r\ +< \n :global EitherOr;\r\ +< \n :global FetchHuge;\r\ +< \n :global HumanReadableNum;\r\ +< \n :global IfThenElse;\r\ +< \n :global LogPrint;\r\ +< \n\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 :if ([ :len [ /log/find where topics=({\"script\"; \"warning\"}) \\\r\ +< \n message=(\"\\\$LogPrint: The message is already in log, scripting \ +< subsystem may have crashed before!\") ] ] > 0) do={\r\ +< \n :log warning (\$ScriptName . \" Scripting subsystem may have crashed\ +< , possibly caused by us. Delaying!\");\r\ +< \n :delay 5m;\r\ +< \n }\r\ +< \n\r\ +< \n :local ListComment (\"managed by \" . \$ScriptName);\r\ +< \n\r\ +< \n :foreach FwListName,FwList in=\$FwAddrLists do={\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\r\ +< \n :foreach List in=\$FwList do={\r\ +< \n :local CheckCertificate false;\r\ +< \n :local Data false;\r\ +< \n :local TimeOut [ \$EitherOr [ :totime (\$List->\"timeout\") ] \$Fw\ +< AddrListTimeOut ];\r\ +< \n\r\ +< \n :if ([ :len (\$List->\"cert\") ] > 0) do={\r\ +< \n :set CheckCertificate true;\r\ +< \n :if ([ \$CertificateAvailable (\$List->\"cert\") \"fetch\" ] = f\ +< alse) do={\r\ +< \n \$LogPrint warning \$ScriptName (\"Downloading required certif\ +< icate (\" . \$FwListName . \\\r\ +< \n \" / \" . \$List->\"url\" . \") failed, trying anyway.\");\ +< \r\ +< \n }\r\ +< \n }\r\ +< \n\r\ +< \n :for I from=1 to=5 do={\r\ +< \n :if (\$Data = false) do={\r\ +< \n :set Data [ :tolf [ \$FetchHuge \$ScriptName (\$List->\"url\")\ +< \_\$CheckCertificate ] ];\r\ +< \n :if (\$Data = false) do={\r\ +< \n :if (\$I < 5) do={\r\ +< \n \$LogPrint debug \$ScriptName (\"Failed downloading for li\ +< st '\" . \$FwListName . \\\r\ +< \n \"', \" . \$I . \". try from: \" . \$List->\"url\");\r\ +< \n :delay ((\$I * \$I) . \"s\");\r\ +< \n }\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 \$LogPrint warning \$ScriptName (\"Failed downloading for list '\ +< \" . \$FwListName . \\\r\ +< \n \"' from: \" . \$List->\"url\");\r\ +< \n } else={\r\ +< \n \$LogPrint debug \$ScriptName (\"Downloaded \" . [ \$HumanReadab\ +< leNum [ :len \$Data ] 1024 ] . \\\r\ +< \n \"B for list '\" . \$FwListName . \"' from: \" . \$List->\"u\ +< rl\");\r\ +< \n }\r\ +< \n\r\ +< \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv \ +< options=dsv.plain ] do={\r\ +< \n :set Line (\$Line->0);\r\ +< \n :local Address;\r\ +< \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Li\ +< ne ] - 1) ] = \"}\") do={\r\ +< \n :do {\r\ +< \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"\ +< cidr\") ];\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 \$C\ +< IDR ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ +< \n }\r\ +< \n :set Branch [ \$GetBranch \$Address ];\r\ +< \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ +< \n :error true;\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 :error true;\r\ +< \n }\r\ +< \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\")\ +< \_do={\r\ +< \n :set Branch [ \$GetBranch \$Address ];\r\ +< \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ +< \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ +< \n :error true;\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=\$FwListName 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 debug (\$ScriptName . \" Renewing IPv4 address \" . \$Addre\ +< ss . \\\r\ +< \n \" in list '\" . \$FwListName . \"' 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 debug (\$ScriptName . \" Removing IPv4 address \" . \$Add\ +< ress . \\\r\ +< \n \" from list '\" . \$FwListName . \".\");\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=\$FwListName 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 debug (\$ScriptName . \" Renewing IPv6 address \" . \$Addre\ +< ss . \\\r\ +< \n \" in list '\" . \$FwListName . \"' 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 debug (\$ScriptName . \" Removing IPv6 address \" . \$Add\ +< ress . \\\r\ +< \n \" from list '\" . \$FwListName .\".\");\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 debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ +< \r\ +< \n :foreach Address,Timeout in=\$Branch do={\r\ +< \n :log debug (\$ScriptName . \" Adding IPv4 address \" . \$Address\ +< \_. \\\r\ +< \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ +< .\");\r\ +< \n :onerror Err {\r\ +< \n /ip/firewall/address-list/add list=\$FwListName comment=\$List\ +< Comment \\\r\ +< \n address=\$Address timeout=\$Timeout;\r\ +< \n :set CntAdd (\$CntAdd + 1);\r\ +< \n } do={\r\ +< \n \$LogPrint warning \$ScriptName (\"Failed to add IPv4 address \ +< \" . \$Address . \\\r\ +< \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ +< \n }\r\ +< \n }\r\ +< \n }\r\ +< \n\r\ +< \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ +< \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ +< \r\ +< \n :foreach Address,Timeout in=\$Branch do={\r\ +< \n :log debug (\$ScriptName . \" Adding IPv6 address \" . \$Address\ +< \_. \\\r\ +< \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ +< .\");\r\ +< \n :onerror Err {\r\ +< \n /ipv6/firewall/address-list/add list=\$FwListName comment=\$Li\ +< stComment \\\r\ +< \n address=\$Address timeout=\$Timeout;\r\ +< \n :set CntAdd (\$CntAdd + 1);\r\ +< \n } do={\r\ +< \n \$LogPrint warning \$ScriptName (\"Failed to add IPv6 address \ +< \" . \$Address . \\\r\ +< \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ +< \n }\r\ +< \n }\r\ +< \n }\r\ +< \n\r\ +< \n \$LogPrint info \$ScriptName (\"list: \" . \$FwListName . \\\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\ -- 2.52.0