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