From 0c6e88100e74825cf9f729693d6b9384f4f7080f Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 26 May 2026 03:20:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at May 26 03:20:03. --- .../20260526/20260526032002-Binary.backup | Bin 0 -> 380167 bytes MikroNUC/20260526/20260526032002-Config.rsc | 4790 +++++++++++++++++ .../20260526/20260526032002-Diff-Config.rsc | 8 + 3 files changed, 4798 insertions(+) create mode 100644 MikroNUC/20260526/20260526032002-Binary.backup create mode 100644 MikroNUC/20260526/20260526032002-Config.rsc create mode 100644 MikroNUC/history/20260526/20260526032002-Diff-Config.rsc diff --git a/MikroNUC/20260526/20260526032002-Binary.backup b/MikroNUC/20260526/20260526032002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3ca9f3ad2a47fc608bebc5f92c57d2f0c19830c4 GIT binary patch literal 380167 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
  • AX(6t1!hg1>NF8Ei; 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 z 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 QPU_Fh@A$7njyp+uJWmcREdT%j literal 0 HcmV?d00001 diff --git a/MikroNUC/20260526/20260526032002-Config.rsc b/MikroNUC/20260526/20260526032002-Config.rsc new file mode 100644 index 0000000..47b1804 --- /dev/null +++ b/MikroNUC/20260526/20260526032002-Config.rsc @@ -0,0 +1,4790 @@ +# 2026-05-26 03:20: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 \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/661/8d6d2114\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 25.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\r\ + \n#\r\ + \n#root.mnuc.backuper\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n#:local FetchFile AM-DOHCert.rsc\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\r\ + \n:global MkDir;\r\ + \n\r\ + \n:local FetchFile Binary.backup\r\ + \n:local localDir \"[usb1]/scripts/\";\r\ + \n\r\ + \n\$MkDir \$localDir;\r\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :local IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$Name 0 1 ] = \"\\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);}\r\ + \n}\r\ + \n\r\ + \n:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/app settings +set auto-update=yes disk=sata1 lan-bridge=Bridge-LAN registry-mirrors="https:/\ + /reg.vados.ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes require-peer-certificate=yes +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=Bridge-LAN +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store=fetch crl-store=system +/container config +set layer-dir=/sata1 registry-url=https://reg.vados.ru tmpdir=/ramstorage \ + username=amster-dev +/container envs +add key=ENV list=carkeeperbot_envs value=/root/.ashrc +add key=PATH list=carkeeperbot_envs value=\ + /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +add key=PORT list=carkeeperbot_envs value="\${SSH_PORT}" +add key=SSH_PORT list=carkeeperbot_envs value=8222 +/container mounts +add dst=/app list=carkeeper_app src=/sata1/carkeeper/app +add dst=/configs list=carkeeper_configs src=/sata1/carkeeper/configs +add dst=/root/.ashrc list=carkeeper_configs/.profile src=\ + /sata1/carkeeper/configs/.profile +add dst=/etc/php82/php.ini list=carkeeper_configs/php.ini src=\ + /sata1/carkeeper/configs/php.ini +add dst=/etc/ssh/sshd_config list=carkeeper_configs/sshd_config src=\ + /sata1/carkeeper/configs/sshd_config +add dst=/scripts list=carkeeper_scripts src=/sata1/carkeeper/scripts +add dst=/var/sync list=carkeeper_sync src=/sata1/carkeeper/sync +add dst=/var/tmp list=carkeeper_tmp src=/sata1/carkeeper/tmp +/interface bridge port +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-DOC interface=veth1 +add bridge=Bridge-LAN interface=LAN +add bridge=Bridge-LAN interface=dynamic +/ipv6 settings +set disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=LAN internet-interface-list=LAN lan-interface-list=\ + LAN wan-interface-list=LAN +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.10.10.1/24 disabled=yes interface=Bridge-DOC network=\ + 10.10.10.0 +add address=172.18.20.5/30 disabled=yes interface=docker-xray-vless-veth \ + network=172.18.20.4 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=Bridge-LAN \ + lease-script=lease-script lease-time=10m name=nucDHCP server-address=\ + 10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.81 verify-doh-cert=yes +/ip firewall filter +add action=accept chain=input +add action=accept chain=output +add action=accept chain=forward comment="Comment of the rule" disabled=yes +/ip firewall mangle +# docker-xray-vless-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-xray-vless-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +/ip firewall nat +# docker-xray-vless-veth not ready +add action=masquerade chain=srcnat out-interface=docker-xray-vless-veth +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add disabled=no dst-address=0.0.0.0/0 gateway=10.30.30.81 routing-table=main +/ip service +set ftp disabled=yes +set www disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api disabled=yes +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both password-authentication=no \ + publickey-authentication-options=verify-required strong-crypto=yes +/ip upnp +set allow-disable-external-interface=yes enabled=yes +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" interval=30s name=mod/AM-TG-Bot on-event=\ + "/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-05-21 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/20260526/20260526032002-Diff-Config.rsc b/MikroNUC/history/20260526/20260526032002-Diff-Config.rsc new file mode 100644 index 0000000..673b26f --- /dev/null +++ b/MikroNUC/history/20260526/20260526032002-Diff-Config.rsc @@ -0,0 +1,8 @@ +843c843 +< \n:global CommitId \"main/661/8d6d2114\";\r\ +--- +> \n:global CommitId \"main/659/af48ca83\";\r\ +846c846 +< r: root, in 13:30:03 25.05.2026.\";\r\ +--- +> r: root, in 13:30:03 18.05.2026.\";\r\ -- 2.52.0