From 96afe2d8544f258f15d13421545dc11dc6c1ccd4 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 15 Apr 2026 16:20:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 15 16:20:08. --- .../20260415/20260415162002-Binary.backup | Bin 0 -> 312149 bytes .../20260415/20260415162002-Config.rsc | 4524 +++++++++++++++++ .../20260415/20260415162002-Diff-Config.rsc | 5 + 3 files changed, 4529 insertions(+) create mode 100644 MikroMaster/20260415/20260415162002-Binary.backup create mode 100644 MikroMaster/20260415/20260415162002-Config.rsc create mode 100644 MikroMaster/history/20260415/20260415162002-Diff-Config.rsc diff --git a/MikroMaster/20260415/20260415162002-Binary.backup b/MikroMaster/20260415/20260415162002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..29b2849b58a8391febf358e0defcd105dc753bd2 GIT binary patch literal 312149 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 u>o;ad?02>JfZdBxcUp&5U(7sUNtoGNUf4%R= 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=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\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 ch\ + eck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".rs\ + c\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub" +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/226/e1cd7257\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 09:45:02 01.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="[tmpfs]" +/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 +/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" \ + 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 +/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/20260415/20260415162002-Diff-Config.rsc b/MikroMaster/history/20260415/20260415162002-Diff-Config.rsc new file mode 100644 index 0000000..54e23b1 --- /dev/null +++ b/MikroMaster/history/20260415/20260415162002-Diff-Config.rsc @@ -0,0 +1,5 @@ +656,657c656 +< \r\ +< \n#root.mnuc.backuper\r\ +--- +> root.mnuc.backuper\r\ -- 2.52.0