From 5e28226368bbe7dbc65e1b9089866b2f55f2d34a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 00:20:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 00:20:39. --- .../20260511/20260511002001-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511002001-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511002001-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260511/20260511002001-Binary.backup create mode 100644 MikroMaster/20260511/20260511002001-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511002001-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511002001-Binary.backup b/MikroMaster/20260511/20260511002001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..5c9182f8eeae517b7b4bb32317fafc9893e60c1b GIT binary patch literal 302647 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 z
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

DU;!9h1LHYO5L)+(xAYonEO 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

wS503TyLJiedTvm>@e|uv<@2M}K2$V4VzF~V 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# 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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.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=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 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/20260511/20260511002001-Diff-Config.rsc b/MikroMaster/history/20260511/20260511002001-Diff-Config.rsc new file mode 100644 index 0000000..57756fa --- /dev/null +++ b/MikroMaster/history/20260511/20260511002001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4297d4296 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com 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