From 2c632a0b41a097ca2303eb392f001f393f562002 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 21:00:37 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 21:00:37. --- .../20260507/20260507210002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507210002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507210002-Diff-Config.rsc | 16 + 3 files changed, 4660 insertions(+) create mode 100644 MikroMaster/20260507/20260507210002-Binary.backup create mode 100644 MikroMaster/20260507/20260507210002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507210002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507210002-Binary.backup b/MikroMaster/20260507/20260507210002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3f36af1e58e273f25df926afa417069c6fa33326 GIT binary patch literal 297773 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 z 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�T(s^w$?f!%5rJXQ%<%*k92md#fnb+M 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 R#24#SHOh~nL<{C5#\"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=vados 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 \"dns.google\"\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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input 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 +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes 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/20260507/20260507210002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507210002-Diff-Config.rsc new file mode 100644 index 0000000..a1c8a94 --- /dev/null +++ b/MikroMaster/history/20260507/20260507210002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4294d4293 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4296c4295 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4297a4297 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300d4299 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4301a4301 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4307a4307 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0