From ff4eb93b2f84928777fc12bfe38bd362bc2b89ec Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 18 Jun 2026 04:00:04 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jun 18 04:00:04. --- .../20260618/20260618040002-Binary.backup | Bin 0 -> 360377 bytes MikroNUC/20260618/20260618040002-Config.rsc | 4815 +++++++++++++++++ .../20260618/20260618040002-Diff-Config.rsc | 4 + 3 files changed, 4819 insertions(+) create mode 100644 MikroNUC/20260618/20260618040002-Binary.backup create mode 100644 MikroNUC/20260618/20260618040002-Config.rsc create mode 100644 MikroNUC/history/20260618/20260618040002-Diff-Config.rsc diff --git a/MikroNUC/20260618/20260618040002-Binary.backup b/MikroNUC/20260618/20260618040002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..40a662cc13688a910e54edaf8c6dd798f5a83475 GIT binary patch literal 360377 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

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