From 7951a3a602a4a7449ec80589df7429f8c57ce883 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 11:40:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 11:40:41. --- .../20260509/20260509114002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509114002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509114002-Diff-Config.rsc | 20 + 3 files changed, 4659 insertions(+) create mode 100644 MikroMaster/20260509/20260509114002-Binary.backup create mode 100644 MikroMaster/20260509/20260509114002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509114002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509114002-Binary.backup b/MikroMaster/20260509/20260509114002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ca9a4b9f48cc18555f7d66ac88acae8335277967 GIT binary patch literal 298264 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

JwafPYhqyjAu!jq+0iTSia?z@i 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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 src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping 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 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/20260509/20260509114002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509114002-Diff-Config.rsc new file mode 100644 index 0000000..f964e2a --- /dev/null +++ b/MikroMaster/history/20260509/20260509114002-Diff-Config.rsc @@ -0,0 +1,20 @@ +4293d4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4295c4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4297c4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4303d4302 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4304a4304 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0