From 96e49d774b2edc5d11d17e1b0dbeed9356aa6213 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 16 Apr 2026 09:20:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 16 09:20:08. --- .../20260416/20260416092001-Binary.backup | Bin 0 -> 315604 bytes .../20260416/20260416092001-Config.rsc | 4536 +++++++++++++++++ .../20260416/20260416092001-Diff-Config.rsc | 7 + 3 files changed, 4543 insertions(+) create mode 100644 MikroMaster/20260416/20260416092001-Binary.backup create mode 100644 MikroMaster/20260416/20260416092001-Config.rsc create mode 100644 MikroMaster/history/20260416/20260416092001-Diff-Config.rsc diff --git a/MikroMaster/20260416/20260416092001-Binary.backup b/MikroMaster/20260416/20260416092001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..81a440feb46e4b1b01361aae6d60c24664650529 GIT binary patch literal 315604 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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 dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \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## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\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:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\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 :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\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 :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\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-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add 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-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \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/233/efe032c8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 22:05:02 15.04.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 \$LogPrint debug \$0 (\"\\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if (\$CurrentChannel != \$updateChannel) 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 (\$Update->\"channel\");\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\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 \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([:len \$arrDeviceInfo] = 0) do={\r\ + \n :global arrDeviceInfo ({});\r\ + \n :local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};}\ + );\r\ + \n }\r\ + \n # else={:local arrDeviceInfo ({})}\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [[ :parse \"/\ + system/package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"\ + Error\")};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannel\"; \$Cu\ + rrentChannel;};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentVersion\"; (\$U\ + pdate->\"installed-version\");};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannelVersion\ + \"; [/system/resource/get version];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateChannel\"; [\$up\ + dateChannel];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateVersion\"; (\$Up\ + date->\"latest-version\");};\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\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\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n\r\ + \n :global arrDeviceInfo [:toarray {\"section\"={\"key\"=\"\"; \"value\"\ + =\"\";} }];\r\ + \n #:do {:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system/package\ + /update/get\" ]]} on-error={}\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devRbCurrentFw;\r\ + \n :global devRbUpgradeFw;\r\ + \n\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global ROsVerCurrent;\r\ + \n :global ROsChannelCurrent;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :global ParseCustom;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global devBuildTime;\r\ + \n :global GetPubIp;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :set devBuildTime (\$Resource->\"build-time\");\r\ + \n :set runningChannelVersion (\$Resource->\"version\");\r\ + \n :set runningChannel [\$ParseCustom \$runningChannelVersion \"(\" \")\ + \" 1];\r\ + \n :set runningVersion [\$ParseCustom \$runningChannelVersion \" \"];\r\ + \n\r\ + \n :do {\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :local RouterBoard;\r\ + \n :do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on\ + -error={}\r\ + \n :set devModel (\$RouterBoard->\"model\");\r\ + \n :set devRbRevision (\$RouterBoard->\"revision\");\r\ + \n :set devRbSerialNumber (\$RouterBoard->\"serial-number\");\r\ + \n #:set devRbCurrentFw (\$RouterBoard->\"current-firmware\");\r\ + \n #:set devRbUpgradeFw (\$RouterBoard->\"upgrade-firmware\");\r\ + \n :if (\$devCurArch = \"mipsbe\" || \$devCurArch = \"arm\") do={\r\ + \n :global devRunning [ /system/device-mode/get mode ];\r\ + \n } else={\r\ + \n :global devRunning [/system/device-mode/get running];}\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n\r\ + \n :set devRbRevision false;\r\ + \n :set devRbSerialNumber false;\r\ + \n# :set devRbCurrentFw false;\r\ + \n# :set devRbUpgradeFw false;\r\ + \n #:set devCurrentFw \$runningVersion;#:set devUpgradeFw \$ROsVerAvail\ + ;\r\ + \n :set devRunning [/system/device-mode/get running];\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Error in Function getDevice!\");\r\ + \n :return false;\r\ + \n }\r\ + \n:return true;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global WaitArrDeviceInfo;\r\ + \n # \$WaitDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devCurArch;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global PiblicIpAddress;\r\ + \n\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :local Return;\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n\r\ + \n :set Return ([ \$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:\" . \$devBoardName ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Arch:\" . \$devCurArch ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Model:\" \$devModel ] . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbRevision ] > 0) \\\r\ + \n (\" \" . \$devRbRevision) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbSerialNumber ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial:\" . \$devRbSerialNumber ] . \"\\n\"\ + ) ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"nleve\ + l\")) ] . \"\\n\") ] . \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Running Channel\" \$runningChannel ] . \"\\n\" . \\\ + \r\ + \n [ \$FormatLine \" Installed:\" (\$Update->\"installed-version\") \ + ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :typeof (\$Update->\"latest-version\") ] != \"noth\ + ing\" && \\\r\ + \n \$Update->\"installed-version\" != \$Update->\"latest-version\")\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Update->\"latest-version\") ]\ + \_. \"\\n\") ] . \\\r\ + \n [ \$IfThenElse (\$RouterBoard->\"routerboard\" = true && \\\r\ + \n \$RouterBoard->\"current-firmware\" != \$RouterBoard->\"upgrade-\ + firmware\") \\\r\ + \n ([ \$FormatLine \" Firmware\" (\$RouterBoard->\"current-firmwar\ + e\") ] . \"\\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 :global LogPrint;\r\ + \n \r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n\r\ + \n# :retry command={abc} delay=1 max=2 on-error={:put \"got error\"} \r\ + \n :do {\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using default s\ + ervice: \" . \$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={\$LogPrint error [ :jobname ] (\"Fail\ + ed to detect public IP using default service: \" . \$Url . \".\")}\r\ + \n #:error \"Failed to detect public IP using default service: \$Url\ + .\"};\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Failed to detect public IP using default s\ + ervice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using fallback \ + service: \" . \$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={\$LogPrint error [ :jobname ] (\"Fai\ + led to detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :if (\$PubIpAddr = false) do={\r\ + \n :set PubIpAddr \"not-detected\";\r\ + \n } else={\r\ + \n :set PubIpAddr [ :pick \$PubIpAddr 0 15];\r\ + \n }\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: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 :global LogPrint;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n \$LogPrint 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" +/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=\ + domain-search-list 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="VDSIna for All sites" \ + disabled=yes 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=NoVdsina \ + 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="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +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 +/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/20260416/20260416092001-Diff-Config.rsc b/MikroMaster/history/20260416/20260416092001-Diff-Config.rsc new file mode 100644 index 0000000..4d934d7 --- /dev/null +++ b/MikroMaster/history/20260416/20260416092001-Diff-Config.rsc @@ -0,0 +1,7 @@ +4195,4197c4195,4196 +< disabled=yes 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 +--- +> 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 -- 2.52.0