From 8180ba9a97b8fd27a6239537bcac06677ff83052 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 2 Jul 2026 17:40:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 02 17:40:03. --- .../20260702/20260702174001-Binary.backup | Bin 0 -> 374251 bytes MikroNUC/20260702/20260702174001-Config.rsc | 5238 +++++++++++++++++ .../20260702/20260702174001-Diff-Config.rsc | 14 + 3 files changed, 5252 insertions(+) create mode 100644 MikroNUC/20260702/20260702174001-Binary.backup create mode 100644 MikroNUC/20260702/20260702174001-Config.rsc create mode 100644 MikroNUC/history/20260702/20260702174001-Diff-Config.rsc diff --git a/MikroNUC/20260702/20260702174001-Binary.backup b/MikroNUC/20260702/20260702174001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..127677c56a82040d976c6b5180823e236436e5a6 GIT binary patch literal 374251 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 literal 0 HcmV?d00001 diff --git a/MikroNUC/20260702/20260702174001-Config.rsc b/MikroNUC/20260702/20260702174001-Config.rsc new file mode 100644 index 0000000..6f3a911 --- /dev/null +++ b/MikroNUC/20260702/20260702174001-Config.rsc @@ -0,0 +1,5238 @@ +# 2026-07-02 17:40: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 +/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" +/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=/sata1/tmp username=\ + amsternl +/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 +/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 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/20260702/20260702174001-Diff-Config.rsc b/MikroNUC/history/20260702/20260702174001-Diff-Config.rsc new file mode 100644 index 0000000..b7c7493 --- /dev/null +++ b/MikroNUC/history/20260702/20260702174001-Diff-Config.rsc @@ -0,0 +1,14 @@ +5107c5107 +< add disabled=no interface=BridgeLAN +--- +> add disabled=no interface=*100 +5126,5130c5126 +< 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 +--- +> add bridge=BridgeLAN interface=LAN +5143a5140 +> add address=192.168.100.1/24 interface=*12B network=192.168.100.0 -- 2.52.0