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