From c613aae3f7eeb609939fd9f2de48225247615bc8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 09:40:48 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 09:40:48. --- .../20260507/20260507094002-Binary.backup | Bin 0 -> 291155 bytes .../20260507/20260507094002-Config.rsc | 4601 +++++++++++++++++ .../20260507/20260507094002-Diff-Config.rsc | 33 + 3 files changed, 4634 insertions(+) create mode 100644 MikroMaster/20260507/20260507094002-Binary.backup create mode 100644 MikroMaster/20260507/20260507094002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507094002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507094002-Binary.backup b/MikroMaster/20260507/20260507094002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..bcc082497715523beb4c4afa06e36dd334321ebd GIT binary patch literal 291155 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

(SOjL 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


CMbh`#R%;HYF9CmrQ@$JLpgr|I9Lggj0-f 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \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\";\ + \n#:local Script AM-GlobalConfig;\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-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/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\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#/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\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 Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\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 UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \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\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 /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\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\"; \"mod/AM-\ + Certs-By-Ident\" } 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 comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\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 MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\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 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 GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\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 ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\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 updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$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 :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$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 :log info (\$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 :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$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 :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\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 :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 :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 :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\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:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\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:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\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 :log 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 :log 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 :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log 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 :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\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 ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$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=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$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 :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' 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 :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 :log 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 FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\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 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 [ :le\ + n \$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 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 RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\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 :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\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={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :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 :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\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 :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\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\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 :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log 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 :log 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 :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log 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 :log 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 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 VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log 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 :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 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\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\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\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 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 :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\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 :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', 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\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\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\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\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 :log 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\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\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\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\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\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:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\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\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\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\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 \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\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 (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\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={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\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 \"Every Day Set Global Environment Variables\";\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: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:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/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="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/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 allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no 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 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 configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=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-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/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 dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/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.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 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.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 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=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +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 +/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.4.4,8.8.8.8 +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +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=reg.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.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" 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=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/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=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 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=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=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns list=TrustedNS +add address=dns.google comment=Google-dns list=TrustedNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=TrustedNS +/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 src-address=!10.30.30.0/24 +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 src-address=!10.30.30.0/24 +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 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +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="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 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +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-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no 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 log-prefix=VPN-all new-routing-mark=To-VPN \ + passthrough=no 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 passthrough=no 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 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/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 \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +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 +/ip firewall raw +add action=accept chain=prerouting in-interface-list=WAN src-address-list=\ + TrustedNS +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 +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 user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +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=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG \ + routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy 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 disabled=yes +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 +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/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 note +set show-at-login=no +/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="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + 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="Every Day Set Global Environment Variables" 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="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260507/20260507094002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507094002-Diff-Config.rsc new file mode 100644 index 0000000..58b147e --- /dev/null +++ b/MikroMaster/history/20260507/20260507094002-Diff-Config.rsc @@ -0,0 +1,33 @@ +3630c3630 +< add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ +--- +> add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ +3632c3632 +< add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ +--- +> add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ +3634,3636c3634,3637 +< add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ +< type=A +< add address=9.9.9.9 comment="Cuad9-dns IPv4 1" 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=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ +> dns.quad9.net type=A +4269,4271c4270,4273 +< add address=dns.quad9.net comment=Quad9-dns list=TrustedNS +< add address=dns.google comment=Google-dns list=TrustedNS +< add address=security.cloudflare-dns.com comment=CloudFlare-dns list=TrustedNS +--- +> add address=8.8.8.8 comment=Google list=TrustedNS +> add address=8.8.4.4 comment=Google list=TrustedNS +> add address=1.1.1.1 comment=CloudFlare list=TrustedNS +> add address=1.0.0.1 comment=CloudFlare list=TrustedNS +4399,4400d4400 +< add action=accept chain=prerouting in-interface-list=WAN src-address-list=\ +< TrustedNS +4461c4461 +< smtp.mail.me.com content=smtp.mail.me.com +--- +> smtp.mail.me.com content=smtp.mail.me.com log=yes -- 2.52.0