From 23d64005b55c1d9031eabb6dc97a96505f281977 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 16:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 16:20:18. --- .../20260510/20260510162002-Binary.backup | Bin 0 -> 302363 bytes .../20260510/20260510162002-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510162002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260510/20260510162002-Binary.backup create mode 100644 MikroMaster/20260510/20260510162002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510162002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510162002-Binary.backup b/MikroMaster/20260510/20260510162002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..789018f0955a90029cb55cde17cda1452ffeb309 GIT binary patch literal 302363 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
F-3LP56 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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=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260510/20260510162002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510162002-Diff-Config.rsc new file mode 100644 index 0000000..3d4f82a --- /dev/null +++ b/MikroMaster/history/20260510/20260510162002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0