From 448b4eea53d9f27e5235ec706587236a49647fe3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 1 Jul 2026 03:00:04 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 01 03:00:04. --- .../20260701/20260701030001-Binary.backup | Bin 0 -> 374292 bytes MikroNUC/20260701/20260701030001-Config.rsc | 5238 +++++++++++++++++ .../20260701/20260701030001-Diff-Config.rsc | 20 + 3 files changed, 5258 insertions(+) create mode 100644 MikroNUC/20260701/20260701030001-Binary.backup create mode 100644 MikroNUC/20260701/20260701030001-Config.rsc create mode 100644 MikroNUC/history/20260701/20260701030001-Diff-Config.rsc diff --git a/MikroNUC/20260701/20260701030001-Binary.backup b/MikroNUC/20260701/20260701030001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0866ba076d987a9d687db1596603d9014d86820f GIT binary patch literal 374292 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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� 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 M$o6&%Pww+0S)HCw82|tP literal 0 HcmV?d00001 diff --git a/MikroNUC/20260701/20260701030001-Config.rsc b/MikroNUC/20260701/20260701030001-Config.rsc new file mode 100644 index 0000000..a094abb --- /dev/null +++ b/MikroNUC/20260701/20260701030001-Config.rsc @@ -0,0 +1,5238 @@ +# 2026-07-01 03:00:02 by RouterOS 7.23.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=BridgeLAN +add name=docker port-cost-mode=short +/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=*100 +/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=docker interface=*12C +add bridge=BridgeLAN interface=LAN +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=all internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=ether1 list=WAN +/interface wifi cap +set discovery-interfaces=*DF +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=BridgeLAN network=10.30.30.0 +add address=192.168.100.1/24 interface=docker network=192.168.100.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=1 dst-address=0.0.0.0/0 gateway=\ + 10.30.30.81 routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet 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/20260701/20260701030001-Diff-Config.rsc b/MikroNUC/history/20260701/20260701030001-Diff-Config.rsc new file mode 100644 index 0000000..aadbcf9 --- /dev/null +++ b/MikroNUC/history/20260701/20260701030001-Diff-Config.rsc @@ -0,0 +1,20 @@ +25c25 +< add name=docker port-cost-mode=short +--- +> add name=awg-bridge +5127d5126 +< add bridge=docker interface=*12C +5142d5140 +< add address=192.168.100.1/24 interface=docker network=192.168.100.0 +5236a5235,5245 +> /tool netwatch +> add disabled=yes down-script=\ +> ":local msg \"Host MikroYellow is DOWN\";\r\ +> \n\$TGSendMessage \$msg;" host=10.30.30.86 http-codes="" interval=10s \ +> test-script="" type=simple up-script=\ +> ":global TGSendMessage;\r\ +> \n\$TGSendMessage \"Host MikroYellow is UP\";" +> add comment=Monitor-AWG2WG down-script=\ +> "/ip route disable [find comment=\"Route-AWG2WG\"]" host=9.9.9.9 \ +> interval=10s packet-count=5 thr-avg=0ms thr-loss-count=4 timeout=5s type=\ +> icmp up-script="/ip route enable [find comment=\"Route-AWG2WG\"]" -- 2.52.0