From 7a2a880e8fdf25983864841da60fe723b84711cb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Aug 2026 20:40:37 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8D=93=20Sync=202026-08-24=2020:40:37?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- luci-app-mosdns/Makefile | 6 +- .../resources/view/mosdns/basic.js | 5 + luci-app-mosdns/po/templates/mosdns.pot | 234 +++++++++--------- luci-app-mosdns/po/zh_Hans/mosdns.po | 234 +++++++++--------- luci-app-mosdns/root/etc/config/mosdns | 1 + luci-app-mosdns/root/etc/init.d/mosdns | 2 + .../root/usr/share/mosdns/mosdns.uc | 20 +- mosdns/Makefile | 4 +- ...t-log-backups-to-0-and-default-file-.patch | 88 +++++++ v2dat/Makefile | 46 ---- v2dat/patches/100-format-logtime.patch | 42 ---- .../101-v2dat-update-dependencies.patch | 100 -------- ...memory-mapping-to-reduce-memory-usag.patch | 128 ---------- 13 files changed, 353 insertions(+), 557 deletions(-) create mode 100644 mosdns/patches/215-feat-mlog-default-log-backups-to-0-and-default-file-.patch delete mode 100644 v2dat/Makefile delete mode 100644 v2dat/patches/100-format-logtime.patch delete mode 100644 v2dat/patches/101-v2dat-update-dependencies.patch delete mode 100644 v2dat/patches/102-perf-unpack-Use-memory-mapping-to-reduce-memory-usag.patch diff --git a/luci-app-mosdns/Makefile b/luci-app-mosdns/Makefile index 5da24e16..de742dbe 100644 --- a/luci-app-mosdns/Makefile +++ b/luci-app-mosdns/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-mosdns -PKG_VERSION:=1.7.8 -PKG_RELEASE:=15 +PKG_VERSION:=1.7.9 +PKG_RELEASE:=16 LUCI_TITLE:=LuCI Support for mosdns LUCI_PKGARCH:=all -LUCI_DEPENDS:=+mosdns +curl +v2ray-geoip +v2ray-geosite +v2dat +ucode +LUCI_DEPENDS:=+mosdns +curl +v2ray-geoip +v2ray-geosite +geo2txt +ucode PKG_MAINTAINER:=sbwml diff --git a/luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js b/luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js index b09eafc2..93f8306e 100644 --- a/luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js +++ b/luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js @@ -172,6 +172,11 @@ return view.extend({ o.depends('configfile', '/var/etc/mosdns.json'); o.rmempty = false; + o = s.taboption('basic', form.Value, 'log_size', _('Log File Size'), _('Set the maximum size of the log file (in MB).')); + o.datatype = 'uinteger'; + o.default = '5'; + o.depends('configfile', '/var/etc/mosdns.json'); + o = s.taboption('basic', form.Flag, 'redirect', _('DNS Forward'), _('Forward Dnsmasq Domain Name resolution requests to MosDNS')); o.default = false; diff --git a/luci-app-mosdns/po/templates/mosdns.pot b/luci-app-mosdns/po/templates/mosdns.pot index ca471c20..605e12ab 100644 --- a/luci-app-mosdns/po/templates/mosdns.pot +++ b/luci-app-mosdns/po/templates/mosdns.pot @@ -1,15 +1,15 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:217 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:222 msgid "360 Public DNS (DNS over HTTPS)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:380 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:385 msgid "ADblock Source" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:419 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:424 msgid "API Listen port" msgstr "" @@ -52,25 +52,25 @@ msgstr "" msgid "Advanced Options" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:206 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:254 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:211 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:259 msgid "Aliyun Public DNS (223.5.5.5)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:207 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:255 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:212 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:260 msgid "Aliyun Public DNS (223.6.6.6)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:216 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:221 msgid "Aliyun Public DNS (DNS over HTTP/3)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:215 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:220 msgid "Aliyun Public DNS (DNS over HTTPS)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:214 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:219 msgid "Aliyun Public DNS (DNS over QUIC)" msgstr "" @@ -78,11 +78,11 @@ msgstr "" msgid "Another update is already in progress." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:198 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:203 msgid "Apple domains optimization" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:354 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:359 msgid "Auto Save Cache Interval" msgstr "" @@ -92,8 +92,8 @@ msgid "" "rules through scheduled tasks." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:212 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:258 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:217 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:263 msgid "Baidu Public DNS (180.76.76.76)" msgstr "" @@ -105,7 +105,7 @@ msgstr "" msgid "Basic Setting" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:372 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:377 msgid "" "Block DNS RR Type 65 records (HTTPS/SVCB, used for HTTP/3, ECH, etc.), force " "using only A/AAAA records." @@ -119,21 +119,21 @@ msgstr "" msgid "Block PTR" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:250 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:255 msgid "Bootstrap DNS servers" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:251 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:256 msgid "" "Bootstrap DNS servers are used to resolve IP addresses of the DoH/DoT " "resolvers you specify as upstreams" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:347 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:352 msgid "Cache Dump" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:323 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:328 msgid "Cache Prefetching" msgstr "" @@ -145,21 +145,21 @@ msgstr "" msgid "Check And Update GeoData." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:184 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:189 msgid "China DNS prefer IPv4" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:203 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:208 msgid "China DNS server" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:229 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:246 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:234 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:251 msgid "Cisco Public DNS (208.67.220.220)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:228 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:245 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:233 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:250 msgid "Cisco Public DNS (208.67.222.222)" msgstr "" @@ -171,18 +171,18 @@ msgstr "" msgid "Close" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:223 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:240 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:228 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:245 msgid "CloudFlare Public DNS (1.0.0.1)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:222 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:239 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:260 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:227 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:244 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:265 msgid "CloudFlare Public DNS (1.1.1.1)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:404 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:409 msgid "Cloudflare IP Ranges" msgstr "" @@ -194,7 +194,7 @@ msgstr "" msgid "Collecting data..." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:265 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:270 msgid "Concurrent" msgstr "" @@ -202,11 +202,11 @@ msgstr "" msgid "Config File" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:450 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:455 msgid "Configuration Editor" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:194 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:199 msgid "Custom China DNS" msgstr "" @@ -220,11 +220,11 @@ msgid "" "supports domain matching rules)." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:399 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:404 msgid "Custom IP" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:233 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:238 msgid "Custom Stream Media DNS" msgstr "" @@ -232,21 +232,21 @@ msgstr "" msgid "DDNS Lists" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:312 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:317 msgid "DNS Cache Size" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:175 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:180 msgid "DNS Forward" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:266 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:271 msgid "" "DNS query request concurrency, The number of upstream DNS servers that are " "allowed to initiate requests at the same time" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:179 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:184 msgid "DNS redirect" msgstr "" @@ -262,21 +262,21 @@ msgstr "" msgid "Default Config" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:371 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:376 msgid "Disable RR Type 65 (HTTPS/SVCB)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:283 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:288 msgid "Disable TLS Certificate" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:284 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:289 msgid "" "Disable TLS Servers certificate validation, Can be useful if system CA " "certificate expires or the system time is out of order" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:272 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:277 msgid "DoH/TCP/DoT Connection Multiplexing idle timeout (default 30 seconds)" msgstr "" @@ -284,37 +284,37 @@ msgstr "" msgid "Enable Auto Database Update" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:376 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:381 msgid "Enable DNS ADblock" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:307 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:312 msgid "Enable DNS Cache" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:290 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:295 msgid "Enable EDNS client subnet" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:278 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:283 msgid "" "Enable TCP/DoT RFC 7766 new Query Pipelining connection multiplexing mode" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:302 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:307 msgid "Enable this option fallback policy forces forwarding to remote DNS" msgstr "" #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:142 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:392 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:397 msgid "Enabled" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:477 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:482 msgid "Enter the GeoIP.dat category to be exported, Allow add multiple tags" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:472 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:477 msgid "Enter the GeoSite.dat category to be exported, Allow add multiple tags" msgstr "" @@ -354,8 +354,8 @@ msgstr "" msgid "Every Wednesday" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:473 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:478 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:483 msgid "Export directory: /var/mosdns" msgstr "" @@ -367,7 +367,7 @@ msgstr "" msgid "Failed to start update." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:427 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:432 msgid "Flush DNS Cache" msgstr "" @@ -379,27 +379,27 @@ msgstr "" msgid "Flushing DNS Cache Success." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:425 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:430 msgid "" "Flushing DNS Cache will clear any IP addresses or DNS records from MosDNS " "cache." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:194 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:199 msgid "Follow WAN interface DNS if not enabled" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:199 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:204 msgid "" "For Apple domains equipped with Chinese mainland CDN, always responsive to " "Chinese CDN IP addresses" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:179 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:184 msgid "Force redirect all local DNS queries to MosDNS, a.k.a. DNS Hijacking" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:175 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:180 msgid "Forward Dnsmasq Domain Name resolution requests to MosDNS" msgstr "" @@ -415,7 +415,7 @@ msgstr "" msgid "GeoData Export" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:476 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:481 msgid "GeoIP Tags" msgstr "" @@ -423,7 +423,7 @@ msgstr "" msgid "GeoIP Type" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:471 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:476 msgid "GeoSite Tags" msgstr "" @@ -435,14 +435,14 @@ msgstr "" msgid "GitHub Proxy" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:225 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:242 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:230 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:247 msgid "Google Public DNS (8.8.4.4)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:224 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:241 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:259 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:229 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:246 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:264 msgid "Google Public DNS (8.8.8.8)" msgstr "" @@ -458,11 +458,11 @@ msgstr "" msgid "Hosts" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:295 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:300 msgid "IP Address" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:405 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:410 msgid "" "IPv4 CIDR: https://www.cloudflare.com/ips-v4
IPv6 CIDR: " msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:185 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:190 msgid "" "IPv4 is preferred for China DNS resolution of dual-stack addresses, and is " "not affected when the destination is IPv6 only" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:190 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:195 msgid "" "IPv4 is preferred for Remote / Streaming Media DNS resolution of dual-stack " "addresses, and is not affected when the destination is IPv6 only" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:271 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:276 msgid "Idle Timeout" msgstr "" @@ -490,17 +490,17 @@ msgstr "" msgid "Info" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:342 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:347 msgid "" "Interval for the background thread to scan the cache for prefetching (in " "seconds)." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:317 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:322 msgid "Lazy Cache TTL" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:318 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:323 msgid "" "Lazy cache survival time (in second). To disable Lazy Cache, please set to 0." msgstr "" @@ -529,6 +529,10 @@ msgstr "" msgid "Log File" msgstr "" +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:175 +msgid "Log File Size" +msgstr "" + #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:161 msgid "Log Level" msgstr "" @@ -537,33 +541,33 @@ msgstr "" msgid "Logs" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:393 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:398 msgid "" "Match the parsing result with the Cloudflare IP ranges, and when there is a " "successful match, use the 'Custom IP' as the parsing result (experimental " "feature)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:365 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:370 msgid "Maximum TTL" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:359 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:364 msgid "Minimum TTL" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:336 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:341 msgid "" "Minimum cache hits required since the last refresh to trigger a prefetch." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:366 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:371 msgid "" "Modify the Maximum TTL value (seconds) for DNS answer results, 0 indicating " "no modification" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:360 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:365 msgid "" "Modify the Minimum TTL value (seconds) for DNS answer results, 0 indicating " "no modification" @@ -585,7 +589,7 @@ msgstr "" msgid "NOT RUNNING" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:234 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:239 msgid "Netflix, Disney+, Hulu and streaming media rules list will use this DNS" msgstr "" @@ -593,7 +597,7 @@ msgstr "" msgid "No log data." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:296 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:301 msgid "" "Please provide the IP address you use when accessing foreign websites. This " "IP subnet (0/24) will be used as the ECS address for Remote / Streaming " @@ -604,38 +608,38 @@ msgstr "" msgid "Please wait, this may take a few moments..." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:329 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:334 msgid "Prefetch Before Expire" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:335 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:340 msgid "Prefetch Min Hits" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:341 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:346 msgid "Prefetch Scan Interval" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:330 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:335 msgid "Prefetch when the remaining TTL is less than this value (in seconds)." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:301 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:306 msgid "Prevent DNS Leaks" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:324 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:329 msgid "" "Proactively refresh hot cache entries in the background before they expire." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:227 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:244 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:232 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:249 msgid "Quad9 Public DNS (149.112.112.112)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:226 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:243 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:231 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:248 msgid "Quad9 Public DNS (9.9.9.9)" msgstr "" @@ -657,11 +661,11 @@ msgstr "" msgid "Refresh every %s seconds." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:189 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:194 msgid "Remote DNS prefer IPv4" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:221 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:226 msgid "Remote DNS server" msgstr "" @@ -673,10 +677,14 @@ msgstr "" msgid "Rules" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:348 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:353 msgid "Save the cache locally and reload the cache dump on the next startup" msgstr "" +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:175 +msgid "Set the maximum size of the log file (in MB)." +msgstr "" + #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/update.js:28 msgid "Starting update..." msgstr "" @@ -685,29 +693,29 @@ msgstr "" msgid "Streaming Media" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:238 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:243 msgid "Streaming Media DNS server" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:383 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:388 msgid "Support for local files, such as: file:///var/mosdns/example.txt" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:277 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:282 msgid "TCP/DoT Connection Multiplexing" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:205 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:253 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:210 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:258 msgid "Tencent Public DNS (119.28.28.28)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:204 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:252 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:209 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:257 msgid "Tencent Public DNS (119.29.29.29)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:213 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:218 msgid "Tencent Public DNS (DNS over HTTPS)" msgstr "" @@ -715,29 +723,29 @@ msgstr "" msgid "The list of rules only apply to 'Default Config' profiles." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:297 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:302 msgid "" "This feature is typically used when using a self-built DNS server as an " "Remote / Streaming Media DNS upstream (requires support from the upstream " "server)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:451 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:456 msgid "" "This is the content of the file '/etc/mosdns/config_custom.yaml' from which " "your MosDNS configuration will be generated. Only accepts configuration " "content in yaml format." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:208 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:213 msgid "TrafficRoute Public DNS (180.184.1.1)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:209 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:214 msgid "TrafficRoute Public DNS (180.184.2.2)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:466 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:471 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:43 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:48 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:67 @@ -801,7 +809,7 @@ msgid "" "domain matching rules)." msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:381 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:386 msgid "" "When using custom rule sources, please use rule types supported by MosDNS " "(domain list or AdGuardHome rules)." @@ -811,13 +819,13 @@ msgstr "" msgid "White Lists" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:210 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:256 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:215 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:261 msgid "Xinfeng Public DNS (114.114.114.114)" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:211 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:257 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:216 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:262 msgid "Xinfeng Public DNS (114.114.115.115)" msgstr "" diff --git a/luci-app-mosdns/po/zh_Hans/mosdns.po b/luci-app-mosdns/po/zh_Hans/mosdns.po index 291c5d9a..aa99da22 100644 --- a/luci-app-mosdns/po/zh_Hans/mosdns.po +++ b/luci-app-mosdns/po/zh_Hans/mosdns.po @@ -11,15 +11,15 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:217 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:222 msgid "360 Public DNS (DNS over HTTPS)" msgstr "360 安全 DNS(DNS over HTTPS)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:380 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:385 msgid "ADblock Source" msgstr "广告过滤规则来源" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:419 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:424 msgid "API Listen port" msgstr "API 监听端口" @@ -67,25 +67,25 @@ msgstr "加入的域名将阻止 PTR 请求(每个域名一行,支持域名 msgid "Advanced Options" msgstr "高级选项" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:206 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:254 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:211 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:259 msgid "Aliyun Public DNS (223.5.5.5)" msgstr "阿里云公共 DNS(223.5.5.5)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:207 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:255 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:212 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:260 msgid "Aliyun Public DNS (223.6.6.6)" msgstr "阿里云公共 DNS(223.6.6.6)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:216 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:221 msgid "Aliyun Public DNS (DNS over HTTP/3)" msgstr "阿里云公共 DNS(DNS over HTTP/3)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:215 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:220 msgid "Aliyun Public DNS (DNS over HTTPS)" msgstr "阿里云公共 DNS(DNS over HTTPS)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:214 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:219 msgid "Aliyun Public DNS (DNS over QUIC)" msgstr "阿里云公共 DNS(DNS over QUIC)" @@ -93,11 +93,11 @@ msgstr "阿里云公共 DNS(DNS over QUIC)" msgid "Another update is already in progress." msgstr "另一个更新正在进行中。" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:198 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:203 msgid "Apple domains optimization" msgstr "Apple 域名解析优化" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:354 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:359 msgid "Auto Save Cache Interval" msgstr "自动保存缓存间隔(秒)" @@ -107,8 +107,8 @@ msgid "" "rules through scheduled tasks." msgstr "通过定时任务自动更新 GeoIP 和 GeoSite 数据库以及广告过滤规则。" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:212 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:258 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:217 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:263 msgid "Baidu Public DNS (180.76.76.76)" msgstr "百度公共 DNS(180.76.76.76)" @@ -120,7 +120,7 @@ msgstr "基本选项" msgid "Basic Setting" msgstr "基本设置" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:372 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:377 msgid "" "Block DNS RR Type 65 records (HTTPS/SVCB, used for HTTP/3, ECH, etc.), force " "using only A/AAAA records." @@ -136,21 +136,21 @@ msgstr "黑名单" msgid "Block PTR" msgstr "PTR 黑名单" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:250 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:255 msgid "Bootstrap DNS servers" msgstr "Bootstrap DNS 服务器" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:251 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:256 msgid "" "Bootstrap DNS servers are used to resolve IP addresses of the DoH/DoT " "resolvers you specify as upstreams" msgstr "Bootstrap DNS 服务器用于解析您指定为上游的 DoH / DoT 解析器的 IP 地址" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:347 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:352 msgid "Cache Dump" msgstr "自动保存缓存" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:323 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:328 msgid "Cache Prefetching" msgstr "缓存预取" @@ -162,21 +162,21 @@ msgstr "检查并更新" msgid "Check And Update GeoData." msgstr "检查并更新 GeoData 数据库。" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:184 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:189 msgid "China DNS prefer IPv4" msgstr "国内 DNS 首选 IPv4" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:203 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:208 msgid "China DNS server" msgstr "国内 DNS 服务器" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:229 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:246 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:234 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:251 msgid "Cisco Public DNS (208.67.220.220)" msgstr "思科公共 DNS(208.67.220.220)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:228 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:245 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:233 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:250 msgid "Cisco Public DNS (208.67.222.222)" msgstr "思科公共 DNS(208.67.222.222)" @@ -188,18 +188,18 @@ msgstr "清空日志" msgid "Close" msgstr "关闭" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:223 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:240 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:228 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:245 msgid "CloudFlare Public DNS (1.0.0.1)" msgstr "CloudFlare 公共 DNS(1.0.0.1)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:222 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:239 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:260 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:227 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:244 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:265 msgid "CloudFlare Public DNS (1.1.1.1)" msgstr "CloudFlare 公共 DNS(1.1.1.1)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:404 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:409 msgid "Cloudflare IP Ranges" msgstr "Cloudflare IP 范围" @@ -211,7 +211,7 @@ msgstr "Cloudflare 选项" msgid "Collecting data..." msgstr "获取数据中..." -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:265 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:270 msgid "Concurrent" msgstr "DNS 服务器并发数(默认 2)" @@ -219,11 +219,11 @@ msgstr "DNS 服务器并发数(默认 2)" msgid "Config File" msgstr "配置文件" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:450 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:455 msgid "Configuration Editor" msgstr "配置编辑器" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:194 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:199 msgid "Custom China DNS" msgstr "自定义国内 DNS" @@ -238,11 +238,11 @@ msgid "" msgstr "" "自定义 Hosts 重写,如:baidu.com 10.0.0.1(每个规则一行,支持域名匹配规则)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:399 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:404 msgid "Custom IP" msgstr "自选 IP" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:233 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:238 msgid "Custom Stream Media DNS" msgstr "自定义流媒体 DNS" @@ -250,21 +250,21 @@ msgstr "自定义流媒体 DNS" msgid "DDNS Lists" msgstr "DDNS 域名" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:312 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:317 msgid "DNS Cache Size" msgstr "DNS 缓存大小" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:175 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:180 msgid "DNS Forward" msgstr "DNS 转发" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:266 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:271 msgid "" "DNS query request concurrency, The number of upstream DNS servers that are " "allowed to initiate requests at the same time" msgstr "DNS 查询请求并发数,允许同时发起请求的上游 DNS 服务器数量" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:179 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:184 msgid "DNS redirect" msgstr "DNS 重定向" @@ -280,22 +280,22 @@ msgstr "调试" msgid "Default Config" msgstr "内置预设" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:371 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:376 msgid "Disable RR Type 65 (HTTPS/SVCB)" msgstr "禁用 RR Type 65 (HTTPS/SVCB)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:283 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:288 msgid "Disable TLS Certificate" msgstr "禁用 TLS 证书" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:284 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:289 msgid "" "Disable TLS Servers certificate validation, Can be useful if system CA " "certificate expires or the system time is out of order" msgstr "" "禁用 TLS 服务器证书验证,当系统 CA 证书过期或系统时间错乱时,本选项可能会有用" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:272 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:277 msgid "DoH/TCP/DoT Connection Multiplexing idle timeout (default 30 seconds)" msgstr "DoH/TCP/DoT 连接复用空闲保持时间(默认 30 秒)" @@ -303,37 +303,37 @@ msgstr "DoH/TCP/DoT 连接复用空闲保持时间(默认 30 秒)" msgid "Enable Auto Database Update" msgstr "启用自动更新" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:376 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:381 msgid "Enable DNS ADblock" msgstr "启用 DNS 广告过滤" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:307 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:312 msgid "Enable DNS Cache" msgstr "启用 DNS 缓存" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:290 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:295 msgid "Enable EDNS client subnet" msgstr "启用 EDNS 客户端子网" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:278 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:283 msgid "" "Enable TCP/DoT RFC 7766 new Query Pipelining connection multiplexing mode" msgstr "启用 TCP/DoT RFC 7766 新型 Query Pipelining 连接复用模式" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:302 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:307 msgid "Enable this option fallback policy forces forwarding to remote DNS" msgstr "启用此选项 fallback 策略会强制转发到远程 DNS" #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:142 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:392 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:397 msgid "Enabled" msgstr "启用" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:477 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:482 msgid "Enter the GeoIP.dat category to be exported, Allow add multiple tags" msgstr "输入需要导出的 GeoIP.dat 类别条目,允许添加多个标签" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:472 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:477 msgid "Enter the GeoSite.dat category to be exported, Allow add multiple tags" msgstr "填写需要导出的 GeoSite.dat 类别条目,允许添加多个标签" @@ -373,8 +373,8 @@ msgstr "每周二" msgid "Every Wednesday" msgstr "每周三" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:473 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:478 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:483 msgid "Export directory: /var/mosdns" msgstr "导出目录:/var/mosdns" @@ -386,7 +386,7 @@ msgstr "清理日志失败:%s" msgid "Failed to start update." msgstr "启动更新失败" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:427 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:432 msgid "Flush DNS Cache" msgstr "刷新 DNS 缓存" @@ -398,27 +398,27 @@ msgstr "刷新 DNS 缓存失败,请检查 MosDNS 状态是否在运行中。" msgid "Flushing DNS Cache Success." msgstr "刷新 DNS 缓存成功" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:425 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:430 msgid "" "Flushing DNS Cache will clear any IP addresses or DNS records from MosDNS " "cache." msgstr "刷新 DNS 缓存会清空 MosDNS 所有 IP 地址和 DNS 解析缓存。" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:194 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:199 msgid "Follow WAN interface DNS if not enabled" msgstr "不启用则使用 WAN 接口 DNS" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:199 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:204 msgid "" "For Apple domains equipped with Chinese mainland CDN, always responsive to " "Chinese CDN IP addresses" msgstr "配备中国大陆 CDN 的 Apple 域名,始终应答中国大陆 CDN 地址" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:179 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:184 msgid "Force redirect all local DNS queries to MosDNS, a.k.a. DNS Hijacking" msgstr "强制将所有本地 DNS 查询重定向到 MosDNS,即 DNS 劫持。" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:175 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:180 msgid "Forward Dnsmasq Domain Name resolution requests to MosDNS" msgstr "将 Dnsmasq 域名解析请求转发到 MosDNS 服务器" @@ -434,7 +434,7 @@ msgstr "全量:包含所有国家和私有 IP 地址。" msgid "GeoData Export" msgstr "GeoData 导出" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:476 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:481 msgid "GeoIP Tags" msgstr "GeoIP 标签" @@ -442,7 +442,7 @@ msgstr "GeoIP 标签" msgid "GeoIP Type" msgstr "GeoIP 类型" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:471 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:476 msgid "GeoSite Tags" msgstr "GeoSite 标签" @@ -454,14 +454,14 @@ msgstr "更新数据库" msgid "GitHub Proxy" msgstr "GitHub 代理" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:225 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:242 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:230 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:247 msgid "Google Public DNS (8.8.4.4)" msgstr "谷歌公共 DNS(8.8.4.4)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:224 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:241 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:259 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:229 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:246 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:264 msgid "Google Public DNS (8.8.8.8)" msgstr "谷歌公共 DNS(8.8.8.8)" @@ -477,11 +477,11 @@ msgstr "灰名单" msgid "Hosts" msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:295 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:300 msgid "IP Address" msgstr "IP 地址" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:405 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:410 msgid "" "IPv4 CIDR: https://www.cloudflare.com/ips-v4
IPv6 CIDR: " msgstr "" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:185 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:190 msgid "" "IPv4 is preferred for China DNS resolution of dual-stack addresses, and is " "not affected when the destination is IPv6 only" msgstr "国内 DNS 解析双栈地址时首选 IPv4,目标仅 IPv6 时不受影响" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:190 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:195 msgid "" "IPv4 is preferred for Remote / Streaming Media DNS resolution of dual-stack " "addresses, and is not affected when the destination is IPv6 only" msgstr "远程 / 流媒体 DNS 解析双栈地址时首选 IPv4,目标仅 IPv6 时不受影响" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:271 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:276 msgid "Idle Timeout" msgstr "空闲超时" @@ -509,17 +509,17 @@ msgstr "空闲超时" msgid "Info" msgstr "信息" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:342 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:347 msgid "" "Interval for the background thread to scan the cache for prefetching (in " "seconds)." msgstr "后台线程扫描缓存以进行预取的时间间隔(单位:秒)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:317 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:322 msgid "Lazy Cache TTL" msgstr "乐观缓存 TTL" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:318 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:323 msgid "" "Lazy cache survival time (in second). To disable Lazy Cache, please set to 0." msgstr "乐观缓存生存时间(单位:秒),要禁用乐观缓存,请设置为 0" @@ -548,6 +548,10 @@ msgstr "日志数据" msgid "Log File" msgstr "日志文件" +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:175 +msgid "Log File Size" +msgstr "日志文件大小" + #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:161 msgid "Log Level" msgstr "日志等级" @@ -556,7 +560,7 @@ msgstr "日志等级" msgid "Logs" msgstr "日志" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:393 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:398 #, fuzzy msgid "" "Match the parsing result with the Cloudflare IP ranges, and when there is a " @@ -566,26 +570,26 @@ msgstr "" "将解析结果与 Cloudflare IP 范围进行匹配,当匹配成功时,使用 “自选 IP” 作为解" "析结果(实验性功能)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:365 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:370 msgid "Maximum TTL" msgstr "覆盖最大 TTL 值(默认 0)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:359 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:364 msgid "Minimum TTL" msgstr "覆盖最小 TTL 值(默认 0)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:336 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:341 msgid "" "Minimum cache hits required since the last refresh to trigger a prefetch." msgstr "触发预取所需的最小缓存命中次数(自上次刷新起)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:366 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:371 msgid "" "Modify the Maximum TTL value (seconds) for DNS answer results, 0 indicating " "no modification" msgstr "修改 DNS 应答结果的最大 TTL 值(秒),0 表示不修改" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:360 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:365 msgid "" "Modify the Minimum TTL value (seconds) for DNS answer results, 0 indicating " "no modification" @@ -607,7 +611,7 @@ msgstr "MosDNS 是一个插件化的 DNS 转发/分流器。" msgid "NOT RUNNING" msgstr "未运行" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:234 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:239 msgid "Netflix, Disney+, Hulu and streaming media rules list will use this DNS" msgstr "自定义 Netflix、Disney+、Hulu 以及 “流媒体” 规则列表的 DNS 服务器" @@ -615,7 +619,7 @@ msgstr "自定义 Netflix、Disney+、Hulu 以及 “流媒体” 规则列表 msgid "No log data." msgstr "无日志数据。" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:296 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:301 msgid "" "Please provide the IP address you use when accessing foreign websites. This " "IP subnet (0/24) will be used as the ECS address for Remote / Streaming " @@ -628,38 +632,38 @@ msgstr "" msgid "Please wait, this may take a few moments..." msgstr "请稍候,这可能需要一点时间..." -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:329 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:334 msgid "Prefetch Before Expire" msgstr "预取触发阈值" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:335 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:340 msgid "Prefetch Min Hits" msgstr "预取最小命中次数" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:341 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:346 msgid "Prefetch Scan Interval" msgstr "预取扫描周期" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:330 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:335 msgid "Prefetch when the remaining TTL is less than this value (in seconds)." msgstr "当剩余 TTL 小于此值(秒)时触发预取" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:301 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:306 msgid "Prevent DNS Leaks" msgstr "防止 DNS 泄漏" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:324 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:329 msgid "" "Proactively refresh hot cache entries in the background before they expire." msgstr "在缓存到期前,后台主动预取并刷新高频访问的 DNS 记录" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:227 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:244 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:232 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:249 msgid "Quad9 Public DNS (149.112.112.112)" msgstr "Quad9 公共 DNS(149.112.112.112)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:226 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:243 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:231 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:248 msgid "Quad9 Public DNS (9.9.9.9)" msgstr "Quad9 公共 DNS(9.9.9.9)" @@ -683,11 +687,11 @@ msgstr "" msgid "Refresh every %s seconds." msgstr "每 %s 秒刷新。" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:189 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:194 msgid "Remote DNS prefer IPv4" msgstr "远程 DNS 首选 IPv4" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:221 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:226 msgid "Remote DNS server" msgstr "远程 DNS 服务器" @@ -699,10 +703,14 @@ msgstr "自定义规则列表" msgid "Rules" msgstr "规则列表" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:348 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:353 msgid "Save the cache locally and reload the cache dump on the next startup" msgstr "保存缓存到本地文件,以供下次启动时重新载入使用" +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:175 +msgid "Set the maximum size of the log file (in MB)." +msgstr "设置日志文件的最大容量(单位:MB)。" + #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/update.js:28 msgid "Starting update..." msgstr "" @@ -711,29 +719,29 @@ msgstr "" msgid "Streaming Media" msgstr "流媒体" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:238 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:243 msgid "Streaming Media DNS server" msgstr "流媒体 DNS 服务器" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:383 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:388 msgid "Support for local files, such as: file:///var/mosdns/example.txt" msgstr "支持本地文件,例如:file:///var/mosdns/example.txt" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:277 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:282 msgid "TCP/DoT Connection Multiplexing" msgstr "TCP/DoT 连接复用" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:205 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:253 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:210 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:258 msgid "Tencent Public DNS (119.28.28.28)" msgstr "腾讯公共 DNS(119.28.28.28)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:204 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:252 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:209 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:257 msgid "Tencent Public DNS (119.29.29.29)" msgstr "腾讯公共 DNS(119.29.29.29)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:213 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:218 msgid "Tencent Public DNS (DNS over HTTPS)" msgstr "腾讯公共 DNS(DNS over HTTPS)" @@ -741,7 +749,7 @@ msgstr "腾讯公共 DNS(DNS over HTTPS)" msgid "The list of rules only apply to 'Default Config' profiles." msgstr "规则列表仅适用于 “内置预设” 配置文件。" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:297 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:302 msgid "" "This feature is typically used when using a self-built DNS server as an " "Remote / Streaming Media DNS upstream (requires support from the upstream " @@ -750,7 +758,7 @@ msgstr "" "此功能通常在使用自建 DNS 服务器作为 远程 / 流媒体 DNS 上游时使用(需要上游服" "务器的支持)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:451 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:456 msgid "" "This is the content of the file '/etc/mosdns/config_custom.yaml' from which " "your MosDNS configuration will be generated. Only accepts configuration " @@ -759,15 +767,15 @@ msgstr "" "这是文件 “/etc/mosdns/config_custom.yaml” 的内容,您的 MosDNS 配置将从此文件" "生成。仅接受 yaml 格式的配置内容。" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:208 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:213 msgid "TrafficRoute Public DNS (180.184.1.1)" msgstr "火山引擎公共 DNS(180.184.1.1)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:209 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:214 msgid "TrafficRoute Public DNS (180.184.2.2)" msgstr "火山引擎公共 DNS(180.184.2.2)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:466 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:471 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:43 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:48 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:67 @@ -833,7 +841,7 @@ msgstr "" "启用 “自定义流媒体 DNS” 时,加入的域名始终使用 “流媒体 DNS 服务器” 进行解析" "(每个域名一行,支持域名匹配规则)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:381 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:386 msgid "" "When using custom rule sources, please use rule types supported by MosDNS " "(domain list or AdGuardHome rules)." @@ -845,13 +853,13 @@ msgstr "" msgid "White Lists" msgstr "白名单" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:210 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:256 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:215 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:261 msgid "Xinfeng Public DNS (114.114.114.114)" msgstr "信风公共 DNS(114.114.114.114)" -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:211 -#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:257 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:216 +#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:262 msgid "Xinfeng Public DNS (114.114.115.115)" msgstr "信风公共 DNS(114.114.115.115)" diff --git a/luci-app-mosdns/root/etc/config/mosdns b/luci-app-mosdns/root/etc/config/mosdns index f448e6b8..daaa818e 100644 --- a/luci-app-mosdns/root/etc/config/mosdns +++ b/luci-app-mosdns/root/etc/config/mosdns @@ -10,6 +10,7 @@ config mosdns 'config' option configfile '/var/etc/mosdns.json' option log_level 'info' option log_file '/var/log/mosdns.log' + option log_size '5' option cache '1' option concurrent '2' option idle_timeout '30' diff --git a/luci-app-mosdns/root/etc/init.d/mosdns b/luci-app-mosdns/root/etc/init.d/mosdns index 1d75dd18..8ea17f98 100755 --- a/luci-app-mosdns/root/etc/init.d/mosdns +++ b/luci-app-mosdns/root/etc/init.d/mosdns @@ -33,6 +33,7 @@ get_config() { config_get listen_port $1 listen_port 5335 config_get listen_address $1 listen_address "0.0.0.0" config_get log_file $1 log_file "/var/log/mosdns.log" + config_get log_size $1 log_size "5" config_get log_level $1 log_level "info" config_get minimal_ttl $1 minimal_ttl 0 config_get maximum_ttl $1 maximum_ttl 0 @@ -67,6 +68,7 @@ generate_config() { json_add_object 'log' json_add_string "level" "$log_level" json_add_string "file" "$log_file" + json_add_string "size" "$log_size" json_close_object # api json_add_object 'api' diff --git a/luci-app-mosdns/root/usr/share/mosdns/mosdns.uc b/luci-app-mosdns/root/usr/share/mosdns/mosdns.uc index 3b606693..423c141f 100755 --- a/luci-app-mosdns/root/usr/share/mosdns/mosdns.uc +++ b/luci-app-mosdns/root/usr/share/mosdns/mosdns.uc @@ -281,34 +281,34 @@ function v2dat_dump() { exec_sys('rm -f /var/mosdns/geo*.txt'); if (configfile === "/var/etc/mosdns.json") { - exec_sys(`v2dat unpack geoip -o /var/mosdns -f cn ${v2dat_dir}/geoip.dat`); - exec_sys(`v2dat unpack geosite -o /var/mosdns -f cn -f apple -f 'geolocation-!cn' ${v2dat_dir}/geosite.dat`); + exec_sys(`geo2txt geoip -f ${v2dat_dir}/geoip.dat -e cn -o /var/mosdns`); + exec_sys(`geo2txt geosite -f ${v2dat_dir}/geosite.dat -e cn -e apple -e 'geolocation-!cn' -o /var/mosdns`); if (adblock === '1' && index(ad_source, 'geosite.dat') !== -1) { - exec_sys(`v2dat unpack geosite -o /var/mosdns -f category-ads-all ${v2dat_dir}/geosite.dat`); + exec_sys(`geo2txt geosite -f ${v2dat_dir}/geosite.dat -e category-ads-all -o /var/mosdns`); } if (streaming_media === '1') { - exec_sys(`v2dat unpack geosite -o /var/mosdns -f netflix -f disney -f hulu ${v2dat_dir}/geosite.dat`); + exec_sys(`geo2txt geosite -f ${v2dat_dir}/geosite.dat -e netflix -e disney -e hulu -o /var/mosdns`); } else { writefile('/var/mosdns/geosite_disney.txt', ''); writefile('/var/mosdns/geosite_netflix.txt', ''); writefile('/var/mosdns/geosite_hulu.txt', ''); } } else { - exec_sys(`v2dat unpack geoip -o /var/mosdns -f cn ${v2dat_dir}/geoip.dat`); - exec_sys(`v2dat unpack geosite -o /var/mosdns -f cn -f 'geolocation-!cn' ${v2dat_dir}/geosite.dat`); + exec_sys(`geo2txt geoip -f ${v2dat_dir}/geoip.dat -e cn -o /var/mosdns`); + exec_sys(`geo2txt geosite -f ${v2dat_dir}/geosite.dat -e cn -e 'geolocation-!cn' -o /var/mosdns`); let geoip_tags = to_array(uci_cursor.get('mosdns', 'config', 'geoip_tags')); if (length(geoip_tags) > 0) { - let tags_str = "-f '" + join("' -f '", geoip_tags) + "'"; - exec_sys(`v2dat unpack geoip -o /var/mosdns ${tags_str} ${v2dat_dir}/geoip.dat`); + let tags_str = "-e '" + join("' -e '", geoip_tags) + "'"; + exec_sys(`geo2txt geoip -f ${v2dat_dir}/geoip.dat ${tags_str} -o /var/mosdns`); } let geosite_tags = to_array(uci_cursor.get('mosdns', 'config', 'geosite_tags')); if (length(geosite_tags) > 0) { - let tags_str = "-f '" + join("' -f '", geosite_tags) + "'"; - exec_sys(`v2dat unpack geosite -o /var/mosdns ${tags_str} ${v2dat_dir}/geosite.dat`); + let tags_str = "-e '" + join("' -e '", geosite_tags) + "'"; + exec_sys(`geo2txt geosite -f ${v2dat_dir}/geosite.dat ${tags_str} -o /var/mosdns`); } } } diff --git a/mosdns/Makefile b/mosdns/Makefile index c2c1e225..5f985223 100644 --- a/mosdns/Makefile +++ b/mosdns/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mosdns PKG_VERSION:=5.3.4 -PKG_RELEASE:=17 +PKG_RELEASE:=18 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/IrineSistiana/mosdns/tar.gz/v$(PKG_VERSION)? @@ -21,7 +21,7 @@ PKG_BUILD_PARALLEL:=1 PKG_BUILD_FLAGS:=no-mips16 GO_PKG:=github.com/IrineSistiana/mosdns -GO_PKG_LDFLAGS_X:=main.version=v$(PKG_VERSION)-$(PKG_RELEASE) +GO_PKG_LDFLAGS_X:=main.version=v$(PKG_VERSION)-r$(PKG_RELEASE) include $(INCLUDE_DIR)/package.mk include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk diff --git a/mosdns/patches/215-feat-mlog-default-log-backups-to-0-and-default-file-.patch b/mosdns/patches/215-feat-mlog-default-log-backups-to-0-and-default-file-.patch new file mode 100644 index 00000000..ab07257a --- /dev/null +++ b/mosdns/patches/215-feat-mlog-default-log-backups-to-0-and-default-file-.patch @@ -0,0 +1,88 @@ +From 1afb8c2ae54495992ac20eaa192478d368a0f81a Mon Sep 17 00:00:00 2001 +From: sbwml +Date: Mon, 24 Aug 2026 19:55:55 +0800 +Subject: [PATCH] feat(mlog): default log backups to 0 and default file size to + 5M + +--- + mlog/logger.go | 7 ++----- + mlog/rotator.go | 2 +- + mlog/rotator_test.go | 35 +++++++++++++++++++++++++++++++++++ + 3 files changed, 38 insertions(+), 6 deletions(-) + create mode 100644 mlog/rotator_test.go + +--- a/mlog/logger.go ++++ b/mlog/logger.go +@@ -39,11 +39,11 @@ type LogConfig struct { + // Production enables json output. + Production bool `yaml:"production"` + +- // Size of log file limit. Default is 1M. ++ // Size of log file limit. Default is 5M. + // Supported units: K, M, G, T. If no unit, defaults to M. + Size string `yaml:"size"` + +- // Max number of old log files to retain. Default is 3. ++ // Max number of old log files to retain. Default is 0. + // Set to a negative number to retain all files. + Backups int `yaml:"backups"` + } +@@ -82,9 +82,6 @@ func NewLogger(lc LogConfig) (*zap.Logge + } + + backups := lc.Backups +- if backups == 0 { +- backups = 3 +- } + + rotator := &Rotator{ + Filename: lf, +--- a/mlog/rotator.go ++++ b/mlog/rotator.go +@@ -185,7 +185,7 @@ func (r *Rotator) Close() error { + // Supports K, M, G, T units. If no unit, defaults to M. + func ParseSize(s string) (int64, error) { + if s == "" { +- return 1024 * 1024, nil // Default 1M ++ return 5 * 1024 * 1024, nil // Default 5M + } + s = strings.ToUpper(strings.TrimSpace(s)) + +--- /dev/null ++++ b/mlog/rotator_test.go +@@ -0,0 +1,35 @@ ++package mlog ++ ++import ( ++ "testing" ++) ++ ++func TestParseSize(t *testing.T) { ++ size, err := ParseSize("") ++ if err != nil { ++ t.Fatalf("ParseSize(\"\") failed: %v", err) ++ } ++ if expected := int64(5 * 1024 * 1024); size != expected { ++ t.Errorf("expected default size %d, got %d", expected, size) ++ } ++ ++ size, err = ParseSize("10M") ++ if err != nil { ++ t.Fatalf("ParseSize(\"10M\") failed: %v", err) ++ } ++ if expected := int64(10 * 1024 * 1024); size != expected { ++ t.Errorf("expected size %d, got %d", expected, size) ++ } ++} ++ ++func TestNewLoggerBackups(t *testing.T) { ++ lc := LogConfig{ ++ File: "test.log", ++ Backups: 0, ++ } ++ // Verify that ParseSize and logger construction work without forcing backups to 3 ++ _, err := NewLogger(lc) ++ if err != nil { ++ t.Fatalf("NewLogger failed: %v", err) ++ } ++} diff --git a/v2dat/Makefile b/v2dat/Makefile deleted file mode 100644 index bba26453..00000000 --- a/v2dat/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -# -# Copyright (C) 2015-2016 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v3. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=v2dat -PKG_SOURCE_DATE:=2022-12-15 -PKG_SOURCE_VERSION:=47b8ee51fb528e11e1a83453b7e767a18d20d1f7 -PKG_RELEASE:=5 - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/urlesistiana/v2dat/tar.gz/$(PKG_SOURCE_VERSION)? -PKG_HASH:=skip -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION) - -PKG_LICENSE:=GPL-3.0 -PKG_LICENSE_FILE:=LICENSE -PKG_MAINTAINER:=sbwml - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 -PKG_USE_MIPS16:=0 -PKG_BUILD_FLAGS:=no-mips16 - -GO_PKG:=github.com/urlesistiana/v2dat - -include $(INCLUDE_DIR)/package.mk -include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk - -define Package/v2dat - SECTION:=utils - CATEGORY:=Utilities - TITLE:=V2ray geo/ip data unpack tools - URL:=https://github.com/urlesistiana/v2dat - DEPENDS:=$(GO_ARCH_DEPENDS) -endef - -define Package/v2dat/install - $(call GoPackage/Package/Install/Bin,$(1)) -endef - -$(eval $(call GoBinPackage,v2dat)) -$(eval $(call BuildPackage,v2dat)) diff --git a/v2dat/patches/100-format-logtime.patch b/v2dat/patches/100-format-logtime.patch deleted file mode 100644 index 4ccc1ed6..00000000 --- a/v2dat/patches/100-format-logtime.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 226cb45cc97c52fc0383a5b5172a131f65921f4a Mon Sep 17 00:00:00 2001 -From: sbwml -Date: Wed, 20 Sep 2023 20:52:27 +0800 -Subject: [PATCH 1/3] format logtime - ---- - mlog/logger.go | 15 +++++++++++++-- - 1 file changed, 13 insertions(+), 2 deletions(-) - ---- a/mlog/logger.go -+++ b/mlog/logger.go -@@ -1,17 +1,28 @@ - package mlog - --import "go.uber.org/zap" -+import ( -+ "time" -+ -+ "go.uber.org/zap" -+ "go.uber.org/zap/zapcore" -+) - - var logger = mustInitLogger() - - func mustInitLogger() *zap.Logger { -- l, err := zap.NewDevelopment(zap.WithCaller(false)) -+ config := zap.NewDevelopmentConfig() -+ config.EncoderConfig.EncodeTime = customTimeEncoder -+ l, err := config.Build(zap.WithCaller(false)) - if err != nil { - panic("failed to init mlog:" + err.Error()) - } - return l - } - -+func customTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) { -+ enc.AppendString(t.Format("2006-01-02 15:04:05")) -+} -+ - func L() *zap.Logger { - return logger - } diff --git a/v2dat/patches/101-v2dat-update-dependencies.patch b/v2dat/patches/101-v2dat-update-dependencies.patch deleted file mode 100644 index ac8381e5..00000000 --- a/v2dat/patches/101-v2dat-update-dependencies.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 0e465de6bc63d71dd7371209bbaaf9350e2fc567 Mon Sep 17 00:00:00 2001 -From: sbwml -Date: Fri, 20 Mar 2026 09:45:03 +0800 -Subject: [PATCH 2/3] v2dat: update dependencies - -Signed-off-by: sbwml ---- - go.mod | 15 ++++++--------- - go.sum | 47 +++++++++++++++++------------------------------ - 2 files changed, 23 insertions(+), 39 deletions(-) - ---- a/go.mod -+++ b/go.mod -@@ -1,18 +1,15 @@ - module github.com/urlesistiana/v2dat - --go 1.19 -+go 1.23 - - require ( -- github.com/spf13/cobra v1.6.1 -- go.uber.org/zap v1.24.0 -- google.golang.org/protobuf v1.28.1 -+ github.com/spf13/cobra v1.10.2 -+ go.uber.org/zap v1.27.1 -+ google.golang.org/protobuf v1.36.11 - ) - - require ( -- github.com/google/go-cmp v0.5.9 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect -- github.com/spf13/pflag v1.0.5 // indirect -- github.com/stretchr/testify v1.8.1 // indirect -- go.uber.org/atomic v1.10.0 // indirect -- go.uber.org/multierr v1.9.0 // indirect -+ github.com/spf13/pflag v1.0.10 // indirect -+ go.uber.org/multierr v1.11.0 // indirect - ) ---- a/go.sum -+++ b/go.sum -@@ -1,42 +1,29 @@ --github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= --github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= --github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= - github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= - github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= --github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= --github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= --github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= --github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= --github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= - github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= - github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= --github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= - github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= - github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= - github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= --github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= --github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= --github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= --github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= --github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= --github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= --github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= --github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= --github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -+github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= -+github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -+github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -+github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= -+github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= - github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= - github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= --go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= --go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= --go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= --go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= --go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= --go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= --go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= --golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= --google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= --google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= --google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= -+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -+go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -+go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -+go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= -+go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -+go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -+google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= -+google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= - gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= --gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= - gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= - gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/v2dat/patches/102-perf-unpack-Use-memory-mapping-to-reduce-memory-usag.patch b/v2dat/patches/102-perf-unpack-Use-memory-mapping-to-reduce-memory-usag.patch deleted file mode 100644 index 530cc15e..00000000 --- a/v2dat/patches/102-perf-unpack-Use-memory-mapping-to-reduce-memory-usag.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 0c6f9a36049423283052dfaf6eb9e211afe95c89 Mon Sep 17 00:00:00 2001 -From: sbwml -Date: Fri, 20 Mar 2026 10:11:24 +0800 -Subject: [PATCH 3/3] perf(unpack): Use memory mapping to reduce memory usage - -Replaced `os.ReadFile` with `mmap` to avoid loading the entire geoip.dat -or geosite.dat file into memory during unpacking. This fixes -out-of-memory errors on low-memory devices. - -Signed-off-by: sbwml ---- - cmd/unpack/geoip.go | 18 ++++++++++++++---- - cmd/unpack/geosite.go | 11 ++++++++++- - go.mod | 4 +++- - go.sum | 4 ++++ - 4 files changed, 31 insertions(+), 6 deletions(-) - ---- a/cmd/unpack/geoip.go -+++ b/cmd/unpack/geoip.go -@@ -3,14 +3,16 @@ package unpack - import ( - "bufio" - "fmt" -- "github.com/spf13/cobra" -- "github.com/urlesistiana/v2dat/v2data" -- "go.uber.org/zap" - "io" - "net/netip" - "os" - "path/filepath" - "strings" -+ -+ "github.com/edsrzf/mmap-go" -+ "github.com/spf13/cobra" -+ "github.com/urlesistiana/v2dat/v2data" -+ "go.uber.org/zap" - ) - - func newGeoIPCmd() *cobra.Command { -@@ -34,10 +36,18 @@ func newGeoIPCmd() *cobra.Command { - - func unpackGeoIP(args *unpackArgs) error { - filePath, wantTags, ourDir := args.file, args.filters, args.outDir -- b, err := os.ReadFile(filePath) -+ -+ file, err := os.Open(filePath) - if err != nil { - return err - } -+ defer file.Close() -+ -+ b, err := mmap.Map(file, mmap.RDONLY, 0) -+ if err != nil { -+ return fmt.Errorf("error mapping file: %w", err) -+ } -+ defer b.Unmap() - geoIPList, err := v2data.LoadGeoIPListFromDAT(b) - if err != nil { - return err ---- a/cmd/unpack/geosite.go -+++ b/cmd/unpack/geosite.go -@@ -3,6 +3,7 @@ package unpack - import ( - "bufio" - "fmt" -+ "github.com/edsrzf/mmap-go" - "github.com/spf13/cobra" - "github.com/urlesistiana/v2dat/v2data" - "go.uber.org/zap" -@@ -39,10 +40,18 @@ func newGeoSiteCmd() *cobra.Command { - - func unpackGeoSite(args *unpackArgs) error { - filePath, suffixes, outDir := args.file, args.filters, args.outDir -- b, err := os.ReadFile(filePath) -+ -+ file, err := os.Open(filePath) - if err != nil { - return err - } -+ defer file.Close() -+ -+ b, err := mmap.Map(file, mmap.RDONLY, 0) -+ if err != nil { -+ return fmt.Errorf("error mapping file: %w", err) -+ } -+ defer b.Unmap() - geoSiteList, err := v2data.LoadGeoSiteList(b) - if err != nil { - return err ---- a/go.mod -+++ b/go.mod -@@ -1,8 +1,9 @@ - module github.com/urlesistiana/v2dat - --go 1.23 -+go 1.25.0 - - require ( -+ github.com/edsrzf/mmap-go v1.2.0 - github.com/spf13/cobra v1.10.2 - go.uber.org/zap v1.27.1 - google.golang.org/protobuf v1.36.11 -@@ -12,4 +13,5 @@ require ( - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/spf13/pflag v1.0.10 // indirect - go.uber.org/multierr v1.11.0 // indirect -+ golang.org/x/sys v0.42.0 // indirect - ) ---- a/go.sum -+++ b/go.sum -@@ -1,6 +1,8 @@ - github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= - github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= - github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -+github.com/edsrzf/mmap-go v1.2.0 h1:hXLYlkbaPzt1SaQk+anYwKSRNhufIDCchSPkUD6dD84= -+github.com/edsrzf/mmap-go v1.2.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= - github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= - github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= - github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -@@ -22,6 +24,8 @@ go.uber.org/multierr v1.11.0/go.mod h1:2 - go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= - go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= - go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= - google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= - google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= - gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=