From c9da65a6151bcf79fce0a7b705d0811242eff42a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 07:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 07:00:18. --- .../20260511/20260511070001-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511070001-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511070001-Diff-Config.rsc | 6 + 3 files changed, 4659 insertions(+) create mode 100644 MikroMaster/20260511/20260511070001-Binary.backup create mode 100644 MikroMaster/20260511/20260511070001-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511070001-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511070001-Binary.backup b/MikroMaster/20260511/20260511070001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ebe0428f39230ffe909b8b6e08929f7916c76eb9 GIT binary patch literal 302647 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�@?o&_@NzLscZ$qMMqST77 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

8jLj5CeYY=s$Ben?$8u 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�)< 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%0DnMd$w}I2is;wN}H(ku(ehH>bDL(*7EEJ)31qCJ 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511070001-Diff-Config.rsc b/MikroMaster/history/20260511/20260511070001-Diff-Config.rsc new file mode 100644 index 0000000..0d7f89f --- /dev/null +++ b/MikroMaster/history/20260511/20260511070001-Diff-Config.rsc @@ -0,0 +1,6 @@ +4297d4296 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4298a4298 +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4314d4313 +< add address=149.154.166.110 comment=api.telegram.org list=FuckRKN -- 2.52.0