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