From b3711924bb4142940e892316cd2fe1e5e9f20124 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 18:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 18:00:18. --- .../20260511/20260511180002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511180002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511180002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260511/20260511180002-Binary.backup create mode 100644 MikroMaster/20260511/20260511180002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511180002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511180002-Binary.backup b/MikroMaster/20260511/20260511180002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..95cfd7631b730612d5b3c3d039976ca2872b1966 GIT binary patch literal 302647 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

)Pj7W^uX4aqiK`CBv?0Jex+{CmcW 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%0ALEpd#B8J8D|r`M=DbTl9duhbd7l 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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 disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511180002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511180002-Diff-Config.rsc new file mode 100644 index 0000000..9468df5 --- /dev/null +++ b/MikroMaster/history/20260511/20260511180002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4297d4296 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0