From 3fbda3905502e86be53ee9190b3ac6b0916b992d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 14:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 14:40:18. --- .../20260511/20260511144002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511144002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511144002-Diff-Config.rsc | 4 + 3 files changed, 4657 insertions(+) create mode 100644 MikroMaster/20260511/20260511144002-Binary.backup create mode 100644 MikroMaster/20260511/20260511144002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511144002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511144002-Binary.backup b/MikroMaster/20260511/20260511144002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a934389c0ed4b8d8921d6d9ff9b1660b3a75fe53 GIT binary patch literal 302647 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�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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.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511144002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511144002-Diff-Config.rsc new file mode 100644 index 0000000..e9cc7f3 --- /dev/null +++ b/MikroMaster/history/20260511/20260511144002-Diff-Config.rsc @@ -0,0 +1,4 @@ +4303d4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN -- 2.52.0