From 948c2b7296d2fe7777d58856eff724457ba5a3db Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 1 May 2026 07:00:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 01 07:00:08. --- .../20260501/20260501070002-Binary.backup | Bin 0 -> 364965 bytes .../20260501/20260501070002-Config.rsc | 5871 +++++++++++++++++ .../20260501/20260501070002-Diff-Config.rsc | 6 + 3 files changed, 5877 insertions(+) create mode 100644 MikroMaster/20260501/20260501070002-Binary.backup create mode 100644 MikroMaster/20260501/20260501070002-Config.rsc create mode 100644 MikroMaster/history/20260501/20260501070002-Diff-Config.rsc diff --git a/MikroMaster/20260501/20260501070002-Binary.backup b/MikroMaster/20260501/20260501070002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..afa247f4f648a24bcd526b40407b55dab3bee663 GIT binary patch literal 364965 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%0AuptY7Ao;^e@KNKB9C> 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�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%0ApDEtX9-R~R{msxzcgsFg^+kGD>&W8FUy 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

`-VM!iMO6PZcS_I>s(5R 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 t*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=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs true;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n \r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n:local FetchFile AM-DOHCert.rsc\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \"[usb1]/scripts/\" . \$FetchFile);\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/352/ae7bad3c\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 05:50:02 01.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global ExitError;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$0 (\"\\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$0 (\"Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"\\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n \$LogPrint warning \$0 (\"This system has low free flash space but \ + \" . \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint info \$0 (\"There are \" . \$CertCount . \" Certificates \ + with CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :global LogPrint;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {:set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :global LogPrint;\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint info \$0 (\"Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Creating disk of type tmpfs failed: \" .\ + \_\$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint debug \$0 (\"... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Making directory '\" . \$Path . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={:set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]};\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={:set Path [ :pick \$Path 1 [ :len\ + \_\$Path ] ]};\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={:set Path [ :\ + pick \$Path 0 ([ :len \$Path ] - 1) ]};\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint error \$0 (\"No valid RouterOS version: \" . \$Required);\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No symbol available for name '\" . \$Name \ + . \"'!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\r\ + \n \r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\r\ + \n \r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Setup Global Environment for scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$Name 0 1 ] = \"\\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);}\r\ + \n}\r\ + \n\r\ + \n:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local FwAddrListsUrl (\$GlobalScriptsUrl . \"fw-addr-lists.d/\");\r\ + \n\r\ + \n :local FwAddrLists {\r\ + \n \"allow\"={\r\ + \n { url=(\$FwAddrListsUrl . \"allow\");\r\ + \n cert=\"ISRG Root X2\"; timeout=1w };\r\ + \n };\r\ + \n \"block\"={\r\ + \n { url=(\$FwAddrListsUrl . \"block\");\r\ + \n cert=\"ISRG Root X2\" };\r\ + \n# { url=\"https://raw.githubusercontent.com/stamparm/ipsum/refs/hea\ + ds/master/levels/4.txt\";\r\ + \n# # higher level (decrease the numerical value) for more addresses, \ + and vice versa\r\ + \n# cert=\"ISRG Root X1\" };\r\ + \n# { url=\"https://www.dshield.org/block.txt\"; cidr=\"/24\";\r\ + \n# cert=\"GTS Root R4\" };\r\ + \n# { url=\"https://lists.blocklist.de/lists/strongips.txt\";\r\ + \n# cert=\"GTS Root R4\" };\r\ + \n# { url=\"https://www.spamhaus.org/drop/drop_v4.json\";\r\ + \n# cert=\"GTS Root R4\" };\r\ + \n# { url=\"https://www.spamhaus.org/drop/drop_v6.json\";\r\ + \n# cert=\"GTS Root R4\" };\r\ + \n };\r\ + \n# \"mikrotik\"={\r\ + \n# { url=(\$FwAddrListsUrl . \"mikrotik\");\r\ + \n# cert=\"ISRG Root X2\"; timeout=1w };\r\ + \n# };\r\ + \n \"FuckRKN\"={\r\ + \n { url=(\$FwAddrListsUrl . \"FuckRKN\");\r\ + \n cert=\"ISRG Root X2\"; timeout=1w };\r\ + \n };\r\ + \n };\r\ + \n :local FwAddrListTimeOut 1d;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHuge;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len [ /log/find where topics=({\"script\"; \"warning\"}) \\\r\ + \n message=(\"\\\$LogPrint: The message is already in log, scripting \ + subsystem may have crashed before!\") ] ] > 0) do={\r\ + \n :log warning (\$ScriptName . \" Scripting subsystem may have crashed\ + , possibly caused by us. Delaying!\");\r\ + \n :delay 5m;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n\r\ + \n :foreach FwListName,FwList in=\$FwAddrLists do={\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n\r\ + \n :foreach List in=\$FwList do={\r\ + \n :local CheckCertificate false;\r\ + \n :local Data false;\r\ + \n :local TimeOut [ \$EitherOr [ :totime (\$List->\"timeout\") ] \$Fw\ + AddrListTimeOut ];\r\ + \n\r\ + \n :if ([ :len (\$List->\"cert\") ] > 0) do={\r\ + \n :set CheckCertificate true;\r\ + \n :if ([ \$CertificateAvailable (\$List->\"cert\") \"fetch\" ] = f\ + alse) do={\r\ + \n :log warning (\$ScriptName . \" Downloading required certifica\ + te (\" . \$FwListName . \\\r\ + \n \" / \" . \$List->\"url\" . \") failed, trying anyway.\");\ + \r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHuge \$ScriptName (\$List->\"url\")\ + \_\$CheckCertificate ] ];\r\ + \n :if (\$Data = false) do={\r\ + \n :if (\$I < 5) do={\r\ + \n :log debug (\$ScriptName . \" Failed downloading for list \ + '\" . \$FwListName . \\\r\ + \n \"', \" . \$I . \". try from: \" . \$List->\"url\");\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" \ + . \$FwListName . \\\r\ + \n \"' from: \" . \$List->\"url\");\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \\\r\ + \n \"B for list '\" . \$FwListName . \"' from: \" . \$List->\"u\ + rl\");\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Li\ + ne ] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"\ + cidr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\ + \\.[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address\ + \_] ];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$C\ + IDR ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3\ + })\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address\ + \_] ];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \ + \"/\" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\")\ + \_do={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\r\ + \n }\r\ + \n } on-error={:log error (\$ScriptName . \" Failed parsing address\ + : \" . \$Line->0);}\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$FwListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log debug (\$ScriptName . \" Renewing IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' with \" . \$TimeOut . \"\ + .\");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log debug (\$ScriptName . \" Removing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$FwListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log debug (\$ScriptName . \" Renewing IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' with \" . \$TimeOut . \"\ + .\");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log debug (\$ScriptName . \" Removing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName .\".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv4 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$FwListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv6 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$FwListName comment=\$Li\ + stComment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$FwListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template=usb1 +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set disable-ipv6=yes max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add comment=WAN interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name="ether1 - Unet" \ + use-peer-dns=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 server=masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=HostName \ + dhcp-option-set=domain-search-set dns-server=10.30.30.81 domain=WORKGROUP \ + gateway=10.30.30.81 netmask=24 ntp-server=10.30.30.81,10.30.30.10 \ + wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=git.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=ros.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface="ether1 - Unet" protocol=tcp src-address-list=\ + !TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +add action=fasttrack-connection chain=forward comment=\ + "FastTrack main traffic" connection-state=established,related disabled=\ + yes +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Telegram dst-address=\ + !10.30.30.0/24 dst-address-list=Telegram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=dst-nat chain=dstnat comment=npm disabled=yes dst-port=81 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=80 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +add action=add-dst-to-address-list address-list=Telegram \ + address-list-timeout=none-dynamic chain=prerouting comment=Telegram \ + content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot walled-garden +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +add action=accept chain=forward comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" interval=1w \ + name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Setup Global Environment for scripts" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ + AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-15 start-time=03:00:00 +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-30 start-time=03:41:27 +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260501/20260501070002-Diff-Config.rsc b/MikroMaster/history/20260501/20260501070002-Diff-Config.rsc new file mode 100644 index 0000000..05eec60 --- /dev/null +++ b/MikroMaster/history/20260501/20260501070002-Diff-Config.rsc @@ -0,0 +1,6 @@ +133,134c133,134 +< add comment=telegram disabled=yes dns-servers=10.30.30.81 name=\ +< api.telegram.org verify-doh-cert=no +--- +> add comment=telegram dns-servers=10.30.30.81 name=api.telegram.org \ +> verify-doh-cert=no -- 2.52.0