From f87a2a1f012ff87ea483fdb58c869d5d6acf729d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 1 May 2026 07:20:07 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 01 07:20:07. --- .../20260501/20260501072002-Binary.backup | Bin 0 -> 364251 bytes .../20260501/20260501072002-Config.rsc | 5868 +++++++++++++++++ .../20260501/20260501072002-Diff-Config.rsc | 8 + 3 files changed, 5876 insertions(+) create mode 100644 MikroMaster/20260501/20260501072002-Binary.backup create mode 100644 MikroMaster/20260501/20260501072002-Config.rsc create mode 100644 MikroMaster/history/20260501/20260501072002-Diff-Config.rsc diff --git a/MikroMaster/20260501/20260501072002-Binary.backup b/MikroMaster/20260501/20260501072002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..85d897b918a5160585d55a3cc0b80d691c3cc148 GIT binary patch literal 364251 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 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\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 SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs true;\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 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 :local CertSettings [ /certificate/settings/get ];\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 \r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\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 :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 dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\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/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \"[usb1]/scripts/\" . \$FetchFile);\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/352/ae7bad3c\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 05:50:02 01.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\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 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 WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\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 FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$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\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\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\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\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\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: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: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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\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 :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\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 \$LogPrint 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 \$LogPrint 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 \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint 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 \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\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 GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$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 \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' 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 :global LogPrint;\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 \$LogPrint 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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\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 (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\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 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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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 MiniDateTimeStamp do={\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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {: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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\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 :global LogPrint;\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 \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint 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 \$LogPrint 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 \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint 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 \$LogPrint 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 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 [ :len\ + \_\$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 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 LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint 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 \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 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: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: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 LogPrint;\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 \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\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 \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', 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: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: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:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\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 \$LogPrint 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: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: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: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:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\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: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# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\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 #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\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 :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\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 \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\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 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\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 \"Setup Global Environment for scripts\";\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#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\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# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\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} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados 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="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\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 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 CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\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 :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +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 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 FwAddrListsUrl (\$GlobalScriptsUrl . \"fw-addr-lists.d/\");\r\ + \n\r\ + \n :local FwAddrLists {\r\ + \n \"allow\"={\r\ + \n { url=(\$FwAddrListsUrl . \"allow\");\r\ + \n cert=\"ISRG Root X2\"; timeout=1w };\r\ + \n };\r\ + \n \"block\"={\r\ + \n { url=(\$FwAddrListsUrl . \"block\");\r\ + \n cert=\"ISRG Root X2\" };\r\ + \n# { url=\"https://raw.githubusercontent.com/stamparm/ipsum/refs/hea\ + ds/master/levels/4.txt\";\r\ + \n# # higher level (decrease the numerical value) for more addresses, \ + and vice versa\r\ + \n# cert=\"ISRG Root X1\" };\r\ + \n# { url=\"https://www.dshield.org/block.txt\"; cidr=\"/24\";\r\ + \n# cert=\"GTS Root R4\" };\r\ + \n# { url=\"https://lists.blocklist.de/lists/strongips.txt\";\r\ + \n# cert=\"GTS Root R4\" };\r\ + \n# { url=\"https://www.spamhaus.org/drop/drop_v4.json\";\r\ + \n# cert=\"GTS Root R4\" };\r\ + \n# { url=\"https://www.spamhaus.org/drop/drop_v6.json\";\r\ + \n# cert=\"GTS Root R4\" };\r\ + \n };\r\ + \n# \"mikrotik\"={\r\ + \n# { url=(\$FwAddrListsUrl . \"mikrotik\");\r\ + \n# cert=\"ISRG Root X2\"; timeout=1w };\r\ + \n# };\r\ + \n \"FuckRKN\"={\r\ + \n { url=(\$FwAddrListsUrl . \"FuckRKN\");\r\ + \n cert=\"ISRG Root X2\"; timeout=1w };\r\ + \n };\r\ + \n };\r\ + \n :local FwAddrListTimeOut 1d;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHuge;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n\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 :if ([ :len [ /log/find where topics=({\"script\"; \"warning\"}) \\\r\ + \n message=(\"\\\$LogPrint: The message is already in log, scripting \ + subsystem may have crashed before!\") ] ] > 0) do={\r\ + \n :log warning (\$ScriptName . \" Scripting subsystem may have crashed\ + , possibly caused by us. Delaying!\");\r\ + \n :delay 5m;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n\r\ + \n :foreach FwListName,FwList in=\$FwAddrLists do={\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\r\ + \n :foreach List in=\$FwList do={\r\ + \n :local CheckCertificate false;\r\ + \n :local Data false;\r\ + \n :local TimeOut [ \$EitherOr [ :totime (\$List->\"timeout\") ] \$Fw\ + AddrListTimeOut ];\r\ + \n\r\ + \n :if ([ :len (\$List->\"cert\") ] > 0) do={\r\ + \n :set CheckCertificate true;\r\ + \n :if ([ \$CertificateAvailable (\$List->\"cert\") \"fetch\" ] = f\ + alse) do={\r\ + \n :log warning (\$ScriptName . \" Downloading required certifica\ + te (\" . \$FwListName . \\\r\ + \n \" / \" . \$List->\"url\" . \") failed, trying anyway.\");\ + \r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHuge \$ScriptName (\$List->\"url\")\ + \_\$CheckCertificate ] ];\r\ + \n :if (\$Data = false) do={\r\ + \n :if (\$I < 5) do={\r\ + \n :log debug (\$ScriptName . \" Failed downloading for list \ + '\" . \$FwListName . \\\r\ + \n \"', \" . \$I . \". try from: \" . \$List->\"url\");\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\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 '\" \ + . \$FwListName . \\\r\ + \n \"' from: \" . \$List->\"url\");\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \\\r\ + \n \"B for list '\" . \$FwListName . \"' from: \" . \$List->\"u\ + rl\");\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Li\ + ne ] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"\ + cidr\") ];\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 \$C\ + IDR ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\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 :error true;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\")\ + \_do={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\r\ + \n }\r\ + \n } on-error={:log error (\$ScriptName . \" Failed parsing address\ + : \" . \$Line->0);}\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$FwListName 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 debug (\$ScriptName . \" Renewing IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' 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 debug (\$ScriptName . \" Removing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\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=\$FwListName 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 debug (\$ScriptName . \" Renewing IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' 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 debug (\$ScriptName . \" Removing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName .\".\");\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 debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv4 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$FwListName 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 IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv6 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$FwListName comment=\$Li\ + stComment \\\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 '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$FwListName . \\\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" +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template=usb1 +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set disable-ipv6=yes max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add comment=WAN interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name="ether1 - Unet" \ + use-peer-dns=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 server=masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=HostName \ + dhcp-option-set=domain-search-set dns-server=10.30.30.81 domain=WORKGROUP \ + gateway=10.30.30.81 netmask=24 ntp-server=10.30.30.81,10.30.30.10 \ + wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=git.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=ros.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface="ether1 - Unet" protocol=tcp src-address-list=\ + !TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +add action=fasttrack-connection chain=forward comment=\ + "FastTrack main traffic" connection-state=established,related disabled=\ + yes +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Telegram dst-address=\ + !10.30.30.0/24 dst-address-list=Telegram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=dst-nat chain=dstnat comment=npm disabled=yes dst-port=81 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=80 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=Telegram \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot walled-garden +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/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 publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +add action=accept chain=forward comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +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 +add address=time.google.com disabled=yes +/system scheduler +add comment="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" interval=1w \ + name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Setup Global Environment for scripts" 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="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ + AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-15 start-time=03:00:00 +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-04-30 start-time=03:41:27 +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260501/20260501072002-Diff-Config.rsc b/MikroMaster/history/20260501/20260501072002-Diff-Config.rsc new file mode 100644 index 0000000..bd2392f --- /dev/null +++ b/MikroMaster/history/20260501/20260501072002-Diff-Config.rsc @@ -0,0 +1,8 @@ +5643c5643 +< add action=add-dst-to-address-list address-list=Telegram \ +--- +> add action=add-dst-to-address-list address-list=NoVdsina \ +5645a5646,5648 +> add action=add-dst-to-address-list address-list=Telegram \ +> address-list-timeout=none-dynamic chain=prerouting comment=Telegram \ +> content=api.telegram.org -- 2.52.0