From 5b937649c1b74ba349779853ae2e92c0974afe61 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 13:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 13:00:18. --- .../20260512/20260512130002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512130002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512130002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512130002-Binary.backup create mode 100644 MikroMaster/20260512/20260512130002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512130002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512130002-Binary.backup b/MikroMaster/20260512/20260512130002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..97853752fe871e2d267e6a76c336a767eb6f6ff4 GIT binary patch literal 302653 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

LBxg=i0!B22_%S1(R0 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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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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/20260512/20260512130002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512130002-Diff-Config.rsc new file mode 100644 index 0000000..f489771 --- /dev/null +++ b/MikroMaster/history/20260512/20260512130002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4297d4296 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0