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

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