From bab9007c167f3ec4047686d18d9a570d60e624dc Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 19:40:47 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 19:40:47. --- .../20260508/20260508194002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508194002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508194002-Diff-Config.rsc | 12 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260508/20260508194002-Binary.backup create mode 100644 MikroMaster/20260508/20260508194002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508194002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508194002-Binary.backup b/MikroMaster/20260508/20260508194002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..89f1d8bdbdb6a7ca44dcb4bd2db945a0b103e7ec GIT binary patch literal 298264 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 z�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Μ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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +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.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260508194002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508194002-Diff-Config.rsc new file mode 100644 index 0000000..1e1a3a5 --- /dev/null +++ b/MikroMaster/history/20260508/20260508194002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4297d4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0