From 5d7a6e9594c8cd75e997ca3deb6b0cd9b2082f61 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 23:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 23:20:18. --- .../20260512/20260512232002-Binary.backup | Bin 0 -> 303767 bytes .../20260512/20260512232002-Config.rsc | 4656 +++++++++++++++++ .../20260512/20260512232002-Diff-Config.rsc | 14 + 3 files changed, 4670 insertions(+) create mode 100644 MikroMaster/20260512/20260512232002-Binary.backup create mode 100644 MikroMaster/20260512/20260512232002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512232002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512232002-Binary.backup b/MikroMaster/20260512/20260512232002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..65502e25aa45fb7b0af777345cf8714c295e15c3 GIT binary patch literal 303767 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�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%0ACu9Fgs`clf1V>9tSW0asIl* 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�qato@^5L0)(q0&k< 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

ekA1#!D1!p<0P`Ss`uXe`%dx%y0Z* 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%0AIkspcS6pkA#gpHK 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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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +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 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0,0.0.0.0/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=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=10.30.30.81 comment=LocalNet name=MikroVados 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=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=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.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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.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=104.20.28.254 comment=dou.ua list=FuckRKN +add address=172.66.164.200 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" \ + disabled=yes 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=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" out-interface-list=WAN +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/20260512/20260512232002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512232002-Diff-Config.rsc new file mode 100644 index 0000000..9467868 --- /dev/null +++ b/MikroMaster/history/20260512/20260512232002-Diff-Config.rsc @@ -0,0 +1,14 @@ +4303d4302 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4305c4304 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4306a4306 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4308,4309c4308,4309 +< add address=104.20.28.254 comment=dou.ua list=FuckRKN +< add address=172.66.164.200 comment=dou.ua list=FuckRKN +--- +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0