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