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

)5kd{5;X) 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:~HP!%|2!U)A3X$k-rd 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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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=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.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260509052002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509052002-Diff-Config.rsc new file mode 100644 index 0000000..d88005f --- /dev/null +++ b/MikroMaster/history/20260509/20260509052002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4295c4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4296a4296 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0