From 233b3848e69481a347eb1eeb65928e46e377482e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 16:20:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 16:20:41. --- .../20260507/20260507162002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507162002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507162002-Diff-Config.rsc | 4 + 3 files changed, 4648 insertions(+) create mode 100644 MikroMaster/20260507/20260507162002-Binary.backup create mode 100644 MikroMaster/20260507/20260507162002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507162002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507162002-Binary.backup b/MikroMaster/20260507/20260507162002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f5337eb819dc7ffd337a20cee7acdb5bbab2d79e GIT binary patch literal 297773 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
+5X{#p$U7RXrHD7V)m7hI_-(@4#aT6*)ATC!ay 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

P_&5BaK0jD`_9 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 Rr6YRT7l@b@bn`\"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=vados 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 \"dns.google\"\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=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" 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!!!! disabled=yes 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 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=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" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 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=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 +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" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=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" 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 +add blackhole disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG \ + routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260507/20260507162002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507162002-Diff-Config.rsc new file mode 100644 index 0000000..e5e1b21 --- /dev/null +++ b/MikroMaster/history/20260507/20260507162002-Diff-Config.rsc @@ -0,0 +1,4 @@ +4306d4305 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4307a4307 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0