From 685517674ad85d73a50dec44134f2fab17f536b9 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 3 Jul 2026 07:20:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 03 07:20:03. --- .../20260703/20260703072001-Binary.backup | Bin 0 -> 382513 bytes MikroNUC/20260703/20260703072001-Config.rsc | 5456 +++++++++++++++++ .../20260703/20260703072001-Diff-Config.rsc | 6 + 3 files changed, 5462 insertions(+) create mode 100644 MikroNUC/20260703/20260703072001-Binary.backup create mode 100644 MikroNUC/20260703/20260703072001-Config.rsc create mode 100644 MikroNUC/history/20260703/20260703072001-Diff-Config.rsc diff --git a/MikroNUC/20260703/20260703072001-Binary.backup b/MikroNUC/20260703/20260703072001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..69fc41b4df3dd8e5e8ac93fbb682ba74913a38fb GIT binary patch literal 382513 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

VP;v98(0NfLRzoKb8+2H#gbii?s!+$rxjX7e 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

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