From 7a360fdb2a79080eace1e8e82ead40a0ec8b6deb Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 09:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 09:20:18. --- .../20260510/20260510092002-Binary.backup | Bin 0 -> 302363 bytes .../20260510/20260510092002-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510092002-Diff-Config.rsc | 33 + 3 files changed, 4686 insertions(+) create mode 100644 MikroMaster/20260510/20260510092002-Binary.backup create mode 100644 MikroMaster/20260510/20260510092002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510092002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510092002-Binary.backup b/MikroMaster/20260510/20260510092002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..745ad67e558026b41593f3f3b078729cf35b5af6 GIT binary patch literal 302363 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
yu^-akJ~T^ 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�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�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

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