From 549940a4f922fc57fce90f02d039bd5ac4e6ab9c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 06:20:17 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 06:20:17. --- .../20260510/20260510062002-Binary.backup | Bin 0 -> 302173 bytes .../20260510/20260510062002-Config.rsc | 4647 +++++++++++++++++ .../20260510/20260510062002-Diff-Config.rsc | 12 + 3 files changed, 4659 insertions(+) create mode 100644 MikroMaster/20260510/20260510062002-Binary.backup create mode 100644 MikroMaster/20260510/20260510062002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510062002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510062002-Binary.backup b/MikroMaster/20260510/20260510062002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4c78b88490ccf6bd08c95624624a9bf889ea3a6c GIT binary patch literal 302173 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%0AYMHIJAx=M90!$R7%ZC2 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 x8_lF2YNE1`XfU)\"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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.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.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN 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=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +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/20260510062002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510062002-Diff-Config.rsc new file mode 100644 index 0000000..d4db64f --- /dev/null +++ b/MikroMaster/history/20260510/20260510062002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4297d4296 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=188.114.97.1 comment=lostfilm.tv 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 +4307d4306 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4308a4308 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0