🍓 Sync 2026-08-24 20:40:37
Merge-upstream / merge (push) Canceled after 0s

This commit is contained in:
github-actions[bot]
2026-08-24 20:40:37 +08:00
parent 6b8877f5e1
commit 7a2a880e8f
13 changed files with 353 additions and 557 deletions
+3 -3
View File
@@ -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 <admin@cooluc.com>
@@ -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;
+121 -113
View File
@@ -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: <a href=\"https://www.cloudflare.com/ips-v4\" target=\"_blank"
"\">https://www.cloudflare.com/ips-v4</a> <br /> IPv6 CIDR: <a href=\"https://"
@@ -470,19 +470,19 @@ msgid ""
"v6</a>"
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 ""
+121 -113
View File
@@ -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 安全 DNSDNS 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 "阿里云公共 DNS223.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 "阿里云公共 DNS223.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 "阿里云公共 DNSDNS 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 "阿里云公共 DNSDNS 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 "阿里云公共 DNSDNS over QUIC"
@@ -93,11 +93,11 @@ msgstr "阿里云公共 DNSDNS 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 "百度公共 DNS180.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 "思科公共 DNS208.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 "思科公共 DNS208.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 公共 DNS1.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 公共 DNS1.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 "谷歌公共 DNS8.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 "谷歌公共 DNS8.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: <a href=\"https://www.cloudflare.com/ips-v4\" target=\"_blank"
"\">https://www.cloudflare.com/ips-v4</a> <br /> IPv6 CIDR: <a href=\"https://"
@@ -489,19 +489,19 @@ msgid ""
"v6</a>"
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 公共 DNS149.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 公共 DNS9.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 "腾讯公共 DNS119.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 "腾讯公共 DNS119.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 "腾讯公共 DNSDNS over HTTPS"
@@ -741,7 +749,7 @@ msgstr "腾讯公共 DNSDNS 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 "火山引擎公共 DNS180.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 "火山引擎公共 DNS180.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 "信风公共 DNS114.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 "信风公共 DNS114.114.115.115"
+1
View File
@@ -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'
+2
View File
@@ -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'
+10 -10
View File
@@ -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`);
}
}
}
+2 -2
View File
@@ -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
@@ -0,0 +1,88 @@
From 1afb8c2ae54495992ac20eaa192478d368a0f81a Mon Sep 17 00:00:00 2001
From: sbwml <admin@cooluc.com>
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)
+ }
+}
-46
View File
@@ -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 <admin@cooluc.com>
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))
-42
View File
@@ -1,42 +0,0 @@
From 226cb45cc97c52fc0383a5b5172a131f65921f4a Mon Sep 17 00:00:00 2001
From: sbwml <admin@cooluc.com>
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
}
@@ -1,100 +0,0 @@
From 0e465de6bc63d71dd7371209bbaaf9350e2fc567 Mon Sep 17 00:00:00 2001
From: sbwml <admin@cooluc.com>
Date: Fri, 20 Mar 2026 09:45:03 +0800
Subject: [PATCH 2/3] v2dat: update dependencies
Signed-off-by: sbwml <admin@cooluc.com>
---
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=
@@ -1,128 +0,0 @@
From 0c6f9a36049423283052dfaf6eb9e211afe95c89 Mon Sep 17 00:00:00 2001
From: sbwml <admin@cooluc.com>
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 <admin@cooluc.com>
---
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=