From 9abb7615f353e4f3907a4b55b7bab4ad3e03d862 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 28 Jun 2026 00:20:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jun 28 00:20:03. --- .../20260628/20260628002001-Binary.backup | Bin 0 -> 359735 bytes MikroNUC/20260628/20260628002001-Config.rsc | 4809 +++++++++++++++++ .../20260628/20260628002001-Diff-Config.rsc | 82 + 3 files changed, 4891 insertions(+) create mode 100644 MikroNUC/20260628/20260628002001-Binary.backup create mode 100644 MikroNUC/20260628/20260628002001-Config.rsc create mode 100644 MikroNUC/history/20260628/20260628002001-Diff-Config.rsc diff --git a/MikroNUC/20260628/20260628002001-Binary.backup b/MikroNUC/20260628/20260628002001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..7b5ea16e7aa38d464c651fed76f2148a2b10e696 GIT binary patch literal 359735 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ǭ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�fR=7Q*I~0hHc+OHH4(lOP&s3N|k5p{p1G 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ΞRVKcYk8u}4;^5B!@66s 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 kDT8^kl@-~_Wl$QFO*m=zlP_yV(u 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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/700/f14f095d\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 22.06.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 +set cinny firewall-redirects=8094:80:tcp:web +set goaway container-command-lines=goaway:none:docker.io/pommee/goaway:latest +set home-assistant container-command-lines=\ + home-assistant:none:lscr.io/linuxserver/homeassistant +set n8n firewall-redirects=5678:5678:tcp:web +set nextcloud container-command-lines="db:none:docker.io/postgres:17,redis:non\ + e:docker.io/valkey/valkey:/bin/sh -c 'valkey-server --port 6379 --appendon\ + ly yes --requirepass \$VALKEY_PASSWORD',server:none:docker.io/nextcloud:ap\ + ache" +set pihole environment="pihole:FTLCONF_dns_listeningMode=all,pihole:FTLCONF_we\ + bserver_api_password=password" +set redlib firewall-redirects=8087:8080:tcp:web +set solr container-command-lines=solr:none:docker.io/solr:latest +set uptime-kuma container-command-lines=\ + uptime-kuma:none:docker.io/louislam/uptime-kuma:1 +/app settings +set auto-update=yes disk=*7 lan-bridge=Bridge-LAN registry-mirrors="https://re\ + g.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 crl-store=system +/container config +set layer-dir=/sata1 memory-high=4096.0MiB memory-max=4096.0MiB registry-url=\ + https://registry-1.docker.io tmpdir=/tmp username=amsternl +/interface bridge port +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=*C4 +add bridge=Bridge-LAN interface=*C2 +add bridge=Bridge-LAN interface=*C5 +add bridge=Bridge-LAN interface=*C1 +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no +/interface detect-internet +set detect-interface-list=Internet internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=lo list=LAN +add interface=ether2 list=Internet +add interface=docker-awg-veth list=WAN +add interface=ether2 list=WAN +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=ether2 network=10.30.30.0 +add address=10.9.0.3/24 interface=docker-awg-veth network=10.9.0.0 +/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 address-list +add address=8.8.4.4 list=to_vpn +add address=10.0.0.0/8 list=RFC1918 +add address=172.16.0.0/12 list=RFC1918 +add address=192.168.0.0/16 list=RFC1918 +/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-awg-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-awg-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +add action=mark-routing chain=prerouting new-routing-mark=r_to_vpn \ + src-address=10.30.30.0/24 +/ip firewall nat +# docker-awg-veth not ready +add action=masquerade chain=srcnat out-interface=docker-awg-veth \ + routing-mark=r_to_vpn +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add check-gateway=bfd disabled=no distance=2 dst-address=0.0.0.0/0 gateway=\ + 10.30.30.81 routing-table=main scope=30 target-scope=10 +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=docker-awg-veth \ + routing-table=r_to_vpn scope=30 target-scope=10 +/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 enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=external +add interface=*B5 type=internal +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/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-06-25 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool netwatch +add disabled=yes down-script=\ + ":local msg \"Host MikroYellow is DOWN\";\r\ + \n\$TGSendMessage \$msg;" host=10.30.30.86 http-codes="" interval=10s \ + test-script="" type=simple up-script=\ + ":global TGSendMessage;\r\ + \n\$TGSendMessage \"Host MikroYellow is UP\";" +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260628/20260628002001-Diff-Config.rsc b/MikroNUC/history/20260628/20260628002001-Diff-Config.rsc new file mode 100644 index 0000000..91d9941 --- /dev/null +++ b/MikroNUC/history/20260628/20260628002001-Diff-Config.rsc @@ -0,0 +1,82 @@ +58a59,62 +> /container +> add hostname=amnezia interface=docker-awg-veth layer-dir=/sata1 logging=yes \ +> mountlists=awg_conf name=awg-mikrotik-amd64:latest remote-image=\ +> catesin/awg-mikrotik-amd64:latest root-dir=/amnezia start-on-boot=yes +4620a4625,4657 +> add dont-require-permissions=no name=AmneziaWG owner=vados policy=\ +> ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ +> /routing table \ +> \n#add disabled=no fib name=r_to_vpn\ +> \n#/ip firewall address-list\ +> \n#add address=8.8.4.4 list=to_vpn\ +> \n#/ip firewall address-list\ +> \n#add address=10.0.0.0/8 list=RFC1918\ +> \n#add address=172.16.0.0/12 list=RFC1918\ +> \n#add address=192.168.0.0/16 list=RFC1918\ +> \n#/interface/list/add name=WAN\ +> \n#/interface/list/member/add list=WAN interface=ether1\ +> \n\ +> \n/ip firewall mangle\ +> \nadd action=accept chain=prerouting dst-address-list=RFC1918 in-interface\ +> -list=!WAN\ +> \n/ip firewall mangle\ +> \nadd action=mark-connection chain=prerouting connection-mark=no-mark dst-\ +> address-list=to_vpn in-interface-list=!WAN \\\ +> \n new-connection-mark=to-vpn-conn passthrough=yes\ +> \n/ip firewall mangle\ +> \nadd action=mark-routing chain=prerouting connection-mark=to-vpn-conn in-\ +> interface-list=!WAN new-routing-mark=r_to_vpn \\\ +> \n passthrough=yes\ +> \n/ip firewall mangle\ +> \nadd action=mark-connection chain=output connection-mark=no-mark \\\ +> \n dst-address-list=to_vpn new-connection-mark=to-vpn-conn-local \\\ +> \n passthrough=yes\ +> \nadd action=mark-routing chain=output connection-mark=to-vpn-conn-local \ +> \\\ +> \n new-routing-mark=r_to_vpn passthrough=yes\ +> \n\ +> \n" +4669a4707,4708 +> /container mounts +> add dst=/etc/amnezia/amneziawg list=awg_conf src=/wg +4672,4675c4711,4714 +< add bridge=Bridge-LAN interface=*C4 +< add bridge=Bridge-LAN interface=*C2 +< add bridge=Bridge-LAN interface=*C5 +< add bridge=Bridge-LAN interface=*C1 +--- +> add bridge=Bridge-LAN interface=2G-MikroGig-1 +> add bridge=Bridge-LAN interface=2G-MikroMaster-1 +> add bridge=Bridge-LAN interface=5G-MikroGig-1 +> add bridge=Bridge-LAN interface=5G-MikroMaster-1 +4677,4679c4716 +< # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +< set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ +< forward=no +--- +> set disable-ipv6=yes disable-link-local-address=yes +4684a4722 +> add interface=Bridge-LAN list=LAN +4687d4724 +< add interface=ether2 list=WAN +4691,4692c4728,4729 +< add address=10.30.30.10/24 interface=ether2 network=10.30.30.0 +< add address=10.9.0.3/24 interface=docker-awg-veth network=10.9.0.0 +--- +> add address=10.30.30.10/24 interface=Bridge-LAN network=10.30.30.0 +> add address=172.18.20.1/30 interface=docker-awg-veth network=172.18.20.0 +4711d4747 +< # docker-awg-veth not ready +4714,4715d4749 +< add action=mark-routing chain=prerouting new-routing-mark=r_to_vpn \ +< src-address=10.30.30.0/24 +4717,4719c4751 +< # docker-awg-veth not ready +< add action=masquerade chain=srcnat out-interface=docker-awg-veth \ +< routing-mark=r_to_vpn +--- +> add action=masquerade chain=srcnat out-interface=docker-awg-veth +4759a4792,4793 +> /system gps +> set set-system-time=yes -- 2.52.0