From 478a2a2c49b1acf1283b6d71ee268c03ac3d1b6a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 3 Jul 2026 02:20:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 03 02:20:03. --- MikroMaster/tmp/Diff-Config.rsc | 6 - .../20260703/20260703022001-Binary.backup | Bin 0 -> 379276 bytes MikroNUC/20260703/20260703022001-Config.rsc | 5391 +++++++++++++++++ .../20260703/20260703022001-Diff-Config.rsc | 36 + 4 files changed, 5427 insertions(+), 6 deletions(-) delete mode 100644 MikroMaster/tmp/Diff-Config.rsc create mode 100644 MikroNUC/20260703/20260703022001-Binary.backup create mode 100644 MikroNUC/20260703/20260703022001-Config.rsc create mode 100644 MikroNUC/history/20260703/20260703022001-Diff-Config.rsc diff --git a/MikroMaster/tmp/Diff-Config.rsc b/MikroMaster/tmp/Diff-Config.rsc deleted file mode 100644 index 9cf6e4e..0000000 --- a/MikroMaster/tmp/Diff-Config.rsc +++ /dev/null @@ -1,6 +0,0 @@ -91,92c91,92 -< /ppp profile -< set *FFFFFFFE use-upnp=no ---- -> #error exporting "/ppp/profile" (timeout) -> #error exporting "/queue/interface" (timeout) diff --git a/MikroNUC/20260703/20260703022001-Binary.backup b/MikroNUC/20260703/20260703022001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1b878c9fc4c99f6d9d1413b26584a5a63326d14e GIT binary patch literal 379276 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

