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

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