From c2a61a1bcd44428b92cd287a3fbfbe32849b70a3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 08:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 08:00:18. --- .../20260512/20260512080001-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512080001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512080001-Diff-Config.rsc | 20 + 3 files changed, 4673 insertions(+) create mode 100644 MikroMaster/20260512/20260512080001-Binary.backup create mode 100644 MikroMaster/20260512/20260512080001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512080001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512080001-Binary.backup b/MikroMaster/20260512/20260512080001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6a37fb27c6c7cd46d69e4cba68f66d47e6fac178 GIT binary patch literal 302647 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

|st|LbGj)PGKE~Y`O(@=o*x!w0u(;Po29)-6F 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 z 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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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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 +# same mac-address as ether1 - Unet +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 +# same mac-address as ether1 - Unet +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,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/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=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.33 comment=AMSTER name=amster.vados.ru type=A +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 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=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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com 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 +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!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +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 disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/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-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +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-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +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-list=WAN 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-list=WAN protocol=udp \ + src-address-list=!TRUSTED +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-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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 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=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-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN 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=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +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" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +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=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=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +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 +/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 +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/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 package update +set channel=development +/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" 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/20260512/20260512080001-Diff-Config.rsc b/MikroMaster/history/20260512/20260512080001-Diff-Config.rsc new file mode 100644 index 0000000..88aa145 --- /dev/null +++ b/MikroMaster/history/20260512/20260512080001-Diff-Config.rsc @@ -0,0 +1,20 @@ +4297d4296 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4309d4308 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4310a4310 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0