bICUZ`RI(lZp;w~Di+18{wZP<2!V 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

Rj-Y6vfHLxvJ9?-;3a|c%7YuDI7 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≻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%0D{hKzOVCQyq^*8xz3b3; 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%0D7n4mBVgNRS?#11R3xjp{C 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

YvqFy={Hg-CV8H0|~ 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 JCnvw@gT3-vM?nAp literal 0 HcmV?d00001 diff --git a/MikroNUC/20260703/20260703022001-Config.rsc b/MikroNUC/20260703/20260703022001-Config.rsc new file mode 100644 index 0000000..722591c --- /dev/null +++ b/MikroNUC/20260703/20260703022001-Config.rsc @@ -0,0 +1,5391 @@ +# 2026-07-03 02:20: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=BridgeLAN +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no +/interface veth +add address=172.18.0.2/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ + gateway=172.18.0.1 gateway6="" name=vetch-wg2awg +/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 +/disk +add slot=ram tmpfs-max-size=100000000 type=tmpfs +/interface list +add include=dynamic,static name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/iot wiliot servers +set *1 address=mqtt.us-east-2.prod.wiliot.cloud name="Wiliot US East" +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=P1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/routing table +add disabled=no fib name=to-awg +/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/729/f42d43ae\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 00:05:03 01.07.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="#\ + \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\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \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\";\ + \n#:local Script AM-GlobalConfig;\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Manager@id_rsa.pub\ + \n:local localDir \"/\";\ + \n\ + \n\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :local IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$Name 0 1 ] = \"\\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);}\r\ + \n}\r\ + \n\r\ + \n:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=awg-env owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/envs/add list=awg-proxy-env key=AWG_LISTEN value=\":55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_REMOTE value=\"109.107.17\ + 7.79:55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H1 value=\"472437748-4724\ + 38637\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H2 value=\"707808381-7078\ + 09250\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H3 value=\"1609078552-160\ + 9079495\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H4 value=\"1012329484-101\ + 2329741\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I5 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_SERVER_PUB value=\"o5IgCl\ + 1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_CLIENT_PUB value=[/interf\ + ace/wireguard/get [find name=wg-awg-proxy] public-key]" +add dont-require-permissions=no name=awg-container-add owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/add file=sata1/tmp/awg-proxy-amd64.tar.gz interface=veth-awg-pro\ + xy envlist=awg-proxy-env \\\ + \n hostname=awg-proxy root-dir=sata1/awg-proxy logging=yes shm-size=4M \ + start-on-boot=yes\ + \n/container/start [find where tag~\"awg-proxy\"]" +add dont-require-permissions=yes name=awg2-webui owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + put \"Download image, and save him to usb1/tmp\"\ + \n/tool/fetch url=\"https://ros.vados.ru/docker/awg2-webui-chr.tar\" dst-p\ + ath=sata1/tmp/awg2-webui.tar\ + \n\ + \n:put \"1. Create veth interface\"\ + \n/interface veth add name=veth-awg address=10.9.9.2/24 gateway=10.9.9.1\ + \n\ + \n:put \"2. Create bridge and add veth\"\ + \n/interface bridge add name=br-awg\ + \n/interface bridge port add bridge=br-awg interface=veth-awg\ + \n\ + \n:put \"3. Assign IP to bridge\"\ + \n/ip address add address=10.9.9.1/24 interface=br-awg\ + \n\ + \n:put \"4. NAT: masquerade container traffic\"\ + \n/ip firewall nat add chain=srcnat src-address=10.9.9.0/24 action=masquer\ + ade\ + \n\ + \n:put \"5. Port forward: UDP 443 \? container (AmneziaWG QUIC mimicry)\"\ + \n/ip firewall nat add chain=dstnat protocol=udp dst-port=443 action=dst-n\ + at to-addresses=10.9.9.2 to-ports=55055 in-interface=ether1\ + \n\ + \n:put \"6. Port forward: HTTPS 9443 \? container Web UI\"\ + \n/ip firewall nat add chain=dstnat protocol=tcp dst-port=9443 action=dst-\ + nat to-addresses=10.9.9.2 to-ports=443 in-interface=ether1\ + \n\ + \n:put \"Create environment list..\"\ + \n/container envs add list=awgui-env key=WEB_USER value=vados\ + \n/container envs add list=awgui-env key=WEB_PASS value=zoomzoomrulezz\ + \n/container envs add list=awgui-env key=SECRET_KEY value=RanDomSecret32Sy\ + mboLs2325272931q\ + \n/container envs add list=awgui-env key=AWG_ENDPOINT value=10.30.30.10:44\ + 3\ + \n\ + \n:put \"Load and start container...\"\ + \n/container add file=sata1/tmp/awg2-webui.tar interface=veth-awg hostname\ + =awg2-webui \\\ + \nroot-dir=sata1/awg2-webui layer-dir=sata1/docker/awg2-webu/ envlist=awgu\ + i-env start-on-boot=yes logging=yes shm-size=4M\ + \n\ + \n:put \"Start...\"\ + \n/container start 0\ + \n\ + \n:put \"Verify...\"\ + \n/container print\ + \n\ + \n:put \"Should show: status=running\"\ + \n\ + \n/log print where topics~\"container\"\ + \n\ + \n:put \"Should show: AWG started, nginx running\"\ + \n" +add dont-require-permissions=no name=awg-proxy-go-Client owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:put \"[::::::::::::::: START :::::::::::::::]\"\ + \n:put \"\"\ + \n:put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n:put \"veth and network:\"\ + \n /interface/bridge add name=docker port-cost-mode=short\ + \n /ip/address/add address=192.168.100.1/24 interface=docker\ + \n\ + \n /interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n /interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n:put \"add config-client.json\"\ + \n/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json d\ + st=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n:put \"Add container\"\ + \n/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interface\ + =awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-proxy\ + -client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pro\ + xy-go-client\" mountlists=awgcfg-client\ + \n\ + \n:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n:put \"Add user:\"\ + \n /user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n:put \"Add forwarding port web-ui\"\ + \n /ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n /interface/wireguard/add name=wg-awg-client\ + \n /ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \n" +add comment=awg2wg dont-require-permissions=no name=awg2wg-uninstall owner=\ + Manager policy=ftp,read,write,policy source="\r\ + \n :put \"Uninstalling AmneziaWG...\"\r\ + \n :log info \"Uninstalling AmneziaWG...\"\r\ + \n /ip/route/remove [find where comment=awg2wg-tunnel]\r\ + \n :do { /tool/netwatch/remove [find where comment=Monitor-AWG2WG] } on-e\ + rror={}\r\ + \n :do { /ip/route/remove [find where comment=Monitor-AWG2WG] } on-error=\ + {}\r\ + \n /container/stop [find where interface=veth-awg2wg]\r\ + \n :delay 7s\r\ + \n /interface/list/member/remove [find where interface=wg-awg2wg]\r\ + \n /container/remove [find where interface=veth-awg2wg]\r\ + \n /container/envs/remove [find where list=\"awg2wg-env\"]\r\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg2wg\"]\r\ + \n /ip/address/remove [find where address=\"172.20.0.1/30\"]\r\ + \n /interface/veth/remove [find where name=\"veth-awg2wg\"]\r\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg2wg\"]\ + \r\ + \n /ip/address/remove [find where interface=\"wg-awg2wg\"]\r\ + \n /interface/wireguard/remove [find where name=\"wg-awg2wg\"]\r\ + \n :do { /file/remove [find where name~\"awg2wg.+tar\"] } on-error={}\r\ + \n :do { /file/remove [find where name=\"disk1/awg2wg\"] } on-error={}\r\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n /system/script/remove [find where name=awg2wg-uninstall]\r\ + \n" +add dont-require-permissions=no name=amneziawg-mikrotik-c owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global imagesPath \"amneziawg/img/\";\ + \n:local Image \"awg-proxy-amd64-7.20-Docker.tar.gz\";\ + \n\ + \n:global DstDir \"sata1/dst/\";\ + \n\ + \n:local Url=(\$GlobalScriptsUrl . \$ImagesPath . \$Image);\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n" +add comment=Generator dont-require-permissions=no name=awg-VDSina owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# ============================================================\ + \n# AWG Proxy -- MikroTik RouterOS (protocol: v2)\ + \n# 2026-06-30 22:08:12\ + \n# ============================================================\ + \n\ + \n# 0. Check prerequisites\ + \n:if ([:len [/system/package/find where name=\"container\" disabled=no]] \ + = 0) do={\ + \n :put \"Container package is not installed or disabled. Install it and \ + reboot.\"\ + \n :error \"Usage: /system/device-mode/update container=yes\"\ + \n}\ + \n\ + \n# Auto-detect storage\ + \n:global awgDisk \"disk1\"\ + \n{\ + \n :local usbFree 0\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] free] \ + } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n :put (\"Using USB: usb1 (\" . (\$usbFree / 1048576) . \" MB free)\")\ + \n } else={\ + \n :if ([:len [/disk/find where slot=\"usb1\"]] > 0) do={\ + \n :put \"USB found but not mounted. Format as ext4\?\"\ + \n :put \"Press 'y' to confirm:\"\ + \n :local key [/terminal/inkey timeout=30]\ + \n :if (\$key = 121 || \$key = 89) do={\ + \n /disk/format-drive usb1 file-system=ext4 label=usb1\ + \n :delay 3s\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] \ + free] } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n } else={ :put \"Format failed, using disk1\" }\ + \n } else={ :put \"Using disk1\" }\ + \n } else={ :put \"No USB, using disk1\" }\ + \n }\ + \n}\ + \n\ + \n# 1. Uninstall script\ + \n/system/script/add name=awg-VDSina-uninstall comment=awg-VDSina source={\ + \n :put \"Uninstallimg AmneziaWG...\"\ + \n :log info \"Uninstallimg AmneziaWG...\"\ + \n :local prevDNS \"\"\ + \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ + env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ + \n :local storageDisk \"disk1\"\ + \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ + ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ + \n :local prevTmpdir \"\"\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ + Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ + \n }\ + \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ + \n /ip/route/remove [find where comment=awg-VDSina-dns]\ + \n /container/stop [find where interface=veth-awg-VDSina]\ + \n :delay 7s\ + \n /container/remove [find where interface=veth-awg-VDSina]\ + \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ + \n :if (\$prevDNS != \"\") do={\ + \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ + \n :put (\"DNS restored to: \$prevDNS\")\ + \n }\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n /container/config set tmpdir=\$prevTmpdir\ + \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ + \n }\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ + \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ + \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ + \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ + a\"]\ + \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ + \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ + \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ + \_} on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ + out.rsc\")] } on-error={}\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ + n-error={}\ + \n }\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ + \n /system/script/remove [find where name=awg-VDSina-uninstall]\ + \n}\ + \n\ + \n# 2. Network infrastructure\ + \n/interface/veth/add name=veth-awg-VDSina address=172.19.75.210/30 gatewa\ + y=172.19.75.209\ + \n/ip/address/add address=172.19.75.209/30 interface=veth-awg-VDSina\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.19.7\ + 5.208/30\ + \n\ + \n# 3. WireGuard interface (MikroTik derives the public key automatically)\ + \n/interface/wireguard/add name=wg-awg-VDSina private-key=\"4CHyNhbOs923/E\ + yNDguMXJXdghL2I3UyzXPwrANVgHs=\" listen-port=14710 disabled=yes\ + \n/interface/wireguard/peers/add interface=wg-awg-VDSina public-key=\"o5Ig\ + Cl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\" preshared-key=\"RNvF7T1cg5tyXcY\ + QnD9N5BEp6e20vVJQTv0GMjyvHU0=\" endpoint-address=172.19.75.210 endpoint-po\ + rt=51820 allowed-address=0.0.0.0/0 persistent-keepalive=10\ + \n/ip/address/add address=10.9.0.3/32 interface=wg-awg-VDSina\ + \n\ + \n# 4. Container environment variables\ + \n/container/envs/add list=awg-VDSina-env key=AWG_LISTEN value=\":51820\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_REMOTE value=\"109.107.1\ + 77.79:55055\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H1 value=\"472437748-472\ + 438637\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H2 value=\"707808381-707\ + 809250\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H3 value=\"1609078552-16\ + 09079495\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H4 value=\"1012329484-10\ + 12329741\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_SERVER_PUB value=\"o5IgC\ + l1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_CLIENT_PUB value=[/inter\ + face/wireguard/get [find name=wg-awg-VDSina] public-key]\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I5 value=\"\"\ + \n\ + \n# 5. DNS\ + \n{ :local rawDNS [/ip/dns/get servers]; :local prevDNS \"\"; :foreach s i\ + n=[:toarray \$rawDNS] do={ :if ([:len \$prevDNS] > 0) do={ :set prevDNS \"\ + \$prevDNS,\$s\" } else={ :set prevDNS \$s } }; /container/envs/add list=aw\ + g-VDSina-env key=AWG_PREV_DNS value=\"\$prevDNS\" }\ + \n# NOTE: replaces existing DNS configuration\ + \n/ip/dns/set servers=109.107.177.79\ + \n/ip/route/add dst-address=109.107.177.79/32 gateway=wg-awg-VDSina distan\ + ce=1 comment=awg-VDSina-dns\ + \n\ + \n# 6. Download, create and start container\ + \n/container/envs/add list=awg-VDSina-env key=AWG_STORAGE value=\$awgDisk\ + \n:if (\$awgDisk != \"disk1\") do={\ + \n :local tmpPath (\$awgDisk . \"/pull\")\ + \n /container/envs/add list=awg-VDSina-env key=AWG_PREV_TMPDIR value=[/co\ + ntainer/config/get tmpdir]\ + \n /container/config set tmpdir=\$tmpPath memory-high=200M\ + \n}\ + \n{\ + \n :local arch [/system/resource/get architecture-name]\ + \n :local ver [/system/resource/get version]\ + \n :local dotPos [:find \$ver \".\"]\ + \n :local rest [:pick \$ver (\$dotPos + 1) [:len \$ver]]\ + \n :local endPos [:find \$rest \".\"]\ + \n :if ([:typeof \$endPos] = \"nil\") do={ :set endPos [:find \$rest \" \ + \"] }\ + \n :local minor [:tonum [:pick \$rest 0 \$endPos]]\ + \n :local suffix \"\"\ + \n :if (\$minor <= 20) do={ :set suffix \"-7.20-Docker\" }\ + \n :local file \"\"\ + \n :if (\$arch = \"arm64\") do={ :set file (\"awg-proxy-arm64\" . \$suffi\ + x . \".tar.gz\") }\ + \n :if (\$arch = \"arm\") do={ :set file (\"awg-proxy-arm\" . \$suffix . \ + \".tar.gz\") }\ + \n :if (\$arch ~ \"x86\") do={ :set file (\"awg-proxy-amd64\" . \$suffix \ + . \".tar.gz\") }\ + \n :if (\$file = \"\") do={ :error \"Unsupported architecture: \$arch\" }\ + \n :local url \"https://github.com/timbrs/amneziawg-mikrotik-c/releases/l\ + atest/download/\$file\"\ + \n :local filePath \$file\ + \n :if (\$awgDisk != \"disk1\") do={\ + \n :set filePath (\$awgDisk . \"/pull/\" . \$file)\ + \n :do { /file/make-directory (\$awgDisk . \"/pull\") } on-error={}\ + \n }\ + \n :if ([:len [/file/find where name=\$filePath]] = 0) do={\ + \n :local freeStorage 0\ + \n :if (\$awgDisk = \"disk1\") do={\ + \n :set freeStorage [/system/resource/get free-hdd-space]\ + \n } else={\ + \n :do { :set freeStorage [/disk/get [find where mount-point=\$awgDis\ + k] free] } on-error={}\ + \n }\ + \n :if (\$freeStorage < 262144) do={\ + \n :put (\"WARNING: Low disk space (\" . (\$freeStorage / 1024) . \"K\ + B free). Need at least 256KB.\")\ + \n :put \"See: https://github.com/timbrs/amneziawg-mikrotik-c#insuffi\ + cient-disk-space\"\ + \n :error \"Insufficient disk space\"\ + \n }\ + \n :put (\"Fetching: \$url -> \" . \$filePath)\ + \n /tool/fetch url=\$url dst-path=\$filePath http-max-redirect-count=10\ + \n } else={\ + \n :put (\"File already exists: \" . \$filePath)\ + \n }\ + \n :local rootDir (\$awgDisk . \"/awg-VDSina\")\ + \n /container/add file=\$filePath interface=veth-awg-VDSina envlist=awg-V\ + DSina-env hostname=awg-VDSina root-dir=\$rootDir logging=no start-on-boot=\ + yes comment=awg-VDSina\ + \n :if (\$minor > 20) do={ [:parse \"/container/set [find where interface\ + =veth-awg-VDSina] shm-size=4M\"] }\ + \n /file/remove \$filePath\ + \n :local freeMem [/system/resource/get free-memory]\ + \n :if (\$freeMem < 16777216) do={\ + \n :put (\"WARNING: Low memory (\" . (\$freeMem / 1048576) . \"MB free)\ + . 16MB+ recommended.\")\ + \n }\ + \n /container/start [find where interface=veth-awg-VDSina]\ + \n :do { /file/remove [find where name=\"console-dump.txt\"] } on-error={\ + }\ + \n :put \"Waiting for container to start...\"\ + \n :delay 5s\ + \n /interface/wireguard/enable wg-awg-VDSina\ + \n :put \"WireGuard interface enabled\"\ + \n :put \"Installation complete!\"\ + \n :put \"Ping test: 109.107.177.79 via AmneziaWG tunnel. repeat 10 times\ + \"\ + \n /ping 109.107.177.79 count=10 interval=1\ + \n :put \"\"\ + \n :put \"======= NEXT STEPS =======\"\ + \n :put \"\"\ + \n :put \"Route specific traffic through the AmneziaWG tunnel:\"\ + \n :put \"\"\ + \n :put \" Route a single host:\"\ + \n :put \" /ip/route/add dst-address=8.8.8.8/32 gateway=wg-awg-VDSina \ + comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Route a subnet:\"\ + \n :put \" /ip/route/add dst-address=100.0.0.0/8 gateway=wg-awg-VDSina\ + \_comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Remove a route:\"\ + \n :put \" /ip/route/remove [find where comment=awg-VDSina-tunnel dst-\ + address=8.8.8.8/32]\"\ + \n :put \"\"\ + \n :put \" Show all tunnel routes:\"\ + \n :put \" /ip/route/print where comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Uninstall:\"\ + \n :put \" /system/script/run awg-VDSina-uninstall\"\ + \n :put \"=========================\"\ + \n}\ + \n\ + \n# 7. Verification\ + \n# /container/print\ + \n# /interface/wireguard/print\ + \n# /interface/wireguard/peers/print\ + \n" +add comment="wg2awg GH repo in client mode" dont-require-permissions=no name=\ + "wg2awg client" owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n\ + \n:local WorkDisk \"sata1\";\ + \n:local Name wg2awg;\ + \n:local Bridge (\"Bridge-\" . \$Name);\ + \n:local Vetch (\"vetch-\" . \$Name);\ + \n:local Env (\$Name . \"-env\");\ + \n:local ConfDir (\"/etc/\" . \$Name . \"/\");\ + \n:local ConfFile (\$Name . \".conf\");\ + \n:local Mounts (\$WorkDisk . \"/mounts/\" . \$Name . \"/\");\ + \n:local RootDir (\$WorkDisk . \$Name);\ + \n#:put \"\"\ + \n#put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n\ + \n:log warning \"[::::::::::::::: START :::::::::::::::]\"\ + \n:log warning \"Add veth and nat...\";\ + \n:do {\ + \n/interface/veth/add name=\$Vetch address=172.18.0.2/30 gateway=172.18.0.\ + 1;\ + \n/ip/address/add address=172.18.0.1/30 interface=\$Vetch;\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.18.0\ + .0/30;\ + \n} on-error={}\ + \n\ + \n#:do {\ + \n#/file add type=directory name=\$Mounts\ + \n#} on-error={}\ + \n\ + \n:log warning (\"Remove config file \" . \$Mounts . \$ConfFile . \"...\")\ + ;\ + \n/file remove [find name=(\$Mounts . \$ConfFile)];\ + \n\ + \n:do {\ + \n:log warning (\"Add config file \" . \$Mounts . \$ConfFile . \"...\");\ + \n/file add type=file name=(\$Mounts . \$ConfFile) contents=\"[Interface]\ + \nPrivateKey = 4CHyNhbOs923/EyNDguMXJXdghL2I3UyzXPwrANVgHs=\ + \nAddress = 10.9.0.3/32\ + \nMTU = 1280\ + \nDNS = 109.107.177.79\ + \nPreUp = ip route add 109.107.177.79/32 via 172.18.20.1 dev \$Vetch\ + \nPostDown = ip route del 109.107.177.79/32 via 172.18.20.1 dev \$Vetch\ + \nJc = 9\ + \nJmin = 105\ + \nJmax = 920\ + \nS1 = 90\ + \nS2 = 136\ + \nS3 = 45\ + \nS4 = 27\ + \nH1 = 472437748-472438637\ + \nH2 = 707808381-707809250\ + \nH3 = 1609078552-1609079495\ + \nH4 = 1012329484-1012329741\ + \nI1 = <\ + r 4>\ + \nI2 = \ + \nI3 = \ + \nI4 = \ + \nI5 = \ + \n\ + \n[Peer]\ + \nPublicKey = o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\ + \nAllowedIPs = 0.0.0.0/0\ + \nEndpoint = 109.107.177.79:55055\ + \nPersistentKeepalive = 10\ + \nPresharedKey = RNvF7T1cg5tyXcYQnD9N5BEp6e20vVJQTv0GMjyvHU0=\";\ + \n} on-error={}\ + \n\ + \n:do {\ + \n:log warning (\"Remove mounts list \$Env...\");\ + \n/container/mounts/remove [find list=\$Env];\ + \n:log warning (\"Add mounts list \$Env...\");\ + \n/container/mounts/add src=(\$Mounts . \$ConfFile) dst=(\$ConfDir . \$Con\ + fFile) list=\$Env mode=ro;\ + \n:log warning (\"Add mounts Environment key AWG_CONFIG.\");\ + \n/container/envs/add list=\$Env key=AWG_CONFIG value=(\$ConfDir . \$ConfF\ + ile);\ + \n} on-error={}\ + \n\ + \n:do {\ + \n:log warning (\"Remove \" . \$WorkDisk . \"tmp/\");\ + \n/file remove [find name=(\$WorkDisk . \"tmp\")];\ + \n:log warning (\"Add \" . \$WorkDisk . \"tmp/\");\ + \n/file add type=directory name=(\$WorkDisk . \"tmp\");\ + \n:log warning (\"Container add tmpdir \" . \$WorkDisk . \"tmp/\");\ + \n/container config set tmpdir=(\$WorkDisk . \"tmp\");\ + \n} on-error={}\ + \n\ + \n\ + \n/container/config/set registry-url=https://registry-1.docker.io tmpdir=(\ + \$WorkDisk . \"tmp\");\ + \n\ + \n\ + \n#/container/add file=wg2awg-arm-oci.tar.gz interface=\$Vetch envlist=\$E\ + nv root-dir=\$RootDir logging=yes;\ + \n\ + \n#/container/start [find where interface=\$Vetch];\ + \n\ + \n#/interface/bridge add name=\$Bridge port-cost-mode=short;\ + \n#/ip/address/add address=192.168.100.1/24 interface=\$Bridge;\ + \n\ + \n#/interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n#/interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n#:put \"add config-client.json\"\ + \n#/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n#/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json \ + dst=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n#:put \"Add container\"\ + \n#/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interfac\ + e=awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-prox\ + y-client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pr\ + oxy-go-client\" mountlists=awgcfg-client\ + \n\ + \n#:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n#:put \"Add user:\"\ + \n#/user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n#:put \"Add forwarding port web-ui\"\ + \n#/ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n#:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n#/interface/wireguard/add name=wg-awg-client\ + \n#/ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \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" +add name=manager policy="local,ssh,ftp,read,write,policy,api,rest-api,!telnet,\ + !reboot,!test,!winbox,!password,!web,!sniff,!sensitive,!romon" +/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=*7 lan-bridge=*3 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 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 +/caps-man datapath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + xs-DataPath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + DataPath +/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=BridgeLAN +/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 crl-store=system +/container config +set layer-dir=/sata1/docker/layers memory-high=200.0MiB memory-max=4096.0MiB \ + registry-url=https://registry-1.docker.io tmpdir=/sata1tmp username=\ + amsternl +/container envs +add key=AWG_CONFIG list=wg2awg-env value=/etc/wg2awg/wg2awg.conf +/container mounts +add dst=/etc/wg2awg/wg2awg.conf list=wg2awg-env mode=ro src=\ + /sata1/mounts/wg2awg/wg2awg.conf +/ip smb +set enabled=no +/interface bridge port +add bridge=BridgeLAN interface=ether1 +add bridge=BridgeLAN interface=2G-MikroGig-1 +add bridge=BridgeLAN interface=2G-MikroMaster-1 +add bridge=BridgeLAN interface=5G-MikroGig-1 +add bridge=BridgeLAN interface=5G-MikroMaster-1 +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=all internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=ether1 list=WAN +/interface wifi cap +set discovery-interfaces=*DF +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=BridgeLAN network=10.30.30.0 +add address=172.18.0.1/30 interface=vetch-wg2awg network=172.18.0.0 +/ip dhcp-client +add disabled=yes interface=ether1 name=client1 +/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=*3 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.33,109.107.177.79 \ + verify-doh-cert=yes +/ip firewall nat +add action=masquerade chain=srcnat src-address=172.18.0.0/30 +/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=none disabled=no distance=2 dst-address=0.0.0.0/0 gateway=\ + BridgeLAN routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set reverse-proxy disabled=yes +set ssh port=2222 +set www-ssl port=4443 +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-secure=no scep-plain=no webfig-plain=no \ + webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=*3 type=external +add interface=*B5 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 +/special-login +add port=serial0 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +/system scheduler +add comment="Every Day Set Global Environment Variables" disabled=yes 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" disabled=yes 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" disabled=yes 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" disabled=yes 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." \ + disabled=yes 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-25 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 +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260703/20260703022001-Diff-Config.rsc b/MikroNUC/history/20260703/20260703022001-Diff-Config.rsc new file mode 100644 index 0000000..d4c0199 --- /dev/null +++ b/MikroNUC/history/20260703/20260703022001-Diff-Config.rsc @@ -0,0 +1,36 @@ +5063d5062 +< \n:local RootDir (\$WorkDisk . \$Name);\ +5127c5126 +< fFile) list=\$Env mode=ro;\ +--- +> fFile) list=\$Env;\ +5134,5139c5133,5136 +< \n:log warning (\"Remove \" . \$WorkDisk . \"tmp/\");\ +< \n/file remove [find name=(\$WorkDisk . \"tmp\")];\ +< \n:log warning (\"Add \" . \$WorkDisk . \"tmp/\");\ +< \n/file add type=directory name=(\$WorkDisk . \"tmp\");\ +< \n:log warning (\"Container add tmpdir \" . \$WorkDisk . \"tmp/\");\ +< \n/container config set tmpdir=(\$WorkDisk . \"tmp\");\ +--- +> \n:log warning (\"Remove \" . \$Mounts . \"tmp/\");\ +> \n/file remove [find name=(\$Mounts . \"tmp\")];\ +> \n:log warning (\"Add \" . \$Mounts . \"tmp/\");\ +> \n/file add type=directory name=(\$Mounts . \"tmp\");\ +5143,5151d5139 +< \n/container/config/set registry-url=https://registry-1.docker.io tmpdir=(\ +< \$WorkDisk . \"tmp\");\ +< \n\ +< \n\ +< \n#/container/add file=wg2awg-arm-oci.tar.gz interface=\$Vetch envlist=\$E\ +< nv root-dir=\$RootDir logging=yes;\ +< \n\ +< \n#/container/start [find where interface=\$Vetch];\ +< \n\ +5266c5254 +< registry-url=https://registry-1.docker.io tmpdir=/sata1tmp username=\ +--- +> registry-url=https://registry-1.docker.io tmpdir=/sata1/tmp username=\ +5271c5259 +< add dst=/etc/wg2awg/wg2awg.conf list=wg2awg-env mode=ro src=\ +--- +> add dst=/etc/wg2awg/wg2awg.conf list=wg2awg-env src=\ -- 2.52.0