From 0c8719f576760259e5932e850ab881f4f761de74 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 16:40:36 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 16:40:36. --- .../20260507/20260507164002-Binary.backup | Bin 0 -> 295944 bytes .../20260507/20260507164002-Config.rsc | 4625 +++++++++++++++++ .../20260507/20260507164002-Diff-Config.rsc | 20 + 3 files changed, 4645 insertions(+) create mode 100644 MikroMaster/20260507/20260507164002-Binary.backup create mode 100644 MikroMaster/20260507/20260507164002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507164002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507164002-Binary.backup b/MikroMaster/20260507/20260507164002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c02ec35abb82dcb10991ee2fcf66031a0821a7fa GIT binary patch literal 295944 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�Vh{T;Jo8`d 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%0AE#w=l;3^!>io8CFwIaX;LRf!zg(6Hy8E#}6-J$n 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

%$X_2s9O-mOS)Z9kfe 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⩔MG&P~kByW2-P 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

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