From fce62c3ce0074269c554bb4dc7249b6e00e72361 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 14:00:17 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 14:00:17. --- .../20260510/20260510140001-Binary.backup | Bin 0 -> 302363 bytes .../20260510/20260510140001-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510140001-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260510/20260510140001-Binary.backup create mode 100644 MikroMaster/20260510/20260510140001-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510140001-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510140001-Binary.backup b/MikroMaster/20260510/20260510140001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..51798c8744e003acbb237c2290e15632cdf245cb GIT binary patch literal 302363 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

g)yV9OYzFWJ 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Ν^}ZP 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ℑ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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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=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/20260510/20260510140001-Diff-Config.rsc b/MikroMaster/history/20260510/20260510140001-Diff-Config.rsc new file mode 100644 index 0000000..1d03504 --- /dev/null +++ b/MikroMaster/history/20260510/20260510140001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4303c4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN -- 2.52.0