From 540bc128807f3a5dd3ec080f3181a7d262ee0dd3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 20:20:51 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 20:20:51. --- .../20260508/20260508202001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508202001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508202001-Diff-Config.rsc | 14 + 3 files changed, 4654 insertions(+) create mode 100644 MikroMaster/20260508/20260508202001-Binary.backup create mode 100644 MikroMaster/20260508/20260508202001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508202001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508202001-Binary.backup b/MikroMaster/20260508/20260508202001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8e0d29dd429c6ee54d3a998881d2607f44cffa6a GIT binary patch literal 298264 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%0DyE&nsVV5|*_jTmU> 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

e*xlkwsYeK6DVTCbQVYSB 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

    Z(2{70}@ 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

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