🍓 Sync 2026-08-24 20:40:37

This commit is contained in:
github-actions[bot] committed 2026-08-24 20:40:37 +08:00
1 parent 0b3ba53026
commit 684675c83b
13 files changed
+353 -557

No files matched your search

+3 -3
View File
@@ -1,12 +1,12 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-mosdns PKG_NAME:=luci-app-mosdns
PKG_VERSION:=1.7.8 PKG_VERSION:=1.7.9
PKG_RELEASE:=15 PKG_RELEASE:=16
LUCI_TITLE:=LuCI Support for mosdns LUCI_TITLE:=LuCI Support for mosdns
LUCI_PKGARCH:=all 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> PKG_MAINTAINER:=sbwml <admin@cooluc.com>
@@ -172,6 +172,11 @@ return view.extend({
o.depends('configfile', '/var/etc/mosdns.json'); o.depends('configfile', '/var/etc/mosdns.json');
o.rmempty = false; 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 = s.taboption('basic', form.Flag, 'redirect', _('DNS Forward'), _('Forward Dnsmasq Domain Name resolution requests to MosDNS'));
o.default = false; o.default = false;
+121 -113
View File
@@ -1,15 +1,15 @@
msgid "" msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8" 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)" msgid "360 Public DNS (DNS over HTTPS)"
msgstr "" 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" msgid "ADblock Source"
msgstr "" 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" msgid "API Listen port"
msgstr "" msgstr ""
@@ -52,25 +52,25 @@ msgstr ""
msgid "Advanced Options" msgid "Advanced Options"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:206 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:211
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:254 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:259
msgid "Aliyun Public DNS (223.5.5.5)" msgid "Aliyun Public DNS (223.5.5.5)"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:207 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:212
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:255 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:260
msgid "Aliyun Public DNS (223.6.6.6)" msgid "Aliyun Public DNS (223.6.6.6)"
msgstr "" 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)" msgid "Aliyun Public DNS (DNS over HTTP/3)"
msgstr "" 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)" msgid "Aliyun Public DNS (DNS over HTTPS)"
msgstr "" 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)" msgid "Aliyun Public DNS (DNS over QUIC)"
msgstr "" msgstr ""
@@ -78,11 +78,11 @@ msgstr ""
msgid "Another update is already in progress." msgid "Another update is already in progress."
msgstr "" 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" msgid "Apple domains optimization"
msgstr "" 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" msgid "Auto Save Cache Interval"
msgstr "" msgstr ""
@@ -92,8 +92,8 @@ msgid ""
"rules through scheduled tasks." "rules through scheduled tasks."
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:212 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:217
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:258 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:263
msgid "Baidu Public DNS (180.76.76.76)" msgid "Baidu Public DNS (180.76.76.76)"
msgstr "" msgstr ""
@@ -105,7 +105,7 @@ msgstr ""
msgid "Basic Setting" msgid "Basic Setting"
msgstr "" 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 "" msgid ""
"Block DNS RR Type 65 records (HTTPS/SVCB, used for HTTP/3, ECH, etc.), force " "Block DNS RR Type 65 records (HTTPS/SVCB, used for HTTP/3, ECH, etc.), force "
"using only A/AAAA records." "using only A/AAAA records."
@@ -119,21 +119,21 @@ msgstr ""
msgid "Block PTR" msgid "Block PTR"
msgstr "" 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" msgid "Bootstrap DNS servers"
msgstr "" 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 "" msgid ""
"Bootstrap DNS servers are used to resolve IP addresses of the DoH/DoT " "Bootstrap DNS servers are used to resolve IP addresses of the DoH/DoT "
"resolvers you specify as upstreams" "resolvers you specify as upstreams"
msgstr "" 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" msgid "Cache Dump"
msgstr "" 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" msgid "Cache Prefetching"
msgstr "" msgstr ""
@@ -145,21 +145,21 @@ msgstr ""
msgid "Check And Update GeoData." msgid "Check And Update GeoData."
msgstr "" 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" msgid "China DNS prefer IPv4"
msgstr "" 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" msgid "China DNS server"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:229 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:234
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:246 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:251
msgid "Cisco Public DNS (208.67.220.220)" msgid "Cisco Public DNS (208.67.220.220)"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:228 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:233
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:245 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:250
msgid "Cisco Public DNS (208.67.222.222)" msgid "Cisco Public DNS (208.67.222.222)"
msgstr "" msgstr ""
@@ -171,18 +171,18 @@ msgstr ""
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:223 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:228
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:240 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:245
msgid "CloudFlare Public DNS (1.0.0.1)" msgid "CloudFlare Public DNS (1.0.0.1)"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:222 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:227
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:239 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:244
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:260 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:265
msgid "CloudFlare Public DNS (1.1.1.1)" msgid "CloudFlare Public DNS (1.1.1.1)"
msgstr "" 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" msgid "Cloudflare IP Ranges"
msgstr "" msgstr ""
@@ -194,7 +194,7 @@ msgstr ""
msgid "Collecting data..." msgid "Collecting data..."
msgstr "" 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" msgid "Concurrent"
msgstr "" msgstr ""
@@ -202,11 +202,11 @@ msgstr ""
msgid "Config File" msgid "Config File"
msgstr "" 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" msgid "Configuration Editor"
msgstr "" 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" msgid "Custom China DNS"
msgstr "" msgstr ""
@@ -220,11 +220,11 @@ msgid ""
"supports domain matching rules)." "supports domain matching rules)."
msgstr "" 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" msgid "Custom IP"
msgstr "" 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" msgid "Custom Stream Media DNS"
msgstr "" msgstr ""
@@ -232,21 +232,21 @@ msgstr ""
msgid "DDNS Lists" msgid "DDNS Lists"
msgstr "" 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" msgid "DNS Cache Size"
msgstr "" 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" msgid "DNS Forward"
msgstr "" 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 "" msgid ""
"DNS query request concurrency, The number of upstream DNS servers that are " "DNS query request concurrency, The number of upstream DNS servers that are "
"allowed to initiate requests at the same time" "allowed to initiate requests at the same time"
msgstr "" 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" msgid "DNS redirect"
msgstr "" msgstr ""
@@ -262,21 +262,21 @@ msgstr ""
msgid "Default Config" msgid "Default Config"
msgstr "" 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)" msgid "Disable RR Type 65 (HTTPS/SVCB)"
msgstr "" 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" msgid "Disable TLS Certificate"
msgstr "" 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 "" msgid ""
"Disable TLS Servers certificate validation, Can be useful if system CA " "Disable TLS Servers certificate validation, Can be useful if system CA "
"certificate expires or the system time is out of order" "certificate expires or the system time is out of order"
msgstr "" 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)" msgid "DoH/TCP/DoT Connection Multiplexing idle timeout (default 30 seconds)"
msgstr "" msgstr ""
@@ -284,37 +284,37 @@ msgstr ""
msgid "Enable Auto Database Update" msgid "Enable Auto Database Update"
msgstr "" 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" msgid "Enable DNS ADblock"
msgstr "" 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" msgid "Enable DNS Cache"
msgstr "" 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" msgid "Enable EDNS client subnet"
msgstr "" 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 "" msgid ""
"Enable TCP/DoT RFC 7766 new Query Pipelining connection multiplexing mode" "Enable TCP/DoT RFC 7766 new Query Pipelining connection multiplexing mode"
msgstr "" 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" msgid "Enable this option fallback policy forces forwarding to remote DNS"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:142 #: 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" msgid "Enabled"
msgstr "" 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" msgid "Enter the GeoIP.dat category to be exported, Allow add multiple tags"
msgstr "" 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" msgid "Enter the GeoSite.dat category to be exported, Allow add multiple tags"
msgstr "" msgstr ""
@@ -354,8 +354,8 @@ msgstr ""
msgid "Every Wednesday" msgid "Every Wednesday"
msgstr "" 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:478
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:483
msgid "Export directory: /var/mosdns" msgid "Export directory: /var/mosdns"
msgstr "" msgstr ""
@@ -367,7 +367,7 @@ msgstr ""
msgid "Failed to start update." msgid "Failed to start update."
msgstr "" 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" msgid "Flush DNS Cache"
msgstr "" msgstr ""
@@ -379,27 +379,27 @@ msgstr ""
msgid "Flushing DNS Cache Success." msgid "Flushing DNS Cache Success."
msgstr "" 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 "" msgid ""
"Flushing DNS Cache will clear any IP addresses or DNS records from MosDNS " "Flushing DNS Cache will clear any IP addresses or DNS records from MosDNS "
"cache." "cache."
msgstr "" 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" msgid "Follow WAN interface DNS if not enabled"
msgstr "" 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 "" msgid ""
"For Apple domains equipped with Chinese mainland CDN, always responsive to " "For Apple domains equipped with Chinese mainland CDN, always responsive to "
"Chinese CDN IP addresses" "Chinese CDN IP addresses"
msgstr "" 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" msgid "Force redirect all local DNS queries to MosDNS, a.k.a. DNS Hijacking"
msgstr "" 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" msgid "Forward Dnsmasq Domain Name resolution requests to MosDNS"
msgstr "" msgstr ""
@@ -415,7 +415,7 @@ msgstr ""
msgid "GeoData Export" msgid "GeoData Export"
msgstr "" 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" msgid "GeoIP Tags"
msgstr "" msgstr ""
@@ -423,7 +423,7 @@ msgstr ""
msgid "GeoIP Type" msgid "GeoIP Type"
msgstr "" 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" msgid "GeoSite Tags"
msgstr "" msgstr ""
@@ -435,14 +435,14 @@ msgstr ""
msgid "GitHub Proxy" msgid "GitHub Proxy"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:225 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:230
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:242 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:247
msgid "Google Public DNS (8.8.4.4)" msgid "Google Public DNS (8.8.4.4)"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:224 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:229
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:241 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:246
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:259 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:264
msgid "Google Public DNS (8.8.8.8)" msgid "Google Public DNS (8.8.8.8)"
msgstr "" msgstr ""
@@ -458,11 +458,11 @@ msgstr ""
msgid "Hosts" msgid "Hosts"
msgstr "" 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" msgid "IP Address"
msgstr "" 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 "" msgid ""
"IPv4 CIDR: <a href=\"https://www.cloudflare.com/ips-v4\" target=\"_blank" "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://" "\">https://www.cloudflare.com/ips-v4</a> <br /> IPv6 CIDR: <a href=\"https://"
@@ -470,19 +470,19 @@ msgid ""
"v6</a>" "v6</a>"
msgstr "" 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 "" msgid ""
"IPv4 is preferred for China DNS resolution of dual-stack addresses, and is " "IPv4 is preferred for China DNS resolution of dual-stack addresses, and is "
"not affected when the destination is IPv6 only" "not affected when the destination is IPv6 only"
msgstr "" 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 "" msgid ""
"IPv4 is preferred for Remote / Streaming Media DNS resolution of dual-stack " "IPv4 is preferred for Remote / Streaming Media DNS resolution of dual-stack "
"addresses, and is not affected when the destination is IPv6 only" "addresses, and is not affected when the destination is IPv6 only"
msgstr "" 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" msgid "Idle Timeout"
msgstr "" msgstr ""
@@ -490,17 +490,17 @@ msgstr ""
msgid "Info" msgid "Info"
msgstr "" 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 "" msgid ""
"Interval for the background thread to scan the cache for prefetching (in " "Interval for the background thread to scan the cache for prefetching (in "
"seconds)." "seconds)."
msgstr "" 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" msgid "Lazy Cache TTL"
msgstr "" 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 "" msgid ""
"Lazy cache survival time (in second). To disable Lazy Cache, please set to 0." "Lazy cache survival time (in second). To disable Lazy Cache, please set to 0."
msgstr "" msgstr ""
@@ -529,6 +529,10 @@ msgstr ""
msgid "Log File" msgid "Log File"
msgstr "" 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 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:161
msgid "Log Level" msgid "Log Level"
msgstr "" msgstr ""
@@ -537,33 +541,33 @@ msgstr ""
msgid "Logs" msgid "Logs"
msgstr "" 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 "" msgid ""
"Match the parsing result with the Cloudflare IP ranges, and when there is a " "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 " "successful match, use the 'Custom IP' as the parsing result (experimental "
"feature)" "feature)"
msgstr "" 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" msgid "Maximum TTL"
msgstr "" 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" msgid "Minimum TTL"
msgstr "" 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 "" msgid ""
"Minimum cache hits required since the last refresh to trigger a prefetch." "Minimum cache hits required since the last refresh to trigger a prefetch."
msgstr "" 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 "" msgid ""
"Modify the Maximum TTL value (seconds) for DNS answer results, 0 indicating " "Modify the Maximum TTL value (seconds) for DNS answer results, 0 indicating "
"no modification" "no modification"
msgstr "" 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 "" msgid ""
"Modify the Minimum TTL value (seconds) for DNS answer results, 0 indicating " "Modify the Minimum TTL value (seconds) for DNS answer results, 0 indicating "
"no modification" "no modification"
@@ -585,7 +589,7 @@ msgstr ""
msgid "NOT RUNNING" msgid "NOT RUNNING"
msgstr "" 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" msgid "Netflix, Disney+, Hulu and streaming media rules list will use this DNS"
msgstr "" msgstr ""
@@ -593,7 +597,7 @@ msgstr ""
msgid "No log data." msgid "No log data."
msgstr "" 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 "" msgid ""
"Please provide the IP address you use when accessing foreign websites. This " "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 " "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..." msgid "Please wait, this may take a few moments..."
msgstr "" 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" msgid "Prefetch Before Expire"
msgstr "" 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" msgid "Prefetch Min Hits"
msgstr "" 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" msgid "Prefetch Scan Interval"
msgstr "" 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)." msgid "Prefetch when the remaining TTL is less than this value (in seconds)."
msgstr "" 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" msgid "Prevent DNS Leaks"
msgstr "" 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 "" msgid ""
"Proactively refresh hot cache entries in the background before they expire." "Proactively refresh hot cache entries in the background before they expire."
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:227 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:232
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:244 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:249
msgid "Quad9 Public DNS (149.112.112.112)" msgid "Quad9 Public DNS (149.112.112.112)"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:226 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:231
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:243 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:248
msgid "Quad9 Public DNS (9.9.9.9)" msgid "Quad9 Public DNS (9.9.9.9)"
msgstr "" msgstr ""
@@ -657,11 +661,11 @@ msgstr ""
msgid "Refresh every %s seconds." msgid "Refresh every %s seconds."
msgstr "" 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" msgid "Remote DNS prefer IPv4"
msgstr "" 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" msgid "Remote DNS server"
msgstr "" msgstr ""
@@ -673,10 +677,14 @@ msgstr ""
msgid "Rules" msgid "Rules"
msgstr "" 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" msgid "Save the cache locally and reload the cache dump on the next startup"
msgstr "" 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 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/update.js:28
msgid "Starting update..." msgid "Starting update..."
msgstr "" msgstr ""
@@ -685,29 +693,29 @@ msgstr ""
msgid "Streaming Media" msgid "Streaming Media"
msgstr "" 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" msgid "Streaming Media DNS server"
msgstr "" 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" msgid "Support for local files, such as: file:///var/mosdns/example.txt"
msgstr "" 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" msgid "TCP/DoT Connection Multiplexing"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:205 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:210
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:253 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:258
msgid "Tencent Public DNS (119.28.28.28)" msgid "Tencent Public DNS (119.28.28.28)"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:204 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:209
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:252 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:257
msgid "Tencent Public DNS (119.29.29.29)" msgid "Tencent Public DNS (119.29.29.29)"
msgstr "" 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)" msgid "Tencent Public DNS (DNS over HTTPS)"
msgstr "" msgstr ""
@@ -715,29 +723,29 @@ msgstr ""
msgid "The list of rules only apply to 'Default Config' profiles." msgid "The list of rules only apply to 'Default Config' profiles."
msgstr "" 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 "" msgid ""
"This feature is typically used when using a self-built DNS server as an " "This feature is typically used when using a self-built DNS server as an "
"Remote / Streaming Media DNS upstream (requires support from the upstream " "Remote / Streaming Media DNS upstream (requires support from the upstream "
"server)" "server)"
msgstr "" 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 "" msgid ""
"This is the content of the file '/etc/mosdns/config_custom.yaml' from which " "This is the content of the file '/etc/mosdns/config_custom.yaml' from which "
"your MosDNS configuration will be generated. Only accepts configuration " "your MosDNS configuration will be generated. Only accepts configuration "
"content in yaml format." "content in yaml format."
msgstr "" 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)" msgid "TrafficRoute Public DNS (180.184.1.1)"
msgstr "" 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)" msgid "TrafficRoute Public DNS (180.184.2.2)"
msgstr "" 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:43
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:48 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:48
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:67 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:67
@@ -801,7 +809,7 @@ msgid ""
"domain matching rules)." "domain matching rules)."
msgstr "" 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 "" msgid ""
"When using custom rule sources, please use rule types supported by MosDNS " "When using custom rule sources, please use rule types supported by MosDNS "
"(domain list or AdGuardHome rules)." "(domain list or AdGuardHome rules)."
@@ -811,13 +819,13 @@ msgstr ""
msgid "White Lists" msgid "White Lists"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:210 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:215
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:256 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:261
msgid "Xinfeng Public DNS (114.114.114.114)" msgid "Xinfeng Public DNS (114.114.114.114)"
msgstr "" msgstr ""
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:211 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:216
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:257 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:262
msgid "Xinfeng Public DNS (114.114.115.115)" msgid "Xinfeng Public DNS (114.114.115.115)"
msgstr "" msgstr ""
+121 -113
View File
@@ -11,15 +11,15 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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)" msgid "360 Public DNS (DNS over HTTPS)"
msgstr "360 安全 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" msgid "ADblock Source"
msgstr "广告过滤规则来源" 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" msgid "API Listen port"
msgstr "API 监听端口" msgstr "API 监听端口"
@@ -67,25 +67,25 @@ msgstr "加入的域名将阻止 PTR 请求(每个域名一行,支持域名
msgid "Advanced Options" msgid "Advanced Options"
msgstr "高级选项" msgstr "高级选项"
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:206 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:211
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:254 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:259
msgid "Aliyun Public DNS (223.5.5.5)" msgid "Aliyun Public DNS (223.5.5.5)"
msgstr "阿里云公共 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:212
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:255 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:260
msgid "Aliyun Public DNS (223.6.6.6)" msgid "Aliyun Public DNS (223.6.6.6)"
msgstr "阿里云公共 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)" msgid "Aliyun Public DNS (DNS over HTTP/3)"
msgstr "阿里云公共 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)" msgid "Aliyun Public DNS (DNS over HTTPS)"
msgstr "阿里云公共 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)" msgid "Aliyun Public DNS (DNS over QUIC)"
msgstr "阿里云公共 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." msgid "Another update is already in progress."
msgstr "另一个更新正在进行中。" 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" msgid "Apple domains optimization"
msgstr "Apple 域名解析优化" 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" msgid "Auto Save Cache Interval"
msgstr "自动保存缓存间隔(秒)" msgstr "自动保存缓存间隔(秒)"
@@ -107,8 +107,8 @@ msgid ""
"rules through scheduled tasks." "rules through scheduled tasks."
msgstr "通过定时任务自动更新 GeoIP 和 GeoSite 数据库以及广告过滤规则。" 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:217
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:258 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:263
msgid "Baidu Public DNS (180.76.76.76)" msgid "Baidu Public DNS (180.76.76.76)"
msgstr "百度公共 DNS(180.76.76.76)" msgstr "百度公共 DNS(180.76.76.76)"
@@ -120,7 +120,7 @@ msgstr "基本选项"
msgid "Basic Setting" msgid "Basic Setting"
msgstr "基本设置" 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 "" msgid ""
"Block DNS RR Type 65 records (HTTPS/SVCB, used for HTTP/3, ECH, etc.), force " "Block DNS RR Type 65 records (HTTPS/SVCB, used for HTTP/3, ECH, etc.), force "
"using only A/AAAA records." "using only A/AAAA records."
@@ -136,21 +136,21 @@ msgstr "黑名单"
msgid "Block PTR" msgid "Block PTR"
msgstr "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" msgid "Bootstrap DNS servers"
msgstr "Bootstrap DNS 服务器" 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 "" msgid ""
"Bootstrap DNS servers are used to resolve IP addresses of the DoH/DoT " "Bootstrap DNS servers are used to resolve IP addresses of the DoH/DoT "
"resolvers you specify as upstreams" "resolvers you specify as upstreams"
msgstr "Bootstrap DNS 服务器用于解析您指定为上游的 DoH / DoT 解析器的 IP 地址" 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" msgid "Cache Dump"
msgstr "自动保存缓存" 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" msgid "Cache Prefetching"
msgstr "缓存预取" msgstr "缓存预取"
@@ -162,21 +162,21 @@ msgstr "检查并更新"
msgid "Check And Update GeoData." msgid "Check And Update GeoData."
msgstr "检查并更新 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" msgid "China DNS prefer IPv4"
msgstr "国内 DNS 首选 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" msgid "China DNS server"
msgstr "国内 DNS 服务器" 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:234
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:246 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:251
msgid "Cisco Public DNS (208.67.220.220)" msgid "Cisco Public DNS (208.67.220.220)"
msgstr "思科公共 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:233
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:245 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:250
msgid "Cisco Public DNS (208.67.222.222)" msgid "Cisco Public DNS (208.67.222.222)"
msgstr "思科公共 DNS(208.67.222.222)" msgstr "思科公共 DNS(208.67.222.222)"
@@ -188,18 +188,18 @@ msgstr "清空日志"
msgid "Close" msgid "Close"
msgstr "关闭" msgstr "关闭"
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:223 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:228
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:240 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:245
msgid "CloudFlare Public DNS (1.0.0.1)" msgid "CloudFlare Public DNS (1.0.0.1)"
msgstr "CloudFlare 公共 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:227
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:239 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:244
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:260 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:265
msgid "CloudFlare Public DNS (1.1.1.1)" msgid "CloudFlare Public DNS (1.1.1.1)"
msgstr "CloudFlare 公共 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" msgid "Cloudflare IP Ranges"
msgstr "Cloudflare IP 范围" msgstr "Cloudflare IP 范围"
@@ -211,7 +211,7 @@ msgstr "Cloudflare 选项"
msgid "Collecting data..." msgid "Collecting data..."
msgstr "获取数据中..." 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" msgid "Concurrent"
msgstr "DNS 服务器并发数(默认 2)" msgstr "DNS 服务器并发数(默认 2)"
@@ -219,11 +219,11 @@ msgstr "DNS 服务器并发数(默认 2)"
msgid "Config File" msgid "Config File"
msgstr "配置文件" 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" msgid "Configuration Editor"
msgstr "配置编辑器" 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" msgid "Custom China DNS"
msgstr "自定义国内 DNS" msgstr "自定义国内 DNS"
@@ -238,11 +238,11 @@ msgid ""
msgstr "" msgstr ""
"自定义 Hosts 重写,如:baidu.com 10.0.0.1(每个规则一行,支持域名匹配规则)" "自定义 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" msgid "Custom IP"
msgstr "自选 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" msgid "Custom Stream Media DNS"
msgstr "自定义流媒体 DNS" msgstr "自定义流媒体 DNS"
@@ -250,21 +250,21 @@ msgstr "自定义流媒体 DNS"
msgid "DDNS Lists" msgid "DDNS Lists"
msgstr "DDNS 域名" 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" msgid "DNS Cache Size"
msgstr "DNS 缓存大小" 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" msgid "DNS Forward"
msgstr "DNS 转发" 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 "" msgid ""
"DNS query request concurrency, The number of upstream DNS servers that are " "DNS query request concurrency, The number of upstream DNS servers that are "
"allowed to initiate requests at the same time" "allowed to initiate requests at the same time"
msgstr "DNS 查询请求并发数,允许同时发起请求的上游 DNS 服务器数量" 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" msgid "DNS redirect"
msgstr "DNS 重定向" msgstr "DNS 重定向"
@@ -280,22 +280,22 @@ msgstr "调试"
msgid "Default Config" msgid "Default Config"
msgstr "内置预设" 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)" msgid "Disable RR Type 65 (HTTPS/SVCB)"
msgstr "禁用 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" msgid "Disable TLS Certificate"
msgstr "禁用 TLS 证书" 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 "" msgid ""
"Disable TLS Servers certificate validation, Can be useful if system CA " "Disable TLS Servers certificate validation, Can be useful if system CA "
"certificate expires or the system time is out of order" "certificate expires or the system time is out of order"
msgstr "" msgstr ""
"禁用 TLS 服务器证书验证,当系统 CA 证书过期或系统时间错乱时,本选项可能会有用" "禁用 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)" msgid "DoH/TCP/DoT Connection Multiplexing idle timeout (default 30 seconds)"
msgstr "DoH/TCP/DoT 连接复用空闲保持时间(默认 30 秒)" msgstr "DoH/TCP/DoT 连接复用空闲保持时间(默认 30 秒)"
@@ -303,37 +303,37 @@ msgstr "DoH/TCP/DoT 连接复用空闲保持时间(默认 30 秒)"
msgid "Enable Auto Database Update" msgid "Enable Auto Database Update"
msgstr "启用自动更新" 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" msgid "Enable DNS ADblock"
msgstr "启用 DNS 广告过滤" 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" msgid "Enable DNS Cache"
msgstr "启用 DNS 缓存" 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" msgid "Enable EDNS client subnet"
msgstr "启用 EDNS 客户端子网" 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 "" msgid ""
"Enable TCP/DoT RFC 7766 new Query Pipelining connection multiplexing mode" "Enable TCP/DoT RFC 7766 new Query Pipelining connection multiplexing mode"
msgstr "启用 TCP/DoT RFC 7766 新型 Query Pipelining 连接复用模式" 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" msgid "Enable this option fallback policy forces forwarding to remote DNS"
msgstr "启用此选项 fallback 策略会强制转发到远程 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: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" msgid "Enabled"
msgstr "启用" 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" msgid "Enter the GeoIP.dat category to be exported, Allow add multiple tags"
msgstr "输入需要导出的 GeoIP.dat 类别条目,允许添加多个标签" 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" msgid "Enter the GeoSite.dat category to be exported, Allow add multiple tags"
msgstr "填写需要导出的 GeoSite.dat 类别条目,允许添加多个标签" msgstr "填写需要导出的 GeoSite.dat 类别条目,允许添加多个标签"
@@ -373,8 +373,8 @@ msgstr "每周二"
msgid "Every Wednesday" msgid "Every Wednesday"
msgstr "每周三" 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:478
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:483
msgid "Export directory: /var/mosdns" msgid "Export directory: /var/mosdns"
msgstr "导出目录:/var/mosdns" msgstr "导出目录:/var/mosdns"
@@ -386,7 +386,7 @@ msgstr "清理日志失败:%s"
msgid "Failed to start update." msgid "Failed to start update."
msgstr "启动更新失败" 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" msgid "Flush DNS Cache"
msgstr "刷新 DNS 缓存" msgstr "刷新 DNS 缓存"
@@ -398,27 +398,27 @@ msgstr "刷新 DNS 缓存失败,请检查 MosDNS 状态是否在运行中。"
msgid "Flushing DNS Cache Success." msgid "Flushing DNS Cache Success."
msgstr "刷新 DNS 缓存成功" 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 "" msgid ""
"Flushing DNS Cache will clear any IP addresses or DNS records from MosDNS " "Flushing DNS Cache will clear any IP addresses or DNS records from MosDNS "
"cache." "cache."
msgstr "刷新 DNS 缓存会清空 MosDNS 所有 IP 地址和 DNS 解析缓存。" 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" msgid "Follow WAN interface DNS if not enabled"
msgstr "不启用则使用 WAN 接口 DNS" 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 "" msgid ""
"For Apple domains equipped with Chinese mainland CDN, always responsive to " "For Apple domains equipped with Chinese mainland CDN, always responsive to "
"Chinese CDN IP addresses" "Chinese CDN IP addresses"
msgstr "配备中国大陆 CDN 的 Apple 域名,始终应答中国大陆 CDN 地址" 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" msgid "Force redirect all local DNS queries to MosDNS, a.k.a. DNS Hijacking"
msgstr "强制将所有本地 DNS 查询重定向到 MosDNS,即 DNS 劫持。" 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" msgid "Forward Dnsmasq Domain Name resolution requests to MosDNS"
msgstr "将 Dnsmasq 域名解析请求转发到 MosDNS 服务器" msgstr "将 Dnsmasq 域名解析请求转发到 MosDNS 服务器"
@@ -434,7 +434,7 @@ msgstr "全量:包含所有国家和私有 IP 地址。"
msgid "GeoData Export" msgid "GeoData Export"
msgstr "GeoData 导出" 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" msgid "GeoIP Tags"
msgstr "GeoIP 标签" msgstr "GeoIP 标签"
@@ -442,7 +442,7 @@ msgstr "GeoIP 标签"
msgid "GeoIP Type" msgid "GeoIP Type"
msgstr "GeoIP 类型" 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" msgid "GeoSite Tags"
msgstr "GeoSite 标签" msgstr "GeoSite 标签"
@@ -454,14 +454,14 @@ msgstr "更新数据库"
msgid "GitHub Proxy" msgid "GitHub Proxy"
msgstr "GitHub 代理" 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:230
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:242 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:247
msgid "Google Public DNS (8.8.4.4)" msgid "Google Public DNS (8.8.4.4)"
msgstr "谷歌公共 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:229
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:241 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:246
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:259 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:264
msgid "Google Public DNS (8.8.8.8)" msgid "Google Public DNS (8.8.8.8)"
msgstr "谷歌公共 DNS(8.8.8.8)" msgstr "谷歌公共 DNS(8.8.8.8)"
@@ -477,11 +477,11 @@ msgstr "灰名单"
msgid "Hosts" msgid "Hosts"
msgstr "" 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" msgid "IP Address"
msgstr "IP 地址" 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 "" msgid ""
"IPv4 CIDR: <a href=\"https://www.cloudflare.com/ips-v4\" target=\"_blank" "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://" "\">https://www.cloudflare.com/ips-v4</a> <br /> IPv6 CIDR: <a href=\"https://"
@@ -489,19 +489,19 @@ msgid ""
"v6</a>" "v6</a>"
msgstr "" 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 "" msgid ""
"IPv4 is preferred for China DNS resolution of dual-stack addresses, and is " "IPv4 is preferred for China DNS resolution of dual-stack addresses, and is "
"not affected when the destination is IPv6 only" "not affected when the destination is IPv6 only"
msgstr "国内 DNS 解析双栈地址时首选 IPv4,目标仅 IPv6 时不受影响" 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 "" msgid ""
"IPv4 is preferred for Remote / Streaming Media DNS resolution of dual-stack " "IPv4 is preferred for Remote / Streaming Media DNS resolution of dual-stack "
"addresses, and is not affected when the destination is IPv6 only" "addresses, and is not affected when the destination is IPv6 only"
msgstr "远程 / 流媒体 DNS 解析双栈地址时首选 IPv4,目标仅 IPv6 时不受影响" 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" msgid "Idle Timeout"
msgstr "空闲超时" msgstr "空闲超时"
@@ -509,17 +509,17 @@ msgstr "空闲超时"
msgid "Info" msgid "Info"
msgstr "信息" 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 "" msgid ""
"Interval for the background thread to scan the cache for prefetching (in " "Interval for the background thread to scan the cache for prefetching (in "
"seconds)." "seconds)."
msgstr "后台线程扫描缓存以进行预取的时间间隔(单位:秒)" 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" msgid "Lazy Cache TTL"
msgstr "乐观缓存 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 "" msgid ""
"Lazy cache survival time (in second). To disable Lazy Cache, please set to 0." "Lazy cache survival time (in second). To disable Lazy Cache, please set to 0."
msgstr "乐观缓存生存时间(单位:秒),要禁用乐观缓存,请设置为 0" msgstr "乐观缓存生存时间(单位:秒),要禁用乐观缓存,请设置为 0"
@@ -548,6 +548,10 @@ msgstr "日志数据"
msgid "Log File" msgid "Log File"
msgstr "日志文件" 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 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:161
msgid "Log Level" msgid "Log Level"
msgstr "日志等级" msgstr "日志等级"
@@ -556,7 +560,7 @@ msgstr "日志等级"
msgid "Logs" msgid "Logs"
msgstr "日志" 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 #, fuzzy
msgid "" msgid ""
"Match the parsing result with the Cloudflare IP ranges, and when there is a " "Match the parsing result with the Cloudflare IP ranges, and when there is a "
@@ -566,26 +570,26 @@ msgstr ""
"将解析结果与 Cloudflare IP 范围进行匹配,当匹配成功时,使用 “自选 IP” 作为解" "将解析结果与 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" msgid "Maximum TTL"
msgstr "覆盖最大 TTL 值(默认 0)" 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" msgid "Minimum TTL"
msgstr "覆盖最小 TTL 值(默认 0)" 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 "" msgid ""
"Minimum cache hits required since the last refresh to trigger a prefetch." "Minimum cache hits required since the last refresh to trigger a prefetch."
msgstr "触发预取所需的最小缓存命中次数(自上次刷新起)" 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 "" msgid ""
"Modify the Maximum TTL value (seconds) for DNS answer results, 0 indicating " "Modify the Maximum TTL value (seconds) for DNS answer results, 0 indicating "
"no modification" "no modification"
msgstr "修改 DNS 应答结果的最大 TTL 值(秒),0 表示不修改" 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 "" msgid ""
"Modify the Minimum TTL value (seconds) for DNS answer results, 0 indicating " "Modify the Minimum TTL value (seconds) for DNS answer results, 0 indicating "
"no modification" "no modification"
@@ -607,7 +611,7 @@ msgstr "MosDNS 是一个插件化的 DNS 转发/分流器。"
msgid "NOT RUNNING" msgid "NOT RUNNING"
msgstr "未运行" 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" msgid "Netflix, Disney+, Hulu and streaming media rules list will use this DNS"
msgstr "自定义 Netflix、Disney+、Hulu 以及 “流媒体” 规则列表的 DNS 服务器" msgstr "自定义 Netflix、Disney+、Hulu 以及 “流媒体” 规则列表的 DNS 服务器"
@@ -615,7 +619,7 @@ msgstr "自定义 Netflix、Disney+、Hulu 以及 “流媒体” 规则列表
msgid "No log data." msgid "No log data."
msgstr "无日志数据。" 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 "" msgid ""
"Please provide the IP address you use when accessing foreign websites. This " "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 " "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..." msgid "Please wait, this may take a few moments..."
msgstr "请稍候,这可能需要一点时间..." 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" msgid "Prefetch Before Expire"
msgstr "预取触发阈值" 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" msgid "Prefetch Min Hits"
msgstr "预取最小命中次数" 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" msgid "Prefetch Scan Interval"
msgstr "预取扫描周期" 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)." msgid "Prefetch when the remaining TTL is less than this value (in seconds)."
msgstr "当剩余 TTL 小于此值(秒)时触发预取" 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" msgid "Prevent DNS Leaks"
msgstr "防止 DNS 泄漏" 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 "" msgid ""
"Proactively refresh hot cache entries in the background before they expire." "Proactively refresh hot cache entries in the background before they expire."
msgstr "在缓存到期前,后台主动预取并刷新高频访问的 DNS 记录" 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:232
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:244 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:249
msgid "Quad9 Public DNS (149.112.112.112)" msgid "Quad9 Public DNS (149.112.112.112)"
msgstr "Quad9 公共 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:231
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:243 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:248
msgid "Quad9 Public DNS (9.9.9.9)" msgid "Quad9 Public DNS (9.9.9.9)"
msgstr "Quad9 公共 DNS(9.9.9.9)" msgstr "Quad9 公共 DNS(9.9.9.9)"
@@ -683,11 +687,11 @@ msgstr ""
msgid "Refresh every %s seconds." msgid "Refresh every %s seconds."
msgstr "每 %s 秒刷新。" 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" msgid "Remote DNS prefer IPv4"
msgstr "远程 DNS 首选 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" msgid "Remote DNS server"
msgstr "远程 DNS 服务器" msgstr "远程 DNS 服务器"
@@ -699,10 +703,14 @@ msgstr "自定义规则列表"
msgid "Rules" msgid "Rules"
msgstr "规则列表" 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" msgid "Save the cache locally and reload the cache dump on the next startup"
msgstr "保存缓存到本地文件,以供下次启动时重新载入使用" 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 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/update.js:28
msgid "Starting update..." msgid "Starting update..."
msgstr "" msgstr ""
@@ -711,29 +719,29 @@ msgstr ""
msgid "Streaming Media" msgid "Streaming Media"
msgstr "流媒体" 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" msgid "Streaming Media DNS server"
msgstr "流媒体 DNS 服务器" 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" msgid "Support for local files, such as: file:///var/mosdns/example.txt"
msgstr "支持本地文件,例如: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" msgid "TCP/DoT Connection Multiplexing"
msgstr "TCP/DoT 连接复用" 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:210
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:253 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:258
msgid "Tencent Public DNS (119.28.28.28)" msgid "Tencent Public DNS (119.28.28.28)"
msgstr "腾讯公共 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:209
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:252 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:257
msgid "Tencent Public DNS (119.29.29.29)" msgid "Tencent Public DNS (119.29.29.29)"
msgstr "腾讯公共 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)" msgid "Tencent Public DNS (DNS over HTTPS)"
msgstr "腾讯公共 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." msgid "The list of rules only apply to 'Default Config' profiles."
msgstr "规则列表仅适用于 “内置预设” 配置文件。" 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 "" msgid ""
"This feature is typically used when using a self-built DNS server as an " "This feature is typically used when using a self-built DNS server as an "
"Remote / Streaming Media DNS upstream (requires support from the upstream " "Remote / Streaming Media DNS upstream (requires support from the upstream "
@@ -750,7 +758,7 @@ msgstr ""
"此功能通常在使用自建 DNS 服务器作为 远程 / 流媒体 DNS 上游时使用(需要上游服" "此功能通常在使用自建 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 "" msgid ""
"This is the content of the file '/etc/mosdns/config_custom.yaml' from which " "This is the content of the file '/etc/mosdns/config_custom.yaml' from which "
"your MosDNS configuration will be generated. Only accepts configuration " "your MosDNS configuration will be generated. Only accepts configuration "
@@ -759,15 +767,15 @@ msgstr ""
"这是文件 “/etc/mosdns/config_custom.yaml” 的内容,您的 MosDNS 配置将从此文件" "这是文件 “/etc/mosdns/config_custom.yaml” 的内容,您的 MosDNS 配置将从此文件"
"生成。仅接受 yaml 格式的配置内容。" "生成。仅接受 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)" msgid "TrafficRoute Public DNS (180.184.1.1)"
msgstr "火山引擎公共 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)" msgid "TrafficRoute Public DNS (180.184.2.2)"
msgstr "火山引擎公共 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:43
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:48 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:48
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:67 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/rules.js:67
@@ -833,7 +841,7 @@ msgstr ""
"启用 “自定义流媒体 DNS” 时,加入的域名始终使用 “流媒体 DNS 服务器” 进行解析" "启用 “自定义流媒体 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 "" msgid ""
"When using custom rule sources, please use rule types supported by MosDNS " "When using custom rule sources, please use rule types supported by MosDNS "
"(domain list or AdGuardHome rules)." "(domain list or AdGuardHome rules)."
@@ -845,13 +853,13 @@ msgstr ""
msgid "White Lists" msgid "White Lists"
msgstr "白名单" msgstr "白名单"
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:210 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:215
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:256 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:261
msgid "Xinfeng Public DNS (114.114.114.114)" msgid "Xinfeng Public DNS (114.114.114.114)"
msgstr "信风公共 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:216
#: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:257 #: luci-app-mosdns/htdocs/luci-static/resources/view/mosdns/basic.js:262
msgid "Xinfeng Public DNS (114.114.115.115)" msgid "Xinfeng Public DNS (114.114.115.115)"
msgstr "信风公共 DNS(114.114.115.115)" msgstr "信风公共 DNS(114.114.115.115)"
+1
View File
@@ -10,6 +10,7 @@ config mosdns 'config'
option configfile '/var/etc/mosdns.json' option configfile '/var/etc/mosdns.json'
option log_level 'info' option log_level 'info'
option log_file '/var/log/mosdns.log' option log_file '/var/log/mosdns.log'
option log_size '5'
option cache '1' option cache '1'
option concurrent '2' option concurrent '2'
option idle_timeout '30' option idle_timeout '30'
+2
View File
@@ -33,6 +33,7 @@ get_config() {
config_get listen_port $1 listen_port 5335 config_get listen_port $1 listen_port 5335
config_get listen_address $1 listen_address "0.0.0.0" 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_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 log_level $1 log_level "info"
config_get minimal_ttl $1 minimal_ttl 0 config_get minimal_ttl $1 minimal_ttl 0
config_get maximum_ttl $1 maximum_ttl 0 config_get maximum_ttl $1 maximum_ttl 0
@@ -67,6 +68,7 @@ generate_config() {
json_add_object 'log' json_add_object 'log'
json_add_string "level" "$log_level" json_add_string "level" "$log_level"
json_add_string "file" "$log_file" json_add_string "file" "$log_file"
json_add_string "size" "$log_size"
json_close_object json_close_object
# api # api
json_add_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'); exec_sys('rm -f /var/mosdns/geo*.txt');
if (configfile === "/var/etc/mosdns.json") { if (configfile === "/var/etc/mosdns.json") {
exec_sys(`v2dat unpack geoip -o /var/mosdns -f cn ${v2dat_dir}/geoip.dat`); exec_sys(`geo2txt geoip -f ${v2dat_dir}/geoip.dat -e cn -o /var/mosdns`);
exec_sys(`v2dat unpack geosite -o /var/mosdns -f cn -f apple -f 'geolocation-!cn' ${v2dat_dir}/geosite.dat`); 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) { 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') { 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 { } else {
writefile('/var/mosdns/geosite_disney.txt', ''); writefile('/var/mosdns/geosite_disney.txt', '');
writefile('/var/mosdns/geosite_netflix.txt', ''); writefile('/var/mosdns/geosite_netflix.txt', '');
writefile('/var/mosdns/geosite_hulu.txt', ''); writefile('/var/mosdns/geosite_hulu.txt', '');
} }
} else { } else {
exec_sys(`v2dat unpack geoip -o /var/mosdns -f cn ${v2dat_dir}/geoip.dat`); exec_sys(`geo2txt geoip -f ${v2dat_dir}/geoip.dat -e cn -o /var/mosdns`);
exec_sys(`v2dat unpack geosite -o /var/mosdns -f cn -f 'geolocation-!cn' ${v2dat_dir}/geosite.dat`); 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')); let geoip_tags = to_array(uci_cursor.get('mosdns', 'config', 'geoip_tags'));
if (length(geoip_tags) > 0) { if (length(geoip_tags) > 0) {
let tags_str = "-f '" + join("' -f '", geoip_tags) + "'"; let tags_str = "-e '" + join("' -e '", geoip_tags) + "'";
exec_sys(`v2dat unpack geoip -o /var/mosdns ${tags_str} ${v2dat_dir}/geoip.dat`); 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')); let geosite_tags = to_array(uci_cursor.get('mosdns', 'config', 'geosite_tags'));
if (length(geosite_tags) > 0) { if (length(geosite_tags) > 0) {
let tags_str = "-f '" + join("' -f '", geosite_tags) + "'"; let tags_str = "-e '" + join("' -e '", geosite_tags) + "'";
exec_sys(`v2dat unpack geosite -o /var/mosdns ${tags_str} ${v2dat_dir}/geosite.dat`); 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_NAME:=mosdns
PKG_VERSION:=5.3.4 PKG_VERSION:=5.3.4
PKG_RELEASE:=17 PKG_RELEASE:=18
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/IrineSistiana/mosdns/tar.gz/v$(PKG_VERSION)? 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 PKG_BUILD_FLAGS:=no-mips16
GO_PKG:=github.com/IrineSistiana/mosdns 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 $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/feeds/packages/lang/golang/golang-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=