From 70f67008739d0fad94c64d030362359841037a1f Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 21 May 2026 04:00:04 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at May 21 04:00:04. --- .../20260521/20260521040001-Binary.backup | Bin 0 -> 380167 bytes MikroNUC/20260521/20260521040001-Config.rsc | 4790 +++++++++++++++++ .../20260521/20260521040001-Diff-Config.rsc | 4 + 3 files changed, 4794 insertions(+) create mode 100644 MikroNUC/20260521/20260521040001-Binary.backup create mode 100644 MikroNUC/20260521/20260521040001-Config.rsc create mode 100644 MikroNUC/history/20260521/20260521040001-Diff-Config.rsc diff --git a/MikroNUC/20260521/20260521040001-Binary.backup b/MikroNUC/20260521/20260521040001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a38a40aae89710f3718a36fe83e46f069a65525c GIT binary patch literal 380167 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%0A`+iBHS&{ZxaSE}5?suQ>_V$b% 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\"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/659/af48ca83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 18.05.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="#\ + \r\ + \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\";\r\ + \n#\r\ + \n#root.mnuc.backuper\r\ + \n\r\ + \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\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \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\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n#:local FetchFile AM-DOHCert.rsc\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\r\ + \n:global MkDir;\r\ + \n\r\ + \n:local FetchFile Binary.backup\r\ + \n:local localDir \"[usb1]/scripts/\";\r\ + \n\r\ + \n\$MkDir \$localDir;\r\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \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" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/app settings +set auto-update=yes disk=sata1 lan-bridge=Bridge-LAN 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 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 builtin-trust-store=fetch crl-store=system +/container config +set layer-dir=/sata1 registry-url=https://reg.vados.ru tmpdir=/ramstorage \ + username=amster-dev +/container envs +add key=ENV list=carkeeperbot_envs value=/root/.ashrc +add key=PATH list=carkeeperbot_envs value=\ + /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +add key=PORT list=carkeeperbot_envs value="\${SSH_PORT}" +add key=SSH_PORT list=carkeeperbot_envs value=8222 +/container mounts +add dst=/app list=carkeeper_app src=/sata1/carkeeper/app +add dst=/configs list=carkeeper_configs src=/sata1/carkeeper/configs +add dst=/root/.ashrc list=carkeeper_configs/.profile src=\ + /sata1/carkeeper/configs/.profile +add dst=/etc/php82/php.ini list=carkeeper_configs/php.ini src=\ + /sata1/carkeeper/configs/php.ini +add dst=/etc/ssh/sshd_config list=carkeeper_configs/sshd_config src=\ + /sata1/carkeeper/configs/sshd_config +add dst=/scripts list=carkeeper_scripts src=/sata1/carkeeper/scripts +add dst=/var/sync list=carkeeper_sync src=/sata1/carkeeper/sync +add dst=/var/tmp list=carkeeper_tmp src=/sata1/carkeeper/tmp +/interface bridge port +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-DOC interface=veth1 +add bridge=Bridge-LAN interface=LAN +add bridge=Bridge-LAN interface=dynamic +/ipv6 settings +set disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=LAN internet-interface-list=LAN lan-interface-list=\ + LAN wan-interface-list=LAN +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.10.10.1/24 disabled=yes interface=Bridge-DOC network=\ + 10.10.10.0 +add address=172.18.20.5/30 disabled=yes interface=docker-xray-vless-veth \ + network=172.18.20.4 +/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=Bridge-LAN \ + lease-script=lease-script lease-time=10m name=nucDHCP server-address=\ + 10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.81 verify-doh-cert=yes +/ip firewall filter +add action=accept chain=input +add action=accept chain=output +add action=accept chain=forward comment="Comment of the rule" disabled=yes +/ip firewall mangle +# docker-xray-vless-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-xray-vless-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +/ip firewall nat +# docker-xray-vless-veth not ready +add action=masquerade chain=srcnat out-interface=docker-xray-vless-veth +/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 disabled=no dst-address=0.0.0.0/0 gateway=10.30.30.81 routing-table=main +/ip service +set ftp disabled=yes +set www disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api disabled=yes +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-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both password-authentication=no \ + publickey-authentication-options=verify-required strong-crypto=yes +/ip upnp +set allow-disable-external-interface=yes enabled=yes +/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 +/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" 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" 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" 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" 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." \ + 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-05-21 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\";" +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260521/20260521040001-Diff-Config.rsc b/MikroNUC/history/20260521/20260521040001-Diff-Config.rsc new file mode 100644 index 0000000..4d0a1ec --- /dev/null +++ b/MikroNUC/history/20260521/20260521040001-Diff-Config.rsc @@ -0,0 +1,4 @@ +4778c4778 +< start-date=2026-05-21 start-time=03:41:27 +--- +> start-date=2026-05-14 start-time=03:41:27 -- 2.52.0