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