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