From a8c7ccfc87fad6254c31ff2d49baf643c1829b6e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 3 Jul 2026 06:20:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 03 06:20:03. --- .../20260703/20260703062001-Binary.backup | Bin 0 -> 381535 bytes MikroNUC/20260703/20260703062001-Config.rsc | 5424 +++++++++++++++++ .../20260703/20260703062001-Diff-Config.rsc | 12 + 3 files changed, 5436 insertions(+) create mode 100644 MikroNUC/20260703/20260703062001-Binary.backup create mode 100644 MikroNUC/20260703/20260703062001-Config.rsc create mode 100644 MikroNUC/history/20260703/20260703062001-Diff-Config.rsc diff --git a/MikroNUC/20260703/20260703062001-Binary.backup b/MikroNUC/20260703/20260703062001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..714420404816aefb8c47b651a443e9c5f57e8c2c GIT binary patch literal 381535 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 Rlw1AoNlEK-!eWdR#JhQ*;=@FJL>|wQ*<| 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

HT+^L}`c*Xd6OtLYXt3u`<$2-1~*z@J=~zvp1d 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�g#Rgo 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ɚzX0m7#Gl@8i;QJWQLfya;OLy{1{tf}?cOZl6 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 literal 0 HcmV?d00001 diff --git a/MikroNUC/20260703/20260703062001-Config.rsc b/MikroNUC/20260703/20260703062001-Config.rsc new file mode 100644 index 0000000..c1e8077 --- /dev/null +++ b/MikroNUC/20260703/20260703062001-Config.rsc @@ -0,0 +1,5424 @@ +# 2026-07-03 06: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 veth +add address=172.18.0.2/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ + gateway=172.18.0.1 gateway6="" name=vetch-wg2awg +/interface wireguard +add comment="Interface for Master Connection" 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 +/container +# download/extract error: no manifest.json in archive +add envlists=wg2awg-env file=sata1/dst/wg2awg-amd64-oci.tar.gz hostname=\ + wg2awg interface=vetch-wg2awg layer-dir=/sata1/docker/layers logging=yes \ + mountlists=wg2awg-env name=wg2awg-amd64-oci root-dir=/sata1wg2awg \ + start-on-boot=yes +/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 WorkDisk \"sata1\";\ + \n:local Name wg2awg;\ + \n:local Bridge (\"Bridge-\" . \$Name);\ + \n:local Vetch (\"vetch-\" . \$Name);\ + \n:local Env (\$Name . \"-env\");\ + \n:local ConfDir (\"/etc/\" . \$Name . \"/\");\ + \n:local ConfFile (\$Name . \".conf\");\ + \n:local Mounts (\$WorkDisk . \"/mounts/\" . \$Name . \"/\");\ + \n:local RootDir (\$WorkDisk . \$Name);\ + \n: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\ + \n#:put \"\"\ + \n#put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n\ + \n:log warning \"[::::::::::::::: START :::::::::::::::]\"\ + \n:log warning \"Add veth and nat...\";\ + \n:do {\ + \n/interface/veth/add name=\$Vetch address=172.18.0.2/30 gateway=172.18.0.\ + 1;\ + \n/ip/address/add address=172.18.0.1/30 interface=\$Vetch;\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.18.0\ + .0/30;\ + \n} on-error={}\ + \n\ + \n#:do {\ + \n#/file add type=directory name=\$Mounts\ + \n#} on-error={}\ + \n\ + \n:log warning (\"Remove config file \" . \$Mounts . \$ConfFile . \"...\")\ + ;\ + \n/file remove [find name=(\$Mounts . \$ConfFile)];\ + \n\ + \n:do {\ + \n:log warning (\"Add config file \" . \$Mounts . \$ConfFile . \"...\");\ + \n/file add type=file name=(\$Mounts . \$ConfFile) contents=\"[Interface]\ + \nPrivateKey = 4CHyNhbOs923/EyNDguMXJXdghL2I3UyzXPwrANVgHs=\ + \nAddress = 10.9.0.3/32\ + \nMTU = 1280\ + \nDNS = 109.107.177.79\ + \nPreUp = ip route add 109.107.177.79/32 via 172.18.20.1 dev \$Vetch\ + \nPostDown = ip route del 109.107.177.79/32 via 172.18.20.1 dev \$Vetch\ + \nJc = 9\ + \nJmin = 105\ + \nJmax = 920\ + \nS1 = 90\ + \nS2 = 136\ + \nS3 = 45\ + \nS4 = 27\ + \nH1 = 472437748-472438637\ + \nH2 = 707808381-707809250\ + \nH3 = 1609078552-1609079495\ + \nH4 = 1012329484-1012329741\ + \nI1 = <\ + r 4>\ + \nI2 = \ + \nI3 = \ + \nI4 = \ + \nI5 = \ + \n\ + \n[Peer]\ + \nPublicKey = o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\ + \nAllowedIPs = 0.0.0.0/0\ + \nEndpoint = 109.107.177.79:55055\ + \nPersistentKeepalive = 10\ + \nPresharedKey = RNvF7T1cg5tyXcYQnD9N5BEp6e20vVJQTv0GMjyvHU0=\";\ + \n} on-error={}\ + \n\ + \n:do {\ + \n:log warning (\"Remove mounts list \$Env...\");\ + \n/container/mounts/remove [find list=\$Env];\ + \n:log warning (\"Add mounts list \$Env...\");\ + \n/container/mounts/add src=(\$Mounts . \$ConfFile) dst=(\$ConfDir . \$Con\ + fFile) list=\$Env mode=ro;\ + \n:log warning (\"Add mounts Environment key AWG_CONFIG.\");\ + \n/container/envs/add list=\$Env key=AWG_CONFIG value=(\$ConfDir . \$ConfF\ + ile);\ + \n} on-error={}\ + \n\ + \n:do {\ + \n:log warning (\"Remove \" . \$WorkDisk . \"/tmp\");\ + \n/file remove [find name=(\$WorkDisk . \"/tmp\")];\ + \n:log warning (\"Add \" . \$WorkDisk . \"/tmp\");\ + \n/file add type=directory name=(\$WorkDisk . \"/tmp\");\ + \n:log warning (\"Container add tmpdir \" . \$WorkDisk . \"/tmp\");\ + \n/container config set tmpdir=(\$WorkDisk . \"/tmp\");\ + \n} on-error={}\ + \n\ + \n: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: hostname=\" . \$Name . \", mountlis\ + ts=\" . \$Env . \", file=\" . \$FetchDir . \$FetchFile . \", envlist=\" .\ + \_\$Env . \", root-dir=\" . \$RootDir . \", logging=yes, start-on-boot=yes\ + \");\ + \n/container/add hostname=\$Name mountlists=\$Env file=(\$FetchDir . \$Fet\ + chFile) interface=\$Vetch envlist=\$Env root-dir=\$RootDir logging=yes sta\ + rt-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 +/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/20260703062001-Diff-Config.rsc b/MikroNUC/history/20260703/20260703062001-Diff-Config.rsc new file mode 100644 index 0000000..74280a7 --- /dev/null +++ b/MikroNUC/history/20260703/20260703062001-Diff-Config.rsc @@ -0,0 +1,12 @@ +5063c5063 +< \n:local Version \"v0.0.1\";\ +--- +> \n:local Version \"0.4.0\";\ +5074,5076c5074,5076 +< \n:local FetchFile (\$Name . \"-\" . \$Arch . \"-oci.tar\");\ +< \n:local FetchUrl (\"https://github.com/vados-dev/wg2awg/releases/download\ +< /\" . \$Version . \"/\" . \$FetchFile);\ +--- +> \n:local FetchFile (\$Name . \"-\" . \$Arch . \"-oci.tar.gz\");\ +> \n:local FetchUrl (\"https://github.com/WoozyMasta/wg2awg/releases/downloa\ +> d/\" . \$Version . \"/\" . \$FetchFile);\ -- 2.52.0