From cd9b67c845a180d4cb5ef6dbe9381547da8450fb Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 23:20:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 23:20:40. --- .../20260508/20260508232001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508232001-Config.rsc | 4639 +++++++++++++++++ .../20260508/20260508232001-Diff-Config.rsc | 4 + 3 files changed, 4643 insertions(+) create mode 100644 MikroMaster/20260508/20260508232001-Binary.backup create mode 100644 MikroMaster/20260508/20260508232001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508232001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508232001-Binary.backup b/MikroMaster/20260508/20260508232001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..105dc82feab12b174421c44fde548b0e9e08a3b3 GIT binary patch literal 298264 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

_ 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

g16i2=!lbFsR|hhbwk$_Us%3Sq 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�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

-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

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