From 178dca864f8035381874f92adb7e51c49ece2c8a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 30 Apr 2026 14:00:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 30 14:00:08. --- .../20260430/20260430140002-Binary.backup | Bin 0 -> 351529 bytes .../20260430/20260430140002-Config.rsc | 5523 +++++++++++++++++ .../20260430/20260430140002-Diff-Config.rsc | 18 + 3 files changed, 5541 insertions(+) create mode 100644 MikroMaster/20260430/20260430140002-Binary.backup create mode 100644 MikroMaster/20260430/20260430140002-Config.rsc create mode 100644 MikroMaster/history/20260430/20260430140002-Diff-Config.rsc diff --git a/MikroMaster/20260430/20260430140002-Binary.backup b/MikroMaster/20260430/20260430140002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..2d103a5c21a6bd669e113db2aa3d4c83046649cb GIT binary patch literal 351529 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≠-45mz-~^(c-|A6&*tduPX$B7 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

DlK0ra@D&&q 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�SIC3`0 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

sHa} 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 lykH|D}%Hyi!Lh0fMyCoAF29T|-s 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

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