From 892cff98d5efe8c43ee3c3b03fb7462ef676dfc6 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 1 Jul 2026 02:00:04 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 01 02:00:04. --- .../20260701/20260701020001-Binary.backup | Bin 0 -> 382684 bytes MikroNUC/20260701/20260701020001-Config.rsc | 5355 +++++++++++++++++ .../20260701/20260701020001-Diff-Config.rsc | 25 + 3 files changed, 5380 insertions(+) create mode 100644 MikroNUC/20260701/20260701020001-Binary.backup create mode 100644 MikroNUC/20260701/20260701020001-Config.rsc create mode 100644 MikroNUC/history/20260701/20260701020001-Diff-Config.rsc diff --git a/MikroNUC/20260701/20260701020001-Binary.backup b/MikroNUC/20260701/20260701020001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a9441695b7e984cfba6cdf4c7938953fa4b617cf GIT binary patch literal 382684 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%0D*W? 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

My>%(dfhm=y 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

O7?3qfblH%H*gb{B!Th5ef=-2wcPGb|4Em^} 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

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