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