From ce4addfb649667c240d82584287db53d1cb78461 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 22:21:25 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 22:21:25. --- .../20260507/20260507222001-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507222001-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507222001-Diff-Config.rsc | 8 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260507/20260507222001-Binary.backup create mode 100644 MikroMaster/20260507/20260507222001-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507222001-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507222001-Binary.backup b/MikroMaster/20260507/20260507222001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c14f86f3e8f6dbe47e7877002a614524e7dabb89 GIT binary patch literal 297773 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 CQD44XJdp=4ife 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

pLs3EhKY;i!j=<@N_k}eVn!E)PuF;VicZR!on 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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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.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.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260507222001-Diff-Config.rsc b/MikroMaster/history/20260507/20260507222001-Diff-Config.rsc new file mode 100644 index 0000000..d29fb18 --- /dev/null +++ b/MikroMaster/history/20260507/20260507222001-Diff-Config.rsc @@ -0,0 +1,8 @@ +4298d4297 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4299a4299 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4308d4307 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4309a4309 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0