From b8b5a6e5daea50a944aa8a63dca4fc4c716e0fc5 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 11:20:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 11:20:41. --- .../20260509/20260509112001-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509112001-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509112001-Diff-Config.rsc | 12 + 3 files changed, 4651 insertions(+) create mode 100644 MikroMaster/20260509/20260509112001-Binary.backup create mode 100644 MikroMaster/20260509/20260509112001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509112001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509112001-Binary.backup b/MikroMaster/20260509/20260509112001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1ea88b0c62026c49dca377b97b7c6c9ad687e31e GIT binary patch literal 298264 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

MZCTzWvu4YWvr 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

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