From f40aab4d78afc73c0c89ee7e747c7029ffe2e1be Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 07:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 07:00:18. --- .../20260510/20260510070002-Binary.backup | Bin 0 -> 302181 bytes .../20260510/20260510070002-Config.rsc | 4647 +++++++++++++++++ .../20260510/20260510070002-Diff-Config.rsc | 32 + 3 files changed, 4679 insertions(+) create mode 100644 MikroMaster/20260510/20260510070002-Binary.backup create mode 100644 MikroMaster/20260510/20260510070002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510070002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510070002-Binary.backup b/MikroMaster/20260510/20260510070002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4128ebb0222aacc58680a0dc050e70efd55fc948 GIT binary patch literal 302181 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 UAv%#toS>yTR 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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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/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 +/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.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN 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 +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260510/20260510070002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510070002-Diff-Config.rsc new file mode 100644 index 0000000..1582a70 --- /dev/null +++ b/MikroMaster/history/20260510/20260510070002-Diff-Config.rsc @@ -0,0 +1,32 @@ +4297d4296 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4299c4298 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4300a4300 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4302d4301 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4303a4303 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4307c4306 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4308a4308 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4404,4405c4404,4405 +< disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ +< log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +--- +> dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ +> VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +4422,4423d4421 +< add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ +< out,none out-interface="ether1 - Unet" +4425a4424,4425 +> add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ +> out,none out-interface="ether1 - Unet" -- 2.52.0