diff --git a/luci-app-homeproxy/Makefile b/luci-app-homeproxy/Makefile
index 536f3d2aa..ad13e02a1 100644
--- a/luci-app-homeproxy/Makefile
+++ b/luci-app-homeproxy/Makefile
@@ -8,7 +8,6 @@ LUCI_TITLE:=The modern ImmortalWrt proxy platform for ARM64/AMD64
LUCI_PKGARCH:=all
LUCI_DEPENDS:= \
+sing-box \
- +chinadns-ng \
+firewall4 \
+kmod-nft-tproxy
diff --git a/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js b/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js
index 12811e430..206d15453 100644
--- a/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js
+++ b/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js
@@ -156,7 +156,7 @@ return view.extend({
o.rmempty = false;
o = s.taboption('routing', form.Value, 'dns_server', _('DNS server'),
- _('It MUST support TCP query.'));
+ _('Support UDP, TCP, DoH, DoT, DoQ. TCP protocol will be used if not specified.'));
o.value('wan', _('WAN DNS (read from interface)'));
o.value('1.1.1.1', _('CloudFlare Public DNS (1.1.1.1)'));
o.value('208.67.222.222', _('Cisco Public DNS (208.67.222.222)'));
@@ -170,53 +170,61 @@ return view.extend({
o.depends({'routing_mode': 'custom', '!reverse': true});
o.validate = function(section_id, value) {
if (section_id && !['wan'].includes(value)) {
- var ipv6_support = this.map.lookupOption('ipv6_support', section_id)[0].formvalue(section_id);
-
if (!value)
return _('Expecting: %s').format(_('non-empty value'));
- else if (!stubValidator.apply((ipv6_support === '1') ? 'ipaddr' : 'ip4addr', value))
- return _('Expecting: %s').format(_('valid IP address'));
+
+ var ipv6_support = this.map.lookupOption('ipv6_support', section_id)[0].formvalue(section_id);
+ try {
+ var url = new URL(value);
+ if (stubValidator.apply('hostname', url.hostname))
+ return true;
+ else if (stubValidator.apply('ip4addr', url.hostname))
+ return true;
+ else if ((ipv6_support === '1') && stubValidator.apply('ip6addr', url.hostname.match(/^\[(.+)\]$/)?.[1]))
+ return true;
+ else
+ return _('Expecting: %s').format(_('valid DNS server address'));
+ } catch(e) {}
+
+ if (!stubValidator.apply((ipv6_support === '1') ? 'ipaddr' : 'ip4addr', value))
+ return _('Expecting: %s').format(_('valid DNS server address'));
}
return true;
}
- if (features.hp_has_chinadns_ng) {
- o = s.taboption('routing', form.DynamicList, 'china_dns_server', _('China DNS server'));
- o.value('wan', _('WAN DNS (read from interface)'));
- o.value('223.5.5.5', _('Aliyun Public DNS (223.5.5.5)'));
- o.value('210.2.4.8', _('CNNIC Public DNS (210.2.4.8)'));
- o.value('119.29.29.29', _('Tencent Public DNS (119.29.29.29)'));
- o.value('117.50.10.10', _('ThreatBook Public DNS (117.50.10.10)'));
- o.depends('routing_mode', 'bypass_mainland_china');
- o.validate = function(section_id) {
- if (section_id) {
- var value = this.map.lookupOption('china_dns_server', section_id)[0].formvalue(section_id);
- if (value.length < 1)
+ o = s.taboption('routing', form.Value, 'china_dns_server', _('China DNS server'),
+ _('The dns server for resolving China domains. Support UDP, TCP, DoH, DoT, DoQ.'));
+ o.value('wan', _('WAN DNS (read from interface)'));
+ o.value('223.5.5.5', _('Aliyun Public DNS (223.5.5.5)'));
+ o.value('210.2.4.8', _('CNNIC Public DNS (210.2.4.8)'));
+ o.value('119.29.29.29', _('Tencent Public DNS (119.29.29.29)'));
+ o.value('117.50.10.10', _('ThreatBook Public DNS (117.50.10.10)'));
+ o.depends('routing_mode', 'bypass_mainland_china');
+ o.default = '223.5.5.5';
+ o.rmempty = false;
+ o.validate = function(section_id, value) {
+ if (section_id && !['wan'].includes(value)) {
+ if (!value)
+ return _('Expecting: %s').format(_('non-empty value'));
+
+ try {
+ var url = new URL(value);
+ if (stubValidator.apply('hostname', url.hostname))
return true;
+ else if (stubValidator.apply('ip4addr', url.hostname))
+ return true;
+ else if (stubValidator.apply('ip6addr', url.hostname.match(/^\[(.+)\]$/)?.[1]))
+ return true;
+ else
+ return _('Expecting: %s').format(_('valid DNS server address'));
+ } catch(e) {}
- if (!features.hp_has_chinadns_ng_v2 && value.length > 2)
- return _('You can only have two servers set at maximum.');
-
- for (var dns of value) {
- var ipv6_support = this.map.lookupOption('ipv6_support', section_id)[0].formvalue(section_id);
- if (dns === 'wan') {
- continue;
- } else {
- var err = _('Expecting: %s').format(_('valid address#port'));
- dns = dns.split('#');
- if (dns.length > 2)
- return err;
- if (!stubValidator.apply((ipv6_support === '1') ? 'ipaddr' : 'ip4addr', dns[0]))
- return err;
- if (dns[1] && !stubValidator.apply('port', dns[1]))
- return err;
- }
- }
- }
-
- return true;
+ if (!stubValidator.apply('ipaddr', value))
+ return _('Expecting: %s').format(_('valid DNS server address'));
}
+
+ return true;
}
o = s.taboption('routing', form.ListValue, 'routing_mode', _('Routing mode'));
@@ -739,12 +747,11 @@ return view.extend({
so = ss.option(form.Flag, 'cache_file_store_rdrc', _('Store RDRC'),
_('Store rejected DNS response cache.
' +
'The check results of Address filter DNS rule items
will be cached until expiration.'));
- so.ucisection = 'experimental';
so.default = so.disabled;
so = ss.option(form.Value, 'cache_file_rdrc_timeout', _('RDRC timeout'),
- _('Timeout of rejected DNS response cache. 7d
is used by default.'));
- so.ucisection = 'experimental';
+ _('Timeout of rejected DNS response cache in seconds. 604800 (7d)
is used by default.'));
+ so.datatype = 'uinteger';
so.depends('cache_file_store_rdrc', '1');
/* DNS settings end */
@@ -773,8 +780,31 @@ return view.extend({
so.editable = true;
so = ss.option(form.Value, 'address', _('Address'),
- _('The address of the dns server. Support UDP, TCP, DoT, DoH and RCode.'));
+ _('The address of the dns server. Support UDP, TCP, DoH, DoT, DoQ and RCode.'));
so.rmempty = false;
+ so.validate = function(section_id, value) {
+ if (section_id) {
+ if (!value)
+ return _('Expecting: %s').format(_('non-empty value'));
+
+ try {
+ var url = new URL(value);
+ if (stubValidator.apply('hostname', url.hostname))
+ return true;
+ else if (stubValidator.apply('ip4addr', url.hostname))
+ return true;
+ else if (stubValidator.apply('ip6addr', url.hostname.match(/^\[(.+)\]$/)?.[1]))
+ return true;
+ else
+ return _('Expecting: %s').format(_('valid DNS server address'));
+ } catch(e) {}
+
+ if (!stubValidator.apply('ipaddr', value))
+ return _('Expecting: %s').format(_('valid DNS server address'));
+ }
+
+ return true;
+ }
so = ss.option(form.ListValue, 'address_resolver', _('Address resolver'),
_('Tag of a another server to resolve the domain name in the address. Required if address contains domain.'));
@@ -818,6 +848,7 @@ return view.extend({
_('Default domain strategy for resolving the domain names.'));
for (var i in hp.dns_strategy)
so.value(i, hp.dns_strategy[i]);
+ so.editable = true;
so = ss.option(form.ListValue, 'outbound', _('Outbound'),
_('Tag of an outbound for connecting to the dns server.'));
@@ -1070,7 +1101,7 @@ return view.extend({
/* Custom routing settings end */
/* Rule set settings start */
- s.tab('ruleset', _('Rule set'));
+ s.tab('ruleset', _('Rule Set'));
o = s.taboption('ruleset', form.SectionValue, '_ruleset', form.GridSection, 'ruleset');
o.depends('routing_mode', 'custom');
diff --git a/luci-app-homeproxy/po/templates/homeproxy.pot b/luci-app-homeproxy/po/templates/homeproxy.pot
index 1e4dfdfe4..7f1af1f32 100644
--- a/luci-app-homeproxy/po/templates/homeproxy.pot
+++ b/luci-app-homeproxy/po/templates/homeproxy.pot
@@ -13,7 +13,7 @@ msgstr ""
msgid "/etc/homeproxy/certs/..., /etc/acme/..., /etc/ssl/..."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:541
+#: htdocs/luci-static/resources/view/homeproxy/client.js:549
msgid "4 or 6. Not limited if empty."
msgstr ""
@@ -32,11 +32,11 @@ msgstr ""
msgid "Accept any if empty."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1008
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1039
msgid "Accept empty query response"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1160
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1191
msgid "Access Control"
msgstr ""
@@ -48,11 +48,11 @@ msgstr ""
msgid "Access key secret"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:856
+#: htdocs/luci-static/resources/view/homeproxy/client.js:887
msgid "Add a DNS rule"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:761
+#: htdocs/luci-static/resources/view/homeproxy/client.js:768
msgid "Add a DNS server"
msgstr ""
@@ -60,15 +60,15 @@ msgstr ""
msgid "Add a node"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:365
+#: htdocs/luci-static/resources/view/homeproxy/client.js:373
msgid "Add a routing node"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:507
+#: htdocs/luci-static/resources/view/homeproxy/client.js:515
msgid "Add a routing rule"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1082
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1113
msgid "Add a rule set"
msgstr ""
@@ -76,16 +76,16 @@ msgstr ""
msgid "Add a server"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:775
+#: htdocs/luci-static/resources/view/homeproxy/client.js:782
#: htdocs/luci-static/resources/view/homeproxy/node.js:413
msgid "Address"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:779
+#: htdocs/luci-static/resources/view/homeproxy/client.js:809
msgid "Address resolver"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:811
+#: htdocs/luci-static/resources/view/homeproxy/client.js:841
msgid "Address strategy"
msgstr ""
@@ -94,11 +94,11 @@ msgid "Alibaba Cloud DNS"
msgstr ""
#: htdocs/luci-static/resources/view/homeproxy/client.js:165
-#: htdocs/luci-static/resources/view/homeproxy/client.js:187
+#: htdocs/luci-static/resources/view/homeproxy/client.js:199
msgid "Aliyun Public DNS (223.5.5.5)"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:237
+#: htdocs/luci-static/resources/view/homeproxy/client.js:245
msgid "All ports"
msgstr ""
@@ -145,13 +145,13 @@ msgstr ""
msgid "An error occurred during updating subscriptions: %s"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1024
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1055
msgid "Any"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:735
-#: htdocs/luci-static/resources/view/homeproxy/client.js:841
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1066
+#: htdocs/luci-static/resources/view/homeproxy/client.js:743
+#: htdocs/luci-static/resources/view/homeproxy/client.js:872
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1097
msgid ""
"Append a edns0-subnet
OPT extra record with the specified IP "
"prefix to every query by default.
If value is an IP address instead of "
@@ -218,26 +218,26 @@ msgstr ""
msgid "Base64"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:300
+#: htdocs/luci-static/resources/view/homeproxy/client.js:308
msgid "Based on google/gvisor."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1103
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1134
msgid "Binary file"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:394
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1173
+#: htdocs/luci-static/resources/view/homeproxy/client.js:402
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1204
msgid "Bind interface"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1174
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1205
msgid ""
"Bind outbound traffic to specific interface. Leave empty to auto detect."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:549
-#: htdocs/luci-static/resources/view/homeproxy/client.js:906
+#: htdocs/luci-static/resources/view/homeproxy/client.js:557
+#: htdocs/luci-static/resources/view/homeproxy/client.js:937
msgid "BitTorrent"
msgstr ""
@@ -245,34 +245,34 @@ msgstr ""
msgid "Blacklist mode"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:343
-#: htdocs/luci-static/resources/view/homeproxy/client.js:681
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1026
+#: htdocs/luci-static/resources/view/homeproxy/client.js:351
+#: htdocs/luci-static/resources/view/homeproxy/client.js:689
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1057
msgid "Block"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:711
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1044
+#: htdocs/luci-static/resources/view/homeproxy/client.js:719
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1075
msgid "Block DNS queries"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:544
-#: htdocs/luci-static/resources/view/homeproxy/client.js:572
-#: htdocs/luci-static/resources/view/homeproxy/client.js:892
-#: htdocs/luci-static/resources/view/homeproxy/client.js:902
+#: htdocs/luci-static/resources/view/homeproxy/client.js:552
+#: htdocs/luci-static/resources/view/homeproxy/client.js:580
+#: htdocs/luci-static/resources/view/homeproxy/client.js:923
+#: htdocs/luci-static/resources/view/homeproxy/client.js:933
#: htdocs/luci-static/resources/view/homeproxy/server.js:818
msgid "Both"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:321
+#: htdocs/luci-static/resources/view/homeproxy/client.js:329
msgid "Bypass CN traffic"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:224
+#: htdocs/luci-static/resources/view/homeproxy/client.js:232
msgid "Bypass mainland China"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:322
+#: htdocs/luci-static/resources/view/homeproxy/client.js:330
msgid "Bypass mainland China traffic via firewall rules by default."
msgstr ""
@@ -280,7 +280,7 @@ msgstr ""
msgid "CA provider"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:188
+#: htdocs/luci-static/resources/view/homeproxy/client.js:200
msgid "CNNIC Public DNS (210.2.4.8)"
msgstr ""
@@ -305,7 +305,7 @@ msgstr ""
msgid "Check update"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:185
+#: htdocs/luci-static/resources/view/homeproxy/client.js:196
msgid "China DNS server"
msgstr ""
@@ -321,7 +321,7 @@ msgstr ""
msgid "China list version"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:561
+#: htdocs/luci-static/resources/view/homeproxy/client.js:569
msgid "Chromium / Cronet"
msgstr ""
@@ -338,7 +338,7 @@ msgstr ""
msgid "Clean log"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:559
+#: htdocs/luci-static/resources/view/homeproxy/client.js:567
msgid "Client"
msgstr ""
@@ -364,7 +364,7 @@ msgstr ""
msgid "Collecting data..."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:238
+#: htdocs/luci-static/resources/view/homeproxy/client.js:246
msgid "Common ports only (bypass P2P traffic)"
msgstr ""
@@ -377,23 +377,23 @@ msgstr ""
msgid "Connection check"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:226
+#: htdocs/luci-static/resources/view/homeproxy/client.js:234
msgid "Custom routing"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:550
+#: htdocs/luci-static/resources/view/homeproxy/client.js:558
msgid "DNS"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:847
+#: htdocs/luci-static/resources/view/homeproxy/client.js:878
msgid "DNS Rules"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:752
+#: htdocs/luci-static/resources/view/homeproxy/client.js:759
msgid "DNS Servers"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:694
+#: htdocs/luci-static/resources/view/homeproxy/client.js:702
msgid "DNS Settings"
msgstr ""
@@ -401,12 +401,12 @@ msgstr ""
msgid "DNS provider"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:856
+#: htdocs/luci-static/resources/view/homeproxy/client.js:887
msgid "DNS rule"
msgstr ""
#: htdocs/luci-static/resources/view/homeproxy/client.js:158
-#: htdocs/luci-static/resources/view/homeproxy/client.js:761
+#: htdocs/luci-static/resources/view/homeproxy/client.js:768
msgid "DNS server"
msgstr ""
@@ -414,38 +414,38 @@ msgstr ""
msgid "DNS01 challenge"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:551
-#: htdocs/luci-static/resources/view/homeproxy/client.js:907
+#: htdocs/luci-static/resources/view/homeproxy/client.js:559
+#: htdocs/luci-static/resources/view/homeproxy/client.js:938
msgid "DTLS"
msgstr ""
#: htdocs/luci-static/resources/homeproxy.js:17
-#: htdocs/luci-static/resources/view/homeproxy/client.js:535
-#: htdocs/luci-static/resources/view/homeproxy/client.js:884
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1143
+#: htdocs/luci-static/resources/view/homeproxy/client.js:543
+#: htdocs/luci-static/resources/view/homeproxy/client.js:915
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1174
#: htdocs/luci-static/resources/view/homeproxy/node.js:645
msgid "Default"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:709
-#: htdocs/luci-static/resources/view/homeproxy/client.js:786
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1042
+#: htdocs/luci-static/resources/view/homeproxy/client.js:717
+#: htdocs/luci-static/resources/view/homeproxy/client.js:816
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1073
msgid "Default DNS (issued by WAN)"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:704
+#: htdocs/luci-static/resources/view/homeproxy/client.js:712
msgid "Default DNS server"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:699
+#: htdocs/luci-static/resources/view/homeproxy/client.js:707
msgid "Default DNS strategy"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:818
+#: htdocs/luci-static/resources/view/homeproxy/client.js:848
msgid "Default domain strategy for resolving the domain names."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:336
+#: htdocs/luci-static/resources/view/homeproxy/client.js:344
msgid "Default outbound"
msgstr ""
@@ -457,38 +457,38 @@ msgstr ""
msgid "Default server name"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:342
-#: htdocs/luci-static/resources/view/homeproxy/client.js:407
-#: htdocs/luci-static/resources/view/homeproxy/client.js:680
-#: htdocs/luci-static/resources/view/homeproxy/client.js:828
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1025
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1144
+#: htdocs/luci-static/resources/view/homeproxy/client.js:350
+#: htdocs/luci-static/resources/view/homeproxy/client.js:415
+#: htdocs/luci-static/resources/view/homeproxy/client.js:688
+#: htdocs/luci-static/resources/view/homeproxy/client.js:859
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1056
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1175
#: htdocs/luci-static/resources/view/homeproxy/node.js:394
msgid "Direct"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1272
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1303
msgid "Direct Domain List"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1189
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1234
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1220
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1265
msgid "Direct IPv4 IP-s"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1192
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1237
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1223
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1268
msgid "Direct IPv6 IP-s"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1195
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1226
msgid "Direct MAC-s"
msgstr ""
#: htdocs/luci-static/resources/view/homeproxy/client.js:142
#: htdocs/luci-static/resources/view/homeproxy/client.js:150
-#: htdocs/luci-static/resources/view/homeproxy/client.js:341
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1183
+#: htdocs/luci-static/resources/view/homeproxy/client.js:349
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1214
#: htdocs/luci-static/resources/view/homeproxy/node.js:473
#: htdocs/luci-static/resources/view/homeproxy/node.js:492
#: htdocs/luci-static/resources/view/homeproxy/node.js:504
@@ -499,7 +499,7 @@ msgstr ""
msgid "Disable"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:722
+#: htdocs/luci-static/resources/view/homeproxy/client.js:730
msgid "Disable DNS cache"
msgstr ""
@@ -516,15 +516,15 @@ msgstr ""
msgid "Disable TLS ALPN challenge"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1056
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1087
msgid "Disable cache and save cache in this query."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:725
+#: htdocs/luci-static/resources/view/homeproxy/client.js:733
msgid "Disable cache expire"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1055
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1086
msgid "Disable dns cache"
msgstr ""
@@ -539,29 +539,29 @@ msgid ""
"(IPv4) / 1232 (IPv6) bytes in size."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:583
-#: htdocs/luci-static/resources/view/homeproxy/client.js:924
+#: htdocs/luci-static/resources/view/homeproxy/client.js:591
+#: htdocs/luci-static/resources/view/homeproxy/client.js:955
msgid "Domain keyword"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:574
-#: htdocs/luci-static/resources/view/homeproxy/client.js:915
+#: htdocs/luci-static/resources/view/homeproxy/client.js:582
+#: htdocs/luci-static/resources/view/homeproxy/client.js:946
msgid "Domain name"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:587
-#: htdocs/luci-static/resources/view/homeproxy/client.js:928
+#: htdocs/luci-static/resources/view/homeproxy/client.js:595
+#: htdocs/luci-static/resources/view/homeproxy/client.js:959
msgid "Domain regex"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:326
-#: htdocs/luci-static/resources/view/homeproxy/client.js:387
+#: htdocs/luci-static/resources/view/homeproxy/client.js:334
+#: htdocs/luci-static/resources/view/homeproxy/client.js:395
#: htdocs/luci-static/resources/view/homeproxy/server.js:809
msgid "Domain strategy"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:579
-#: htdocs/luci-static/resources/view/homeproxy/client.js:920
+#: htdocs/luci-static/resources/view/homeproxy/client.js:587
+#: htdocs/luci-static/resources/view/homeproxy/client.js:951
msgid "Domain suffix"
msgstr ""
@@ -612,9 +612,9 @@ msgstr ""
msgid "ECH config path"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:734
-#: htdocs/luci-static/resources/view/homeproxy/client.js:840
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1065
+#: htdocs/luci-static/resources/view/homeproxy/client.js:742
+#: htdocs/luci-static/resources/view/homeproxy/client.js:871
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1096
msgid "EDNS Client subnet"
msgstr ""
@@ -640,11 +640,11 @@ msgstr ""
msgid "Email"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:374
-#: htdocs/luci-static/resources/view/homeproxy/client.js:522
-#: htdocs/luci-static/resources/view/homeproxy/client.js:770
-#: htdocs/luci-static/resources/view/homeproxy/client.js:871
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1091
+#: htdocs/luci-static/resources/view/homeproxy/client.js:382
+#: htdocs/luci-static/resources/view/homeproxy/client.js:530
+#: htdocs/luci-static/resources/view/homeproxy/client.js:777
+#: htdocs/luci-static/resources/view/homeproxy/client.js:902
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1122
#: htdocs/luci-static/resources/view/homeproxy/server.js:116
#: htdocs/luci-static/resources/view/homeproxy/server.js:139
msgid "Enable"
@@ -690,7 +690,7 @@ msgstr ""
msgid "Enable UDP fragmentation."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:305
+#: htdocs/luci-static/resources/view/homeproxy/client.js:313
msgid "Enable endpoint-independent NAT"
msgstr ""
@@ -722,17 +722,23 @@ msgstr ""
#: htdocs/luci-static/resources/homeproxy.js:301
#: htdocs/luci-static/resources/homeproxy.js:303
#: htdocs/luci-static/resources/view/homeproxy/client.js:75
-#: htdocs/luci-static/resources/view/homeproxy/client.js:176
-#: htdocs/luci-static/resources/view/homeproxy/client.js:178
-#: htdocs/luci-static/resources/view/homeproxy/client.js:206
-#: htdocs/luci-static/resources/view/homeproxy/client.js:245
-#: htdocs/luci-static/resources/view/homeproxy/client.js:451
-#: htdocs/luci-static/resources/view/homeproxy/client.js:454
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1119
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1124
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1127
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1265
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1294
+#: htdocs/luci-static/resources/view/homeproxy/client.js:174
+#: htdocs/luci-static/resources/view/homeproxy/client.js:186
+#: htdocs/luci-static/resources/view/homeproxy/client.js:190
+#: htdocs/luci-static/resources/view/homeproxy/client.js:209
+#: htdocs/luci-static/resources/view/homeproxy/client.js:220
+#: htdocs/luci-static/resources/view/homeproxy/client.js:224
+#: htdocs/luci-static/resources/view/homeproxy/client.js:253
+#: htdocs/luci-static/resources/view/homeproxy/client.js:459
+#: htdocs/luci-static/resources/view/homeproxy/client.js:462
+#: htdocs/luci-static/resources/view/homeproxy/client.js:788
+#: htdocs/luci-static/resources/view/homeproxy/client.js:799
+#: htdocs/luci-static/resources/view/homeproxy/client.js:803
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1150
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1155
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1158
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1296
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1325
#: htdocs/luci-static/resources/view/homeproxy/node.js:452
#: htdocs/luci-static/resources/view/homeproxy/node.js:1087
#: htdocs/luci-static/resources/view/homeproxy/node.js:1260
@@ -768,7 +774,7 @@ msgstr ""
msgid "Filter nodes"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:562
+#: htdocs/luci-static/resources/view/homeproxy/client.js:570
msgid "Firefox / uquic firefox"
msgstr ""
@@ -777,7 +783,7 @@ msgstr ""
msgid "Flow"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1102
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1133
msgid "Format"
msgstr ""
@@ -789,19 +795,19 @@ msgstr ""
msgid "GFW list version"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:223
+#: htdocs/luci-static/resources/view/homeproxy/client.js:231
msgid "GFWList"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1207
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1238
msgid "Gaming mode IPv4 IP-s"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1209
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1240
msgid "Gaming mode IPv6 IP-s"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1212
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1243
msgid "Gaming mode MAC-s"
msgstr ""
@@ -814,12 +820,12 @@ msgstr ""
msgid "Generate"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:278
+#: htdocs/luci-static/resources/view/homeproxy/client.js:286
#: htdocs/luci-static/resources/view/homeproxy/node.js:835
msgid "Generic segmentation offload"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:227
+#: htdocs/luci-static/resources/view/homeproxy/client.js:235
msgid "Global"
msgstr ""
@@ -827,15 +833,15 @@ msgstr ""
msgid "Global padding"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1214
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1245
msgid "Global proxy IPv4 IP-s"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1217
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1248
msgid "Global proxy IPv6 IP-s"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1220
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1251
msgid "Global proxy MAC-s"
msgstr ""
@@ -855,8 +861,8 @@ msgstr ""
msgid "Grant access to homeproxy configuration"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:552
-#: htdocs/luci-static/resources/view/homeproxy/client.js:908
+#: htdocs/luci-static/resources/view/homeproxy/client.js:560
+#: htdocs/luci-static/resources/view/homeproxy/client.js:939
#: htdocs/luci-static/resources/view/homeproxy/node.js:395
#: htdocs/luci-static/resources/view/homeproxy/node.js:715
#: htdocs/luci-static/resources/view/homeproxy/server.js:145
@@ -911,8 +917,8 @@ msgstr ""
msgid "Host"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:512
-#: htdocs/luci-static/resources/view/homeproxy/client.js:861
+#: htdocs/luci-static/resources/view/homeproxy/client.js:520
+#: htdocs/luci-static/resources/view/homeproxy/client.js:892
msgid "Host fields"
msgstr ""
@@ -940,18 +946,18 @@ msgstr ""
msgid "Hysteria2"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:602
-#: htdocs/luci-static/resources/view/homeproxy/client.js:952
+#: htdocs/luci-static/resources/view/homeproxy/client.js:610
+#: htdocs/luci-static/resources/view/homeproxy/client.js:983
msgid "IP CIDR"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:540
-#: htdocs/luci-static/resources/view/homeproxy/client.js:889
+#: htdocs/luci-static/resources/view/homeproxy/client.js:548
+#: htdocs/luci-static/resources/view/homeproxy/client.js:920
msgid "IP version"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:542
-#: htdocs/luci-static/resources/view/homeproxy/client.js:890
+#: htdocs/luci-static/resources/view/homeproxy/client.js:550
+#: htdocs/luci-static/resources/view/homeproxy/client.js:921
msgid "IPv4"
msgstr ""
@@ -959,8 +965,8 @@ msgstr ""
msgid "IPv4 only"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:543
-#: htdocs/luci-static/resources/view/homeproxy/client.js:891
+#: htdocs/luci-static/resources/view/homeproxy/client.js:551
+#: htdocs/luci-static/resources/view/homeproxy/client.js:922
msgid "IPv6"
msgstr ""
@@ -968,11 +974,11 @@ msgstr ""
msgid "IPv6 only"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:268
+#: htdocs/luci-static/resources/view/homeproxy/client.js:276
msgid "IPv6 support"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:484
+#: htdocs/luci-static/resources/view/homeproxy/client.js:492
#: htdocs/luci-static/resources/view/homeproxy/node.js:786
#: htdocs/luci-static/resources/view/homeproxy/server.js:450
msgid "Idle timeout"
@@ -984,13 +990,13 @@ msgid ""
"connections."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:327
+#: htdocs/luci-static/resources/view/homeproxy/client.js:335
#: htdocs/luci-static/resources/view/homeproxy/server.js:810
msgid ""
"If set, the requested domain name will be resolved to IP before routing."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:388
+#: htdocs/luci-static/resources/view/homeproxy/client.js:396
msgid ""
"If set, the server domain name will be resolved to IP before connecting.
"
msgstr ""
@@ -1022,24 +1028,24 @@ msgstr ""
msgid "Import share links"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:313
+#: htdocs/luci-static/resources/view/homeproxy/client.js:321
#: htdocs/luci-static/resources/view/homeproxy/server.js:799
msgid "In seconds. 300
is used by default."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:729
+#: htdocs/luci-static/resources/view/homeproxy/client.js:737
msgid "Independent cache per server"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1166
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1197
msgid "Interface Control"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:490
+#: htdocs/luci-static/resources/view/homeproxy/client.js:498
msgid "Interrupt existing connections"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:491
+#: htdocs/luci-static/resources/view/homeproxy/client.js:499
msgid "Interrupt existing connections when the selected outbound has changed."
msgstr ""
@@ -1050,33 +1056,29 @@ msgid ""
"seconds)."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:669
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1013
+#: htdocs/luci-static/resources/view/homeproxy/client.js:677
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1044
msgid "Invert"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:670
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1014
+#: htdocs/luci-static/resources/view/homeproxy/client.js:678
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1045
msgid "Invert match result."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:159
-msgid "It MUST support TCP query."
-msgstr ""
-
#: htdocs/luci-static/resources/view/homeproxy/server.js:760
msgid "Key path"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1180
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1211
msgid "LAN IP Policy"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:369
-#: htdocs/luci-static/resources/view/homeproxy/client.js:517
-#: htdocs/luci-static/resources/view/homeproxy/client.js:765
-#: htdocs/luci-static/resources/view/homeproxy/client.js:866
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1086
+#: htdocs/luci-static/resources/view/homeproxy/client.js:377
+#: htdocs/luci-static/resources/view/homeproxy/client.js:525
+#: htdocs/luci-static/resources/view/homeproxy/client.js:772
+#: htdocs/luci-static/resources/view/homeproxy/client.js:897
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1117
#: htdocs/luci-static/resources/view/homeproxy/node.js:388
#: htdocs/luci-static/resources/view/homeproxy/server.js:133
msgid "Label"
@@ -1089,7 +1091,7 @@ msgid ""
"compatibility purposes only, use of alterId > 1 is not recommended."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:302
+#: htdocs/luci-static/resources/view/homeproxy/client.js:310
msgid "Less compatibility and sometimes better performance."
msgstr ""
@@ -1102,7 +1104,7 @@ msgid ""
"List of IP (v4 or v6) addresses prefixes to be assigned to the interface."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:438
+#: htdocs/luci-static/resources/view/homeproxy/client.js:446
msgid "List of nodes to test."
msgstr ""
@@ -1115,7 +1117,7 @@ msgstr ""
msgid "Listen address"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1168
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1199
msgid "Listen interfaces"
msgstr ""
@@ -1127,7 +1129,7 @@ msgstr ""
msgid "Loading"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1097
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1128
msgid "Local"
msgstr ""
@@ -1155,19 +1157,19 @@ msgstr ""
msgid "Main node"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:665
+#: htdocs/luci-static/resources/view/homeproxy/client.js:673
msgid "Make IP CIDR in rule set used to match the source IP."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1004
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1035
msgid "Make IP CIDR in rule sets match the source IP."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1009
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1040
msgid "Make IP CIDR in rule-sets accept empty query response."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:730
+#: htdocs/luci-static/resources/view/homeproxy/client.js:738
msgid ""
"Make each DNS server's cache independent for special purposes. If enabled, "
"will slightly degrade performance."
@@ -1177,106 +1179,106 @@ msgstr ""
msgid "Masquerade"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:953
+#: htdocs/luci-static/resources/view/homeproxy/client.js:984
msgid "Match IP CIDR with query response."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:603
+#: htdocs/luci-static/resources/view/homeproxy/client.js:611
msgid "Match IP CIDR."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:580
-#: htdocs/luci-static/resources/view/homeproxy/client.js:921
+#: htdocs/luci-static/resources/view/homeproxy/client.js:588
+#: htdocs/luci-static/resources/view/homeproxy/client.js:952
msgid "Match domain suffix."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:584
-#: htdocs/luci-static/resources/view/homeproxy/client.js:925
+#: htdocs/luci-static/resources/view/homeproxy/client.js:592
+#: htdocs/luci-static/resources/view/homeproxy/client.js:956
msgid "Match domain using keyword."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:588
-#: htdocs/luci-static/resources/view/homeproxy/client.js:929
+#: htdocs/luci-static/resources/view/homeproxy/client.js:596
+#: htdocs/luci-static/resources/view/homeproxy/client.js:960
msgid "Match domain using regular expression."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:575
-#: htdocs/luci-static/resources/view/homeproxy/client.js:916
+#: htdocs/luci-static/resources/view/homeproxy/client.js:583
+#: htdocs/luci-static/resources/view/homeproxy/client.js:947
msgid "Match full domain."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:629
-#: htdocs/luci-static/resources/view/homeproxy/client.js:938
+#: htdocs/luci-static/resources/view/homeproxy/client.js:637
+#: htdocs/luci-static/resources/view/homeproxy/client.js:969
msgid "Match port range. Format as START:/:END/START:END."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:624
-#: htdocs/luci-static/resources/view/homeproxy/client.js:933
+#: htdocs/luci-static/resources/view/homeproxy/client.js:632
+#: htdocs/luci-static/resources/view/homeproxy/client.js:964
msgid "Match port."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:958
+#: htdocs/luci-static/resources/view/homeproxy/client.js:989
msgid "Match private IP with query response."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:608
+#: htdocs/luci-static/resources/view/homeproxy/client.js:616
msgid "Match private IP."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:597
-#: htdocs/luci-static/resources/view/homeproxy/client.js:948
+#: htdocs/luci-static/resources/view/homeproxy/client.js:605
+#: htdocs/luci-static/resources/view/homeproxy/client.js:979
msgid "Match private source IP."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:634
-#: htdocs/luci-static/resources/view/homeproxy/client.js:973
+#: htdocs/luci-static/resources/view/homeproxy/client.js:642
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1004
msgid "Match process name."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:642
-#: htdocs/luci-static/resources/view/homeproxy/client.js:981
+#: htdocs/luci-static/resources/view/homeproxy/client.js:650
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1012
msgid "Match process path using regular expression."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:638
-#: htdocs/luci-static/resources/view/homeproxy/client.js:977
+#: htdocs/luci-static/resources/view/homeproxy/client.js:646
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1008
msgid "Match process path."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:896
+#: htdocs/luci-static/resources/view/homeproxy/client.js:927
msgid "Match query type."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:650
-#: htdocs/luci-static/resources/view/homeproxy/client.js:989
+#: htdocs/luci-static/resources/view/homeproxy/client.js:658
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1020
msgid "Match rule set."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:592
-#: htdocs/luci-static/resources/view/homeproxy/client.js:943
+#: htdocs/luci-static/resources/view/homeproxy/client.js:600
+#: htdocs/luci-static/resources/view/homeproxy/client.js:974
msgid "Match source IP CIDR."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:664
+#: htdocs/luci-static/resources/view/homeproxy/client.js:672
msgid "Match source IP via rule set"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:619
-#: htdocs/luci-static/resources/view/homeproxy/client.js:968
+#: htdocs/luci-static/resources/view/homeproxy/client.js:627
+#: htdocs/luci-static/resources/view/homeproxy/client.js:999
msgid "Match source port range. Format as START:/:END/START:END."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:614
-#: htdocs/luci-static/resources/view/homeproxy/client.js:963
+#: htdocs/luci-static/resources/view/homeproxy/client.js:622
+#: htdocs/luci-static/resources/view/homeproxy/client.js:994
msgid "Match source port."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1019
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1050
msgid "Match the server name of outbound."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:646
-#: htdocs/luci-static/resources/view/homeproxy/client.js:985
+#: htdocs/luci-static/resources/view/homeproxy/client.js:654
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1016
msgid "Match user name."
msgstr ""
@@ -1343,17 +1345,17 @@ msgstr ""
msgid "Minimum streams"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:287
+#: htdocs/luci-static/resources/view/homeproxy/client.js:295
#: htdocs/luci-static/resources/view/homeproxy/server.js:151
msgid "Mixed"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:298
+#: htdocs/luci-static/resources/view/homeproxy/client.js:306
msgid "Mixed system
TCP stack and gVisor
UDP stack."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:527
-#: htdocs/luci-static/resources/view/homeproxy/client.js:876
+#: htdocs/luci-static/resources/view/homeproxy/client.js:535
+#: htdocs/luci-static/resources/view/homeproxy/client.js:907
msgid "Mode"
msgstr ""
@@ -1388,8 +1390,8 @@ msgstr ""
msgid "NaïveProxy"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:569
-#: htdocs/luci-static/resources/view/homeproxy/client.js:899
+#: htdocs/luci-static/resources/view/homeproxy/client.js:577
+#: htdocs/luci-static/resources/view/homeproxy/client.js:930
#: htdocs/luci-static/resources/view/homeproxy/server.js:815
msgid "Network"
msgstr ""
@@ -1422,7 +1424,7 @@ msgstr ""
msgid "No valid share link found."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:379
+#: htdocs/luci-static/resources/view/homeproxy/client.js:387
#: htdocs/luci-static/resources/view/homeproxy/node.js:363
msgid "Node"
msgstr ""
@@ -1435,7 +1437,7 @@ msgstr ""
msgid "Nodes"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:785
+#: htdocs/luci-static/resources/view/homeproxy/client.js:815
#: htdocs/luci-static/resources/view/homeproxy/node.js:674
#: htdocs/luci-static/resources/view/homeproxy/node.js:713
#: htdocs/luci-static/resources/view/homeproxy/server.js:380
@@ -1453,28 +1455,28 @@ msgstr ""
msgid "Obfuscate type"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1169
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1200
msgid "Only process traffic from specific interfaces. Leave empty for all."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:225
+#: htdocs/luci-static/resources/view/homeproxy/client.js:233
msgid "Only proxy mainland China"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:511
-#: htdocs/luci-static/resources/view/homeproxy/client.js:860
+#: htdocs/luci-static/resources/view/homeproxy/client.js:519
+#: htdocs/luci-static/resources/view/homeproxy/client.js:891
msgid "Other fields"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:401
-#: htdocs/luci-static/resources/view/homeproxy/client.js:674
-#: htdocs/luci-static/resources/view/homeproxy/client.js:822
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1018
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1137
+#: htdocs/luci-static/resources/view/homeproxy/client.js:409
+#: htdocs/luci-static/resources/view/homeproxy/client.js:682
+#: htdocs/luci-static/resources/view/homeproxy/client.js:853
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1049
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1168
msgid "Outbound"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:380
+#: htdocs/luci-static/resources/view/homeproxy/client.js:388
msgid "Outbound node"
msgstr ""
@@ -1482,7 +1484,7 @@ msgstr ""
msgid "Override address"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:331
+#: htdocs/luci-static/resources/view/homeproxy/client.js:339
#: htdocs/luci-static/resources/view/homeproxy/server.js:805
msgid "Override destination"
msgstr ""
@@ -1491,7 +1493,7 @@ msgstr ""
msgid "Override port"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:332
+#: htdocs/luci-static/resources/view/homeproxy/client.js:340
#: htdocs/luci-static/resources/view/homeproxy/server.js:806
msgid "Override the connection destination address with the sniffed domain."
msgstr ""
@@ -1517,7 +1519,7 @@ msgstr ""
msgid "Password"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1108
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1139
#: htdocs/luci-static/resources/view/homeproxy/node.js:775
#: htdocs/luci-static/resources/view/homeproxy/node.js:808
#: htdocs/luci-static/resources/view/homeproxy/server.js:441
@@ -1529,7 +1531,7 @@ msgstr ""
msgid "Peer pubkic key"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:306
+#: htdocs/luci-static/resources/view/homeproxy/client.js:314
msgid ""
"Performance may degrade slightly, so it is not recommended to enable on when "
"it is not needed."
@@ -1548,23 +1550,23 @@ msgstr ""
msgid "Plugin opts"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:623
-#: htdocs/luci-static/resources/view/homeproxy/client.js:932
+#: htdocs/luci-static/resources/view/homeproxy/client.js:631
+#: htdocs/luci-static/resources/view/homeproxy/client.js:963
#: htdocs/luci-static/resources/view/homeproxy/node.js:418
msgid "Port"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:247
+#: htdocs/luci-static/resources/view/homeproxy/client.js:255
msgid "Port %s alrealy exists!"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:513
-#: htdocs/luci-static/resources/view/homeproxy/client.js:862
+#: htdocs/luci-static/resources/view/homeproxy/client.js:521
+#: htdocs/luci-static/resources/view/homeproxy/client.js:893
msgid "Port fields"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:628
-#: htdocs/luci-static/resources/view/homeproxy/client.js:937
+#: htdocs/luci-static/resources/view/homeproxy/client.js:636
+#: htdocs/luci-static/resources/view/homeproxy/client.js:968
msgid "Port range"
msgstr ""
@@ -1580,8 +1582,8 @@ msgstr ""
msgid "Prefer IPv6"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:607
-#: htdocs/luci-static/resources/view/homeproxy/client.js:957
+#: htdocs/luci-static/resources/view/homeproxy/client.js:615
+#: htdocs/luci-static/resources/view/homeproxy/client.js:988
msgid "Private IP"
msgstr ""
@@ -1594,28 +1596,28 @@ msgstr ""
msgid "Private key passphrase"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:596
-#: htdocs/luci-static/resources/view/homeproxy/client.js:947
+#: htdocs/luci-static/resources/view/homeproxy/client.js:604
+#: htdocs/luci-static/resources/view/homeproxy/client.js:978
msgid "Private source IP"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:633
-#: htdocs/luci-static/resources/view/homeproxy/client.js:972
+#: htdocs/luci-static/resources/view/homeproxy/client.js:641
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1003
msgid "Process name"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:637
-#: htdocs/luci-static/resources/view/homeproxy/client.js:976
+#: htdocs/luci-static/resources/view/homeproxy/client.js:645
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1007
msgid "Process path"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:641
-#: htdocs/luci-static/resources/view/homeproxy/client.js:980
+#: htdocs/luci-static/resources/view/homeproxy/client.js:649
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1011
msgid "Process path (regex)"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:547
-#: htdocs/luci-static/resources/view/homeproxy/client.js:904
+#: htdocs/luci-static/resources/view/homeproxy/client.js:555
+#: htdocs/luci-static/resources/view/homeproxy/client.js:935
#: htdocs/luci-static/resources/view/homeproxy/node.js:480
#: htdocs/luci-static/resources/view/homeproxy/node.js:891
#: htdocs/luci-static/resources/view/homeproxy/server.js:222
@@ -1632,37 +1634,37 @@ msgid ""
"default in v2ray and cannot be disabled)."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1243
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1274
msgid "Proxy Domain List"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1198
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1227
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1229
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1258
msgid "Proxy IPv4 IP-s"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1201
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1230
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1232
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1261
msgid "Proxy IPv6 IP-s"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1204
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1235
msgid "Proxy MAC-s"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1185
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1216
msgid "Proxy all except listed"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1182
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1213
msgid "Proxy filter mode"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1184
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1215
msgid "Proxy listed only"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:255
+#: htdocs/luci-static/resources/view/homeproxy/client.js:263
msgid "Proxy mode"
msgstr ""
@@ -1670,8 +1672,8 @@ msgstr ""
msgid "Proxy protocol"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:553
-#: htdocs/luci-static/resources/view/homeproxy/client.js:909
+#: htdocs/luci-static/resources/view/homeproxy/client.js:561
+#: htdocs/luci-static/resources/view/homeproxy/client.js:940
#: htdocs/luci-static/resources/view/homeproxy/node.js:647
#: htdocs/luci-static/resources/view/homeproxy/node.js:717
#: htdocs/luci-static/resources/view/homeproxy/server.js:399
@@ -1697,16 +1699,16 @@ msgstr ""
msgid "QUIC stream receive window"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:895
+#: htdocs/luci-static/resources/view/homeproxy/client.js:926
msgid "Query type"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:554
-#: htdocs/luci-static/resources/view/homeproxy/client.js:910
+#: htdocs/luci-static/resources/view/homeproxy/client.js:562
+#: htdocs/luci-static/resources/view/homeproxy/client.js:941
msgid "RDP"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:745
+#: htdocs/luci-static/resources/view/homeproxy/client.js:752
msgid "RDRC timeout"
msgstr ""
@@ -1737,23 +1739,23 @@ msgstr ""
msgid "Random version will be used if empty."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:429
+#: htdocs/luci-static/resources/view/homeproxy/client.js:437
msgid "Recursive outbound detected!"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:804
+#: htdocs/luci-static/resources/view/homeproxy/client.js:834
msgid "Recursive resolver detected!"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:256
+#: htdocs/luci-static/resources/view/homeproxy/client.js:264
msgid "Redirect TCP"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:258
+#: htdocs/luci-static/resources/view/homeproxy/client.js:266
msgid "Redirect TCP + TProxy UDP"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:260
+#: htdocs/luci-static/resources/view/homeproxy/client.js:268
msgid "Redirect TCP + Tun UDP"
msgstr ""
@@ -1765,7 +1767,7 @@ msgstr ""
msgid "Region ID"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1098
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1129
msgid "Remote"
msgstr ""
@@ -1781,7 +1783,7 @@ msgstr ""
msgid "Reserved field bytes"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:817
+#: htdocs/luci-static/resources/view/homeproxy/client.js:847
msgid "Resolve strategy"
msgstr ""
@@ -1789,19 +1791,19 @@ msgstr ""
msgid "Resources management"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1060
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1091
msgid "Rewrite TTL"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1061
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1092
msgid "Rewrite TTL in DNS responses."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:356
+#: htdocs/luci-static/resources/view/homeproxy/client.js:364
msgid "Routing Nodes"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:498
+#: htdocs/luci-static/resources/view/homeproxy/client.js:506
msgid "Routing Rules"
msgstr ""
@@ -1809,55 +1811,58 @@ msgstr ""
msgid "Routing Settings"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:222
+#: htdocs/luci-static/resources/view/homeproxy/client.js:230
msgid "Routing mode"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:365
+#: htdocs/luci-static/resources/view/homeproxy/client.js:373
msgid "Routing node"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:235
+#: htdocs/luci-static/resources/view/homeproxy/client.js:243
msgid "Routing ports"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:507
+#: htdocs/luci-static/resources/view/homeproxy/client.js:515
msgid "Routing rule"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:649
-#: htdocs/luci-static/resources/view/homeproxy/client.js:988
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1073
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1082
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1104
+msgid "Rule Set"
+msgstr ""
+
+#: htdocs/luci-static/resources/view/homeproxy/client.js:657
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1019
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1113
msgid "Rule set"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1003
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1034
msgid "Rule set IP CIDR as source IP"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1115
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1146
msgid "Rule set URL"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:514
-#: htdocs/luci-static/resources/view/homeproxy/client.js:863
+#: htdocs/luci-static/resources/view/homeproxy/client.js:522
+#: htdocs/luci-static/resources/view/homeproxy/client.js:894
msgid "SRC-IP fields"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:515
-#: htdocs/luci-static/resources/view/homeproxy/client.js:864
+#: htdocs/luci-static/resources/view/homeproxy/client.js:523
+#: htdocs/luci-static/resources/view/homeproxy/client.js:895
msgid "SRC-Port fields"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:555
-#: htdocs/luci-static/resources/view/homeproxy/client.js:911
+#: htdocs/luci-static/resources/view/homeproxy/client.js:563
+#: htdocs/luci-static/resources/view/homeproxy/client.js:942
#: htdocs/luci-static/resources/view/homeproxy/node.js:403
msgid "SSH"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:556
-#: htdocs/luci-static/resources/view/homeproxy/client.js:912
+#: htdocs/luci-static/resources/view/homeproxy/client.js:564
+#: htdocs/luci-static/resources/view/homeproxy/client.js:943
msgid "STUN"
msgstr ""
@@ -1865,7 +1870,7 @@ msgstr ""
msgid "SUoT version"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:564
+#: htdocs/luci-static/resources/view/homeproxy/client.js:572
msgid "Safari / Apple Network API"
msgstr ""
@@ -1886,7 +1891,7 @@ msgstr ""
msgid "Save subscriptions settings"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1036
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1067
#: htdocs/luci-static/resources/view/homeproxy/server.js:129
msgid "Server"
msgstr ""
@@ -1922,12 +1927,12 @@ msgstr ""
msgid "Shadowsocks"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:560
+#: htdocs/luci-static/resources/view/homeproxy/client.js:568
msgid "Sniffed client type (QUIC client type or SSH client name)."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:548
-#: htdocs/luci-static/resources/view/homeproxy/client.js:905
+#: htdocs/luci-static/resources/view/homeproxy/client.js:556
+#: htdocs/luci-static/resources/view/homeproxy/client.js:936
msgid ""
"Sniffed protocol, see Sniff for details."
@@ -1954,22 +1959,22 @@ msgstr ""
msgid "Socks5"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:591
-#: htdocs/luci-static/resources/view/homeproxy/client.js:942
+#: htdocs/luci-static/resources/view/homeproxy/client.js:599
+#: htdocs/luci-static/resources/view/homeproxy/client.js:973
msgid "Source IP CIDR"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1104
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1135
msgid "Source file"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:613
-#: htdocs/luci-static/resources/view/homeproxy/client.js:962
+#: htdocs/luci-static/resources/view/homeproxy/client.js:621
+#: htdocs/luci-static/resources/view/homeproxy/client.js:993
msgid "Source port"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:618
-#: htdocs/luci-static/resources/view/homeproxy/client.js:967
+#: htdocs/luci-static/resources/view/homeproxy/client.js:626
+#: htdocs/luci-static/resources/view/homeproxy/client.js:998
msgid "Source port range"
msgstr ""
@@ -1999,17 +2004,17 @@ msgid ""
"will be closed."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:236
+#: htdocs/luci-static/resources/view/homeproxy/client.js:244
msgid ""
"Specify target ports to be proxied. Multiple ports must be separated by "
"commas."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:739
+#: htdocs/luci-static/resources/view/homeproxy/client.js:747
msgid "Store RDRC"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:740
+#: htdocs/luci-static/resources/view/homeproxy/client.js:748
msgid ""
"Store rejected DNS response cache.
The check results of Address "
"filter DNS rule items
will be cached until expiration."
@@ -2047,18 +2052,23 @@ msgid ""
"online configuration delivery standard."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:290
+#: htdocs/luci-static/resources/view/homeproxy/client.js:159
+msgid ""
+"Support UDP, TCP, DoH, DoT, DoQ. TCP protocol will be used if not specified."
+msgstr ""
+
+#: htdocs/luci-static/resources/view/homeproxy/client.js:298
msgid "System"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:710
-#: htdocs/luci-static/resources/view/homeproxy/client.js:787
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1043
+#: htdocs/luci-static/resources/view/homeproxy/client.js:718
+#: htdocs/luci-static/resources/view/homeproxy/client.js:817
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1074
msgid "System DNS"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:570
-#: htdocs/luci-static/resources/view/homeproxy/client.js:900
+#: htdocs/luci-static/resources/view/homeproxy/client.js:578
+#: htdocs/luci-static/resources/view/homeproxy/client.js:931
#: htdocs/luci-static/resources/view/homeproxy/server.js:816
msgid "TCP"
msgstr ""
@@ -2068,16 +2078,16 @@ msgstr ""
msgid "TCP fast open"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:284
+#: htdocs/luci-static/resources/view/homeproxy/client.js:292
msgid "TCP/IP stack"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:285
+#: htdocs/luci-static/resources/view/homeproxy/client.js:293
msgid "TCP/IP stack."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:557
-#: htdocs/luci-static/resources/view/homeproxy/client.js:913
+#: htdocs/luci-static/resources/view/homeproxy/client.js:565
+#: htdocs/luci-static/resources/view/homeproxy/client.js:944
#: htdocs/luci-static/resources/view/homeproxy/node.js:944
#: htdocs/luci-static/resources/view/homeproxy/server.js:529
msgid "TLS"
@@ -2098,25 +2108,25 @@ msgstr ""
msgid "TLS is not enforced. If TLS is not configured, plain HTTP 1.1 is used."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:780
+#: htdocs/luci-static/resources/view/homeproxy/client.js:810
msgid ""
"Tag of a another server to resolve the domain name in the address. Required "
"if address contains domain."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:823
+#: htdocs/luci-static/resources/view/homeproxy/client.js:854
msgid "Tag of an outbound for connecting to the dns server."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1138
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1169
msgid "Tag of the outbound to download rule set."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1037
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1068
msgid "Tag of the target dns server."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:675
+#: htdocs/luci-static/resources/view/homeproxy/client.js:683
msgid "Tag of the target outbound."
msgstr ""
@@ -2126,23 +2136,23 @@ msgid ""
msgstr ""
#: htdocs/luci-static/resources/view/homeproxy/client.js:166
-#: htdocs/luci-static/resources/view/homeproxy/client.js:189
+#: htdocs/luci-static/resources/view/homeproxy/client.js:201
msgid "Tencent Public DNS (119.29.29.29)"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:444
+#: htdocs/luci-static/resources/view/homeproxy/client.js:452
msgid "Test URL"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:463
+#: htdocs/luci-static/resources/view/homeproxy/client.js:471
msgid "Test interval"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:470
+#: htdocs/luci-static/resources/view/homeproxy/client.js:478
msgid "Test interval must be less or equal than idle timeout."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:478
+#: htdocs/luci-static/resources/view/homeproxy/client.js:486
msgid "Test tolerance"
msgstr ""
@@ -2150,7 +2160,7 @@ msgstr ""
msgid "The ACME CA provider to use."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:700
+#: htdocs/luci-static/resources/view/homeproxy/client.js:708
msgid "The DNS strategy for resolving the domain name in the address."
msgstr ""
@@ -2164,14 +2174,15 @@ msgstr ""
msgid "The QUIC stream-level flow control window for receiving data."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:445
+#: htdocs/luci-static/resources/view/homeproxy/client.js:453
msgid ""
"The URL to test. https://www.gstatic.com/generate_204
will be "
"used if empty."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:776
-msgid "The address of the dns server. Support UDP, TCP, DoT, DoH and RCode."
+#: htdocs/luci-static/resources/view/homeproxy/client.js:783
+msgid ""
+"The address of the dns server. Support UDP, TCP, DoH, DoT, DoQ and RCode."
msgstr ""
#: htdocs/luci-static/resources/view/homeproxy/server.js:677
@@ -2186,7 +2197,7 @@ msgid ""
"forward 443 to this port for challenge to succeed."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:528
+#: htdocs/luci-static/resources/view/homeproxy/client.js:536
msgid ""
"The default rule uses the following matching logic:
(domain || "
"domain_suffix || domain_keyword || domain_regex || ip_cidr || "
@@ -2197,7 +2208,7 @@ msgid ""
"than as a single rule sub-item."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:877
+#: htdocs/luci-static/resources/view/homeproxy/client.js:908
msgid ""
"The default rule uses the following matching logic:
(domain || "
"domain_suffix || domain_keyword || domain_regex)
&&
(port "
@@ -2207,7 +2218,12 @@ msgid ""
"considered merged rather than as a single rule sub-item."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:812
+#: htdocs/luci-static/resources/view/homeproxy/client.js:197
+msgid ""
+"The dns server for resolving China domains. Support UDP, TCP, DoH, DoT, DoQ."
+msgstr ""
+
+#: htdocs/luci-static/resources/view/homeproxy/client.js:842
msgid "The domain strategy for resolving the domain name in the address."
msgstr ""
@@ -2224,7 +2240,7 @@ msgid ""
"account."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:485
+#: htdocs/luci-static/resources/view/homeproxy/client.js:493
msgid "The idle timeout in seconds. 1800
will be used if empty."
msgstr ""
@@ -2253,7 +2269,7 @@ msgstr ""
msgid "The modern ImmortalWrt proxy platform for ARM64/AMD64."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:395
+#: htdocs/luci-static/resources/view/homeproxy/client.js:403
msgid "The network interface to bind to."
msgstr ""
@@ -2279,17 +2295,17 @@ msgstr ""
msgid "The server public key, in PEM format."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:402
+#: htdocs/luci-static/resources/view/homeproxy/client.js:410
msgid ""
"The tag of the upstream outbound.
Other dial fields will be ignored when "
"enabled."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:464
+#: htdocs/luci-static/resources/view/homeproxy/client.js:472
msgid "The test interval in seconds. 180
will be used if empty."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:479
+#: htdocs/luci-static/resources/view/homeproxy/client.js:487
msgid ""
"The test tolerance in milliseconds. 50
will be used if empty."
msgstr ""
@@ -2316,13 +2332,14 @@ msgid ""
msgstr ""
#: htdocs/luci-static/resources/view/homeproxy/client.js:167
-#: htdocs/luci-static/resources/view/homeproxy/client.js:190
+#: htdocs/luci-static/resources/view/homeproxy/client.js:202
msgid "ThreatBook Public DNS (117.50.10.10)"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:746
+#: htdocs/luci-static/resources/view/homeproxy/client.js:753
msgid ""
-"Timeout of rejected DNS response cache. 7d
is used by default."
+"Timeout of rejected DNS response cache in seconds. 604800 (7d)
"
+"is used by default."
msgstr ""
#: htdocs/luci-static/resources/view/homeproxy/server.js:485
@@ -2331,7 +2348,7 @@ msgid ""
"code>."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:263
+#: htdocs/luci-static/resources/view/homeproxy/client.js:271
msgid ""
"To enable Tun support, you need to install ip-full
and "
"kmod-tun
"
@@ -2352,18 +2369,18 @@ msgstr ""
msgid "Tuic"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:261
+#: htdocs/luci-static/resources/view/homeproxy/client.js:269
msgid "Tun TCP/UDP"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1096
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1127
#: htdocs/luci-static/resources/view/homeproxy/node.js:393
#: htdocs/luci-static/resources/view/homeproxy/server.js:144
msgid "Type"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:571
-#: htdocs/luci-static/resources/view/homeproxy/client.js:901
+#: htdocs/luci-static/resources/view/homeproxy/client.js:579
+#: htdocs/luci-static/resources/view/homeproxy/client.js:932
#: htdocs/luci-static/resources/view/homeproxy/server.js:817
msgid "UDP"
msgstr ""
@@ -2373,7 +2390,7 @@ msgstr ""
msgid "UDP Fragment"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:312
+#: htdocs/luci-static/resources/view/homeproxy/client.js:320
#: htdocs/luci-static/resources/view/homeproxy/server.js:798
msgid "UDP NAT expiration time"
msgstr ""
@@ -2394,11 +2411,11 @@ msgstr ""
msgid "UDP relay mode"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:381
+#: htdocs/luci-static/resources/view/homeproxy/client.js:389
msgid "URLTest"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:437
+#: htdocs/luci-static/resources/view/homeproxy/client.js:445
msgid "URLTest nodes"
msgstr ""
@@ -2427,11 +2444,11 @@ msgstr ""
msgid "Update failed."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1154
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1185
msgid "Update interval"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1155
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1186
msgid "Update interval of rule set.
1d
will be used if empty."
msgstr ""
@@ -2492,8 +2509,8 @@ msgid ""
"given."
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:645
-#: htdocs/luci-static/resources/view/homeproxy/client.js:984
+#: htdocs/luci-static/resources/view/homeproxy/client.js:653
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1015
msgid "User"
msgstr ""
@@ -2517,11 +2534,11 @@ msgid "VMess"
msgstr ""
#: htdocs/luci-static/resources/view/homeproxy/client.js:160
-#: htdocs/luci-static/resources/view/homeproxy/client.js:186
+#: htdocs/luci-static/resources/view/homeproxy/client.js:198
msgid "WAN DNS (read from interface)"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1225
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1256
msgid "WAN IP Policy"
msgstr ""
@@ -2559,10 +2576,6 @@ msgstr ""
msgid "Xudp (Xray-core)"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:199
-msgid "You can only have two servers set at maximum."
-msgstr ""
-
#: htdocs/luci-static/resources/homeproxy.js:253
msgid "Your %s was successfully uploaded. Size: %sB."
msgstr ""
@@ -2601,14 +2614,16 @@ msgstr ""
msgid "gRPC service name"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:288
+#: htdocs/luci-static/resources/view/homeproxy/client.js:296
msgid "gVisor"
msgstr ""
#: htdocs/luci-static/resources/homeproxy.js:281
#: htdocs/luci-static/resources/homeproxy.js:301
-#: htdocs/luci-static/resources/view/homeproxy/client.js:176
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1119
+#: htdocs/luci-static/resources/view/homeproxy/client.js:174
+#: htdocs/luci-static/resources/view/homeproxy/client.js:209
+#: htdocs/luci-static/resources/view/homeproxy/client.js:788
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1150
#: htdocs/luci-static/resources/view/homeproxy/node.js:452
#: htdocs/luci-static/resources/view/homeproxy/node.js:1087
#: htdocs/luci-static/resources/view/homeproxy/server.js:213
@@ -2634,7 +2649,7 @@ msgstr ""
msgid "private key"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:563
+#: htdocs/luci-static/resources/view/homeproxy/client.js:571
msgid "quic-go / uquic chrome"
msgstr ""
@@ -2685,29 +2700,30 @@ msgstr ""
msgid "v3"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:178
-msgid "valid IP address"
+#: htdocs/luci-static/resources/view/homeproxy/client.js:186
+#: htdocs/luci-static/resources/view/homeproxy/client.js:190
+#: htdocs/luci-static/resources/view/homeproxy/client.js:220
+#: htdocs/luci-static/resources/view/homeproxy/client.js:224
+#: htdocs/luci-static/resources/view/homeproxy/client.js:799
+#: htdocs/luci-static/resources/view/homeproxy/client.js:803
+msgid "valid DNS server address"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:451
-#: htdocs/luci-static/resources/view/homeproxy/client.js:454
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1124
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1127
+#: htdocs/luci-static/resources/view/homeproxy/client.js:459
+#: htdocs/luci-static/resources/view/homeproxy/client.js:462
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1155
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1158
#: htdocs/luci-static/resources/view/homeproxy/node.js:1316
#: htdocs/luci-static/resources/view/homeproxy/node.js:1319
msgid "valid URL"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:206
-msgid "valid address#port"
-msgstr ""
-
#: htdocs/luci-static/resources/homeproxy.js:265
msgid "valid base64 key with %d characters"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1265
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1294
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1296
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1325
msgid "valid hostname"
msgstr ""
@@ -2715,7 +2731,7 @@ msgstr ""
msgid "valid port range (port1:port2)"
msgstr ""
-#: htdocs/luci-static/resources/view/homeproxy/client.js:245
+#: htdocs/luci-static/resources/view/homeproxy/client.js:253
msgid "valid port value"
msgstr ""
diff --git a/luci-app-homeproxy/po/zh_Hans/homeproxy.po b/luci-app-homeproxy/po/zh_Hans/homeproxy.po
index 18403f97c..760763f8e 100644
--- a/luci-app-homeproxy/po/zh_Hans/homeproxy.po
+++ b/luci-app-homeproxy/po/zh_Hans/homeproxy.po
@@ -20,7 +20,7 @@ msgstr "移除了 %s 个节点"
msgid "/etc/homeproxy/certs/..., /etc/acme/..., /etc/ssl/..."
msgstr "/etc/homeproxy/certs/...,/etc/acme/...,/etc/ssl/..."
-#: htdocs/luci-static/resources/view/homeproxy/client.js:541
+#: htdocs/luci-static/resources/view/homeproxy/client.js:549
msgid "4 or 6. Not limited if empty."
msgstr "4 或 6。留空不限制。"
@@ -39,11 +39,11 @@ msgstr "API 令牌"
msgid "Accept any if empty."
msgstr "留空则不校验。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1008
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1039
msgid "Accept empty query response"
msgstr "接受空查询响应"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1160
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1191
msgid "Access Control"
msgstr "访问控制"
@@ -55,11 +55,11 @@ msgstr "访问密钥 ID"
msgid "Access key secret"
msgstr "访问密钥"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:856
+#: htdocs/luci-static/resources/view/homeproxy/client.js:887
msgid "Add a DNS rule"
msgstr "新增 DNS 规则"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:761
+#: htdocs/luci-static/resources/view/homeproxy/client.js:768
msgid "Add a DNS server"
msgstr "新增 DNS 服务器"
@@ -67,15 +67,15 @@ msgstr "新增 DNS 服务器"
msgid "Add a node"
msgstr "新增节点"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:365
+#: htdocs/luci-static/resources/view/homeproxy/client.js:373
msgid "Add a routing node"
msgstr "新增路由节点"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:507
+#: htdocs/luci-static/resources/view/homeproxy/client.js:515
msgid "Add a routing rule"
msgstr "新增路由规则"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1082
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1113
msgid "Add a rule set"
msgstr "新增规则集"
@@ -83,16 +83,16 @@ msgstr "新增规则集"
msgid "Add a server"
msgstr "新增服务器"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:775
+#: htdocs/luci-static/resources/view/homeproxy/client.js:782
#: htdocs/luci-static/resources/view/homeproxy/node.js:413
msgid "Address"
msgstr "地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:779
+#: htdocs/luci-static/resources/view/homeproxy/client.js:809
msgid "Address resolver"
msgstr "地址解析器"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:811
+#: htdocs/luci-static/resources/view/homeproxy/client.js:841
msgid "Address strategy"
msgstr "地址解析策略"
@@ -101,11 +101,11 @@ msgid "Alibaba Cloud DNS"
msgstr "阿里云 DNS"
#: htdocs/luci-static/resources/view/homeproxy/client.js:165
-#: htdocs/luci-static/resources/view/homeproxy/client.js:187
+#: htdocs/luci-static/resources/view/homeproxy/client.js:199
msgid "Aliyun Public DNS (223.5.5.5)"
msgstr "阿里云公共 DNS(223.5.5.5)"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:237
+#: htdocs/luci-static/resources/view/homeproxy/client.js:245
msgid "All ports"
msgstr "所有端口"
@@ -152,13 +152,13 @@ msgstr "替代 HTTPS 端口"
msgid "An error occurred during updating subscriptions: %s"
msgstr "更新订阅时发生错误:%s"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1024
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1055
msgid "Any"
msgstr "任何"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:735
-#: htdocs/luci-static/resources/view/homeproxy/client.js:841
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1066
+#: htdocs/luci-static/resources/view/homeproxy/client.js:743
+#: htdocs/luci-static/resources/view/homeproxy/client.js:872
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1097
msgid ""
"Append a edns0-subnet
OPT extra record with the specified IP "
"prefix to every query by default.
If value is an IP address instead of "
@@ -227,26 +227,26 @@ msgstr "百度"
msgid "Base64"
msgstr "Base64"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:300
+#: htdocs/luci-static/resources/view/homeproxy/client.js:308
msgid "Based on google/gvisor."
msgstr "基于 google/gvisor。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1103
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1134
msgid "Binary file"
msgstr "二进制文件"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:394
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1173
+#: htdocs/luci-static/resources/view/homeproxy/client.js:402
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1204
msgid "Bind interface"
msgstr "绑定接口"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1174
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1205
msgid ""
"Bind outbound traffic to specific interface. Leave empty to auto detect."
msgstr "绑定出站流量至指定端口。留空自动检测。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:549
-#: htdocs/luci-static/resources/view/homeproxy/client.js:906
+#: htdocs/luci-static/resources/view/homeproxy/client.js:557
+#: htdocs/luci-static/resources/view/homeproxy/client.js:937
msgid "BitTorrent"
msgstr "BitTorrent"
@@ -254,34 +254,34 @@ msgstr "BitTorrent"
msgid "Blacklist mode"
msgstr "黑名单模式"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:343
-#: htdocs/luci-static/resources/view/homeproxy/client.js:681
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1026
+#: htdocs/luci-static/resources/view/homeproxy/client.js:351
+#: htdocs/luci-static/resources/view/homeproxy/client.js:689
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1057
msgid "Block"
msgstr "封锁"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:711
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1044
+#: htdocs/luci-static/resources/view/homeproxy/client.js:719
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1075
msgid "Block DNS queries"
msgstr "封锁 DNS 请求"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:544
-#: htdocs/luci-static/resources/view/homeproxy/client.js:572
-#: htdocs/luci-static/resources/view/homeproxy/client.js:892
-#: htdocs/luci-static/resources/view/homeproxy/client.js:902
+#: htdocs/luci-static/resources/view/homeproxy/client.js:552
+#: htdocs/luci-static/resources/view/homeproxy/client.js:580
+#: htdocs/luci-static/resources/view/homeproxy/client.js:923
+#: htdocs/luci-static/resources/view/homeproxy/client.js:933
#: htdocs/luci-static/resources/view/homeproxy/server.js:818
msgid "Both"
msgstr "全部"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:321
+#: htdocs/luci-static/resources/view/homeproxy/client.js:329
msgid "Bypass CN traffic"
msgstr "绕过中国流量"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:224
+#: htdocs/luci-static/resources/view/homeproxy/client.js:232
msgid "Bypass mainland China"
msgstr "大陆白名单"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:322
+#: htdocs/luci-static/resources/view/homeproxy/client.js:330
msgid "Bypass mainland China traffic via firewall rules by default."
msgstr "默认使用防火墙规则绕过中国大陆流量。"
@@ -289,7 +289,7 @@ msgstr "默认使用防火墙规则绕过中国大陆流量。"
msgid "CA provider"
msgstr "CA 颁发机构"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:188
+#: htdocs/luci-static/resources/view/homeproxy/client.js:200
msgid "CNNIC Public DNS (210.2.4.8)"
msgstr "CNNIC 公共 DNS(210.2.4.8)"
@@ -314,23 +314,23 @@ msgstr "检查"
msgid "Check update"
msgstr "检查更新"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:185
+#: htdocs/luci-static/resources/view/homeproxy/client.js:196
msgid "China DNS server"
msgstr "国内 DNS 服务器"
#: htdocs/luci-static/resources/view/homeproxy/status.js:204
msgid "China IPv4 list version"
-msgstr "大陆 IPv4 库版本"
+msgstr "国内 IPv4 库版本"
#: htdocs/luci-static/resources/view/homeproxy/status.js:208
msgid "China IPv6 list version"
-msgstr "大陆 IPv6 库版本"
+msgstr "国内 IPv6 库版本"
#: htdocs/luci-static/resources/view/homeproxy/status.js:212
msgid "China list version"
-msgstr "大陆域名列表版本"
+msgstr "国内域名列表版本"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:561
+#: htdocs/luci-static/resources/view/homeproxy/client.js:569
msgid "Chromium / Cronet"
msgstr "Chromium / Cronet"
@@ -347,7 +347,7 @@ msgstr "思科公共 DNS(208.67.222.222)"
msgid "Clean log"
msgstr "清空日志"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:559
+#: htdocs/luci-static/resources/view/homeproxy/client.js:567
msgid "Client"
msgstr "客户端"
@@ -373,7 +373,7 @@ msgstr "Cloudflare"
msgid "Collecting data..."
msgstr "收集数据中..."
-#: htdocs/luci-static/resources/view/homeproxy/client.js:238
+#: htdocs/luci-static/resources/view/homeproxy/client.js:246
msgid "Common ports only (bypass P2P traffic)"
msgstr "仅常用端口(绕过 P2P 流量)"
@@ -386,23 +386,23 @@ msgstr "拥塞控制算法"
msgid "Connection check"
msgstr "连接检查"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:226
+#: htdocs/luci-static/resources/view/homeproxy/client.js:234
msgid "Custom routing"
msgstr "自定义路由"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:550
+#: htdocs/luci-static/resources/view/homeproxy/client.js:558
msgid "DNS"
msgstr "DNS"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:847
+#: htdocs/luci-static/resources/view/homeproxy/client.js:878
msgid "DNS Rules"
msgstr "DNS 规则"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:752
+#: htdocs/luci-static/resources/view/homeproxy/client.js:759
msgid "DNS Servers"
msgstr "DNS 服务器"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:694
+#: htdocs/luci-static/resources/view/homeproxy/client.js:702
msgid "DNS Settings"
msgstr "DNS 设置"
@@ -410,12 +410,12 @@ msgstr "DNS 设置"
msgid "DNS provider"
msgstr "DNS 提供商"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:856
+#: htdocs/luci-static/resources/view/homeproxy/client.js:887
msgid "DNS rule"
msgstr "DNS 规则"
#: htdocs/luci-static/resources/view/homeproxy/client.js:158
-#: htdocs/luci-static/resources/view/homeproxy/client.js:761
+#: htdocs/luci-static/resources/view/homeproxy/client.js:768
msgid "DNS server"
msgstr "DNS 服务器"
@@ -423,38 +423,38 @@ msgstr "DNS 服务器"
msgid "DNS01 challenge"
msgstr "DNS01 验证"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:551
-#: htdocs/luci-static/resources/view/homeproxy/client.js:907
+#: htdocs/luci-static/resources/view/homeproxy/client.js:559
+#: htdocs/luci-static/resources/view/homeproxy/client.js:938
msgid "DTLS"
msgstr "DTLS"
#: htdocs/luci-static/resources/homeproxy.js:17
-#: htdocs/luci-static/resources/view/homeproxy/client.js:535
-#: htdocs/luci-static/resources/view/homeproxy/client.js:884
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1143
+#: htdocs/luci-static/resources/view/homeproxy/client.js:543
+#: htdocs/luci-static/resources/view/homeproxy/client.js:915
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1174
#: htdocs/luci-static/resources/view/homeproxy/node.js:645
msgid "Default"
msgstr "默认"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:709
-#: htdocs/luci-static/resources/view/homeproxy/client.js:786
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1042
+#: htdocs/luci-static/resources/view/homeproxy/client.js:717
+#: htdocs/luci-static/resources/view/homeproxy/client.js:816
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1073
msgid "Default DNS (issued by WAN)"
msgstr "默认 DNS(由 WAN 下发)"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:704
+#: htdocs/luci-static/resources/view/homeproxy/client.js:712
msgid "Default DNS server"
msgstr "默认 DNS 服务器"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:699
+#: htdocs/luci-static/resources/view/homeproxy/client.js:707
msgid "Default DNS strategy"
msgstr "默认 DNS 解析策略"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:818
+#: htdocs/luci-static/resources/view/homeproxy/client.js:848
msgid "Default domain strategy for resolving the domain names."
msgstr "默认域名解析策略。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:336
+#: htdocs/luci-static/resources/view/homeproxy/client.js:344
msgid "Default outbound"
msgstr "默认出站"
@@ -466,38 +466,38 @@ msgstr "默认包封装格式"
msgid "Default server name"
msgstr "默认服务器名称"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:342
-#: htdocs/luci-static/resources/view/homeproxy/client.js:407
-#: htdocs/luci-static/resources/view/homeproxy/client.js:680
-#: htdocs/luci-static/resources/view/homeproxy/client.js:828
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1025
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1144
+#: htdocs/luci-static/resources/view/homeproxy/client.js:350
+#: htdocs/luci-static/resources/view/homeproxy/client.js:415
+#: htdocs/luci-static/resources/view/homeproxy/client.js:688
+#: htdocs/luci-static/resources/view/homeproxy/client.js:859
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1056
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1175
#: htdocs/luci-static/resources/view/homeproxy/node.js:394
msgid "Direct"
msgstr "直连"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1272
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1303
msgid "Direct Domain List"
msgstr "直连域名列表"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1189
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1234
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1220
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1265
msgid "Direct IPv4 IP-s"
msgstr "直连 IPv4 地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1192
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1237
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1223
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1268
msgid "Direct IPv6 IP-s"
msgstr "直连 IPv6 地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1195
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1226
msgid "Direct MAC-s"
msgstr "直连 MAC 地址"
#: htdocs/luci-static/resources/view/homeproxy/client.js:142
#: htdocs/luci-static/resources/view/homeproxy/client.js:150
-#: htdocs/luci-static/resources/view/homeproxy/client.js:341
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1183
+#: htdocs/luci-static/resources/view/homeproxy/client.js:349
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1214
#: htdocs/luci-static/resources/view/homeproxy/node.js:473
#: htdocs/luci-static/resources/view/homeproxy/node.js:492
#: htdocs/luci-static/resources/view/homeproxy/node.js:504
@@ -508,7 +508,7 @@ msgstr "直连 MAC 地址"
msgid "Disable"
msgstr "禁用"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:722
+#: htdocs/luci-static/resources/view/homeproxy/client.js:730
msgid "Disable DNS cache"
msgstr "禁用 DNS 缓存"
@@ -525,15 +525,15 @@ msgstr "禁用路径 MTU 探测"
msgid "Disable TLS ALPN challenge"
msgstr "禁用 TLS ALPN 认证"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1056
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1087
msgid "Disable cache and save cache in this query."
msgstr "在本次查询中禁用缓存。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:725
+#: htdocs/luci-static/resources/view/homeproxy/client.js:733
msgid "Disable cache expire"
msgstr "缓存永不过期"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1055
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1086
msgid "Disable dns cache"
msgstr "禁用 DNS 缓存"
@@ -550,29 +550,29 @@ msgstr ""
"禁用路径 MTU 发现 (RFC 8899)。 数据包的大小最多为 1252 (IPv4) / 1232 (IPv6) "
"字节。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:583
-#: htdocs/luci-static/resources/view/homeproxy/client.js:924
+#: htdocs/luci-static/resources/view/homeproxy/client.js:591
+#: htdocs/luci-static/resources/view/homeproxy/client.js:955
msgid "Domain keyword"
msgstr "域名关键词"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:574
-#: htdocs/luci-static/resources/view/homeproxy/client.js:915
+#: htdocs/luci-static/resources/view/homeproxy/client.js:582
+#: htdocs/luci-static/resources/view/homeproxy/client.js:946
msgid "Domain name"
msgstr "域名"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:587
-#: htdocs/luci-static/resources/view/homeproxy/client.js:928
+#: htdocs/luci-static/resources/view/homeproxy/client.js:595
+#: htdocs/luci-static/resources/view/homeproxy/client.js:959
msgid "Domain regex"
msgstr "域名正则表达式"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:326
-#: htdocs/luci-static/resources/view/homeproxy/client.js:387
+#: htdocs/luci-static/resources/view/homeproxy/client.js:334
+#: htdocs/luci-static/resources/view/homeproxy/client.js:395
#: htdocs/luci-static/resources/view/homeproxy/server.js:809
msgid "Domain strategy"
msgstr "域名解析策略"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:579
-#: htdocs/luci-static/resources/view/homeproxy/client.js:920
+#: htdocs/luci-static/resources/view/homeproxy/client.js:587
+#: htdocs/luci-static/resources/view/homeproxy/client.js:951
msgid "Domain suffix"
msgstr "域名后缀"
@@ -631,9 +631,9 @@ msgstr "ECH 配置"
msgid "ECH config path"
msgstr "ECH 配置路径"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:734
-#: htdocs/luci-static/resources/view/homeproxy/client.js:840
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1065
+#: htdocs/luci-static/resources/view/homeproxy/client.js:742
+#: htdocs/luci-static/resources/view/homeproxy/client.js:871
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1096
msgid "EDNS Client subnet"
msgstr "ENDS 客户端子网"
@@ -659,11 +659,11 @@ msgstr "修改节点"
msgid "Email"
msgstr "Email"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:374
-#: htdocs/luci-static/resources/view/homeproxy/client.js:522
-#: htdocs/luci-static/resources/view/homeproxy/client.js:770
-#: htdocs/luci-static/resources/view/homeproxy/client.js:871
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1091
+#: htdocs/luci-static/resources/view/homeproxy/client.js:382
+#: htdocs/luci-static/resources/view/homeproxy/client.js:530
+#: htdocs/luci-static/resources/view/homeproxy/client.js:777
+#: htdocs/luci-static/resources/view/homeproxy/client.js:902
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1122
#: htdocs/luci-static/resources/view/homeproxy/server.js:116
#: htdocs/luci-static/resources/view/homeproxy/server.js:139
msgid "Enable"
@@ -711,7 +711,7 @@ msgstr "启用 TCP Brutal 拥塞控制算法。"
msgid "Enable UDP fragmentation."
msgstr "启用 UDP 分片。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:305
+#: htdocs/luci-static/resources/view/homeproxy/client.js:313
msgid "Enable endpoint-independent NAT"
msgstr "启用端点独立 NAT"
@@ -743,17 +743,23 @@ msgstr "加密方式"
#: htdocs/luci-static/resources/homeproxy.js:301
#: htdocs/luci-static/resources/homeproxy.js:303
#: htdocs/luci-static/resources/view/homeproxy/client.js:75
-#: htdocs/luci-static/resources/view/homeproxy/client.js:176
-#: htdocs/luci-static/resources/view/homeproxy/client.js:178
-#: htdocs/luci-static/resources/view/homeproxy/client.js:206
-#: htdocs/luci-static/resources/view/homeproxy/client.js:245
-#: htdocs/luci-static/resources/view/homeproxy/client.js:451
-#: htdocs/luci-static/resources/view/homeproxy/client.js:454
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1119
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1124
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1127
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1265
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1294
+#: htdocs/luci-static/resources/view/homeproxy/client.js:174
+#: htdocs/luci-static/resources/view/homeproxy/client.js:186
+#: htdocs/luci-static/resources/view/homeproxy/client.js:190
+#: htdocs/luci-static/resources/view/homeproxy/client.js:209
+#: htdocs/luci-static/resources/view/homeproxy/client.js:220
+#: htdocs/luci-static/resources/view/homeproxy/client.js:224
+#: htdocs/luci-static/resources/view/homeproxy/client.js:253
+#: htdocs/luci-static/resources/view/homeproxy/client.js:459
+#: htdocs/luci-static/resources/view/homeproxy/client.js:462
+#: htdocs/luci-static/resources/view/homeproxy/client.js:788
+#: htdocs/luci-static/resources/view/homeproxy/client.js:799
+#: htdocs/luci-static/resources/view/homeproxy/client.js:803
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1150
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1155
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1158
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1296
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1325
#: htdocs/luci-static/resources/view/homeproxy/node.js:452
#: htdocs/luci-static/resources/view/homeproxy/node.js:1087
#: htdocs/luci-static/resources/view/homeproxy/node.js:1260
@@ -789,7 +795,7 @@ msgstr "过滤关键词"
msgid "Filter nodes"
msgstr "过滤节点"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:562
+#: htdocs/luci-static/resources/view/homeproxy/client.js:570
msgid "Firefox / uquic firefox"
msgstr "Firefox / uquic firefox"
@@ -798,7 +804,7 @@ msgstr "Firefox / uquic firefox"
msgid "Flow"
msgstr "流控"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1102
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1133
msgid "Format"
msgstr "格式"
@@ -810,19 +816,19 @@ msgstr "GET"
msgid "GFW list version"
msgstr "GFW 域名列表版本"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:223
+#: htdocs/luci-static/resources/view/homeproxy/client.js:231
msgid "GFWList"
msgstr "GFWList"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1207
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1238
msgid "Gaming mode IPv4 IP-s"
msgstr "游戏模式 IPv4 地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1209
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1240
msgid "Gaming mode IPv6 IP-s"
msgstr "游戏模式 IPv6 地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1212
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1243
msgid "Gaming mode MAC-s"
msgstr "游戏模式 MAC 地址"
@@ -835,12 +841,12 @@ msgstr "游戏模式 MAC 地址"
msgid "Generate"
msgstr "生成"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:278
+#: htdocs/luci-static/resources/view/homeproxy/client.js:286
#: htdocs/luci-static/resources/view/homeproxy/node.js:835
msgid "Generic segmentation offload"
msgstr "通用分段卸载(GSO)"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:227
+#: htdocs/luci-static/resources/view/homeproxy/client.js:235
msgid "Global"
msgstr "全局"
@@ -848,15 +854,15 @@ msgstr "全局"
msgid "Global padding"
msgstr "全局填充"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1214
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1245
msgid "Global proxy IPv4 IP-s"
msgstr "全局代理 IPv4 地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1217
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1248
msgid "Global proxy IPv6 IP-s"
msgstr "全局代理 IPv6 地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1220
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1251
msgid "Global proxy MAC-s"
msgstr "全局代理 MAC 地址"
@@ -876,8 +882,8 @@ msgstr "谷歌公共 DNS(8.8.8.8)"
msgid "Grant access to homeproxy configuration"
msgstr "授予 homeproxy 访问 UCI 配置的权限"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:552
-#: htdocs/luci-static/resources/view/homeproxy/client.js:908
+#: htdocs/luci-static/resources/view/homeproxy/client.js:560
+#: htdocs/luci-static/resources/view/homeproxy/client.js:939
#: htdocs/luci-static/resources/view/homeproxy/node.js:395
#: htdocs/luci-static/resources/view/homeproxy/node.js:715
#: htdocs/luci-static/resources/view/homeproxy/server.js:145
@@ -932,8 +938,8 @@ msgstr "HomeProxy 服务端"
msgid "Host"
msgstr "主机名"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:512
-#: htdocs/luci-static/resources/view/homeproxy/client.js:861
+#: htdocs/luci-static/resources/view/homeproxy/client.js:520
+#: htdocs/luci-static/resources/view/homeproxy/client.js:892
msgid "Host fields"
msgstr "主机字段"
@@ -961,18 +967,18 @@ msgstr "Hysteria"
msgid "Hysteria2"
msgstr "Hysteria2"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:602
-#: htdocs/luci-static/resources/view/homeproxy/client.js:952
+#: htdocs/luci-static/resources/view/homeproxy/client.js:610
+#: htdocs/luci-static/resources/view/homeproxy/client.js:983
msgid "IP CIDR"
msgstr "IP CIDR"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:540
-#: htdocs/luci-static/resources/view/homeproxy/client.js:889
+#: htdocs/luci-static/resources/view/homeproxy/client.js:548
+#: htdocs/luci-static/resources/view/homeproxy/client.js:920
msgid "IP version"
msgstr "IP 版本"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:542
-#: htdocs/luci-static/resources/view/homeproxy/client.js:890
+#: htdocs/luci-static/resources/view/homeproxy/client.js:550
+#: htdocs/luci-static/resources/view/homeproxy/client.js:921
msgid "IPv4"
msgstr "IPv4"
@@ -980,8 +986,8 @@ msgstr "IPv4"
msgid "IPv4 only"
msgstr "仅 IPv4"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:543
-#: htdocs/luci-static/resources/view/homeproxy/client.js:891
+#: htdocs/luci-static/resources/view/homeproxy/client.js:551
+#: htdocs/luci-static/resources/view/homeproxy/client.js:922
msgid "IPv6"
msgstr "IPv6"
@@ -989,11 +995,11 @@ msgstr "IPv6"
msgid "IPv6 only"
msgstr "仅 IPv6"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:268
+#: htdocs/luci-static/resources/view/homeproxy/client.js:276
msgid "IPv6 support"
msgstr "IPv6 支持"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:484
+#: htdocs/luci-static/resources/view/homeproxy/client.js:492
#: htdocs/luci-static/resources/view/homeproxy/node.js:786
#: htdocs/luci-static/resources/view/homeproxy/server.js:450
msgid "Idle timeout"
@@ -1005,13 +1011,13 @@ msgid ""
"connections."
msgstr "如果启用,客户端传输即使没有活动连接也会发送 keepalive ping。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:327
+#: htdocs/luci-static/resources/view/homeproxy/client.js:335
#: htdocs/luci-static/resources/view/homeproxy/server.js:810
msgid ""
"If set, the requested domain name will be resolved to IP before routing."
msgstr "如果设置,请求的域名将在路由前被解析为 IP 地址。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:388
+#: htdocs/luci-static/resources/view/homeproxy/client.js:396
msgid ""
"If set, the server domain name will be resolved to IP before connecting.
"
msgstr "如果设置,服务器域名将在连接前被解析为 IP。"
@@ -1045,24 +1051,24 @@ msgstr "导入"
msgid "Import share links"
msgstr "导入分享链接"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:313
+#: htdocs/luci-static/resources/view/homeproxy/client.js:321
#: htdocs/luci-static/resources/view/homeproxy/server.js:799
msgid "In seconds. 300
is used by default."
msgstr "单位:秒。默认使用 300
。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:729
+#: htdocs/luci-static/resources/view/homeproxy/client.js:737
msgid "Independent cache per server"
msgstr "独立缓存"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1166
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1197
msgid "Interface Control"
msgstr "接口控制"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:490
+#: htdocs/luci-static/resources/view/homeproxy/client.js:498
msgid "Interrupt existing connections"
msgstr "中断现有连接"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:491
+#: htdocs/luci-static/resources/view/homeproxy/client.js:499
msgid "Interrupt existing connections when the selected outbound has changed."
msgstr "当选择的出站发生变化时中断现有连接。"
@@ -1073,33 +1079,29 @@ msgid ""
"seconds)."
msgstr "发送心跳包以保持连接存活的时间间隔(单位:秒)。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:669
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1013
+#: htdocs/luci-static/resources/view/homeproxy/client.js:677
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1044
msgid "Invert"
msgstr "反转"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:670
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1014
+#: htdocs/luci-static/resources/view/homeproxy/client.js:678
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1045
msgid "Invert match result."
msgstr "反转匹配结果"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:159
-msgid "It MUST support TCP query."
-msgstr "它必须支持 TCP 查询。"
-
#: htdocs/luci-static/resources/view/homeproxy/server.js:760
msgid "Key path"
msgstr "证书路径"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1180
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1211
msgid "LAN IP Policy"
msgstr "LAN IP 策略"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:369
-#: htdocs/luci-static/resources/view/homeproxy/client.js:517
-#: htdocs/luci-static/resources/view/homeproxy/client.js:765
-#: htdocs/luci-static/resources/view/homeproxy/client.js:866
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1086
+#: htdocs/luci-static/resources/view/homeproxy/client.js:377
+#: htdocs/luci-static/resources/view/homeproxy/client.js:525
+#: htdocs/luci-static/resources/view/homeproxy/client.js:772
+#: htdocs/luci-static/resources/view/homeproxy/client.js:897
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1117
#: htdocs/luci-static/resources/view/homeproxy/node.js:388
#: htdocs/luci-static/resources/view/homeproxy/server.js:133
msgid "Label"
@@ -1114,7 +1116,7 @@ msgstr ""
"提供旧协议支持(VMess MD5 身份验证)仅出于兼容性目的,不建议使用 alterId > "
"1。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:302
+#: htdocs/luci-static/resources/view/homeproxy/client.js:310
msgid "Less compatibility and sometimes better performance."
msgstr "有时性能更好。"
@@ -1127,7 +1129,7 @@ msgid ""
"List of IP (v4 or v6) addresses prefixes to be assigned to the interface."
msgstr "分配给接口的 IP(v4 或 v6)地址前缀列表。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:438
+#: htdocs/luci-static/resources/view/homeproxy/client.js:446
msgid "List of nodes to test."
msgstr "要测试的节点列表。"
@@ -1140,7 +1142,7 @@ msgstr "支持的应用层协议协商列表,按顺序排列。"
msgid "Listen address"
msgstr "监听地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1168
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1199
msgid "Listen interfaces"
msgstr "监听接口"
@@ -1152,7 +1154,7 @@ msgstr "监听端口"
msgid "Loading"
msgstr "加载中"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1097
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1128
msgid "Local"
msgstr "本地"
@@ -1180,19 +1182,19 @@ msgstr "主 UDP 节点"
msgid "Main node"
msgstr "主节点"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:665
+#: htdocs/luci-static/resources/view/homeproxy/client.js:673
msgid "Make IP CIDR in rule set used to match the source IP."
msgstr "使规则集中的 IP CIDR 用于匹配源 IP。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1004
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1035
msgid "Make IP CIDR in rule sets match the source IP."
msgstr "使规则集中的 IP CIDR 匹配源 IP。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1009
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1040
msgid "Make IP CIDR in rule-sets accept empty query response."
msgstr "使规则集中的 IP CIDR 接受空查询响应。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:730
+#: htdocs/luci-static/resources/view/homeproxy/client.js:738
msgid ""
"Make each DNS server's cache independent for special purposes. If enabled, "
"will slightly degrade performance."
@@ -1202,106 +1204,106 @@ msgstr "独立缓存每个 DNS 服务器的结果以供特殊用途。启用后
msgid "Masquerade"
msgstr "伪装"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:953
+#: htdocs/luci-static/resources/view/homeproxy/client.js:984
msgid "Match IP CIDR with query response."
msgstr "使用查询响应匹配 IP CIDR。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:603
+#: htdocs/luci-static/resources/view/homeproxy/client.js:611
msgid "Match IP CIDR."
msgstr "匹配 IP CIDR。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:580
-#: htdocs/luci-static/resources/view/homeproxy/client.js:921
+#: htdocs/luci-static/resources/view/homeproxy/client.js:588
+#: htdocs/luci-static/resources/view/homeproxy/client.js:952
msgid "Match domain suffix."
msgstr "匹配域名后缀。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:584
-#: htdocs/luci-static/resources/view/homeproxy/client.js:925
+#: htdocs/luci-static/resources/view/homeproxy/client.js:592
+#: htdocs/luci-static/resources/view/homeproxy/client.js:956
msgid "Match domain using keyword."
msgstr "使用关键词匹配域名。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:588
-#: htdocs/luci-static/resources/view/homeproxy/client.js:929
+#: htdocs/luci-static/resources/view/homeproxy/client.js:596
+#: htdocs/luci-static/resources/view/homeproxy/client.js:960
msgid "Match domain using regular expression."
msgstr "使用正则表达式匹配域名。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:575
-#: htdocs/luci-static/resources/view/homeproxy/client.js:916
+#: htdocs/luci-static/resources/view/homeproxy/client.js:583
+#: htdocs/luci-static/resources/view/homeproxy/client.js:947
msgid "Match full domain."
msgstr "匹配完整域名。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:629
-#: htdocs/luci-static/resources/view/homeproxy/client.js:938
+#: htdocs/luci-static/resources/view/homeproxy/client.js:637
+#: htdocs/luci-static/resources/view/homeproxy/client.js:969
msgid "Match port range. Format as START:/:END/START:END."
msgstr "匹配端口范围。格式为 START:/:END/START:END。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:624
-#: htdocs/luci-static/resources/view/homeproxy/client.js:933
+#: htdocs/luci-static/resources/view/homeproxy/client.js:632
+#: htdocs/luci-static/resources/view/homeproxy/client.js:964
msgid "Match port."
msgstr "匹配端口。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:958
+#: htdocs/luci-static/resources/view/homeproxy/client.js:989
msgid "Match private IP with query response."
msgstr "使用查询响应匹配私有 IP。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:608
+#: htdocs/luci-static/resources/view/homeproxy/client.js:616
msgid "Match private IP."
msgstr "匹配私有 IP。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:597
-#: htdocs/luci-static/resources/view/homeproxy/client.js:948
+#: htdocs/luci-static/resources/view/homeproxy/client.js:605
+#: htdocs/luci-static/resources/view/homeproxy/client.js:979
msgid "Match private source IP."
msgstr "匹配私有源 IP。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:634
-#: htdocs/luci-static/resources/view/homeproxy/client.js:973
+#: htdocs/luci-static/resources/view/homeproxy/client.js:642
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1004
msgid "Match process name."
msgstr "匹配进程名。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:642
-#: htdocs/luci-static/resources/view/homeproxy/client.js:981
+#: htdocs/luci-static/resources/view/homeproxy/client.js:650
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1012
msgid "Match process path using regular expression."
msgstr "使用正则表达式匹配进程路径。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:638
-#: htdocs/luci-static/resources/view/homeproxy/client.js:977
+#: htdocs/luci-static/resources/view/homeproxy/client.js:646
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1008
msgid "Match process path."
msgstr "匹配进程路径。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:896
+#: htdocs/luci-static/resources/view/homeproxy/client.js:927
msgid "Match query type."
msgstr "匹配请求类型。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:650
-#: htdocs/luci-static/resources/view/homeproxy/client.js:989
+#: htdocs/luci-static/resources/view/homeproxy/client.js:658
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1020
msgid "Match rule set."
msgstr "匹配规则集。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:592
-#: htdocs/luci-static/resources/view/homeproxy/client.js:943
+#: htdocs/luci-static/resources/view/homeproxy/client.js:600
+#: htdocs/luci-static/resources/view/homeproxy/client.js:974
msgid "Match source IP CIDR."
msgstr "匹配源 IP CIDR。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:664
+#: htdocs/luci-static/resources/view/homeproxy/client.js:672
msgid "Match source IP via rule set"
msgstr "通过规则集匹配源 IP"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:619
-#: htdocs/luci-static/resources/view/homeproxy/client.js:968
+#: htdocs/luci-static/resources/view/homeproxy/client.js:627
+#: htdocs/luci-static/resources/view/homeproxy/client.js:999
msgid "Match source port range. Format as START:/:END/START:END."
msgstr "匹配源端口范围。格式为 START:/:END/START:END。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:614
-#: htdocs/luci-static/resources/view/homeproxy/client.js:963
+#: htdocs/luci-static/resources/view/homeproxy/client.js:622
+#: htdocs/luci-static/resources/view/homeproxy/client.js:994
msgid "Match source port."
msgstr "匹配源端口。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1019
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1050
msgid "Match the server name of outbound."
msgstr "匹配出站的服务器名称。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:646
-#: htdocs/luci-static/resources/view/homeproxy/client.js:985
+#: htdocs/luci-static/resources/view/homeproxy/client.js:654
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1016
msgid "Match user name."
msgstr "匹配用户名。"
@@ -1370,17 +1372,17 @@ msgstr "在打开新连接之前,连接中的最小多路复用流数量。"
msgid "Minimum streams"
msgstr "最小流数量"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:287
+#: htdocs/luci-static/resources/view/homeproxy/client.js:295
#: htdocs/luci-static/resources/view/homeproxy/server.js:151
msgid "Mixed"
msgstr "混合"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:298
+#: htdocs/luci-static/resources/view/homeproxy/client.js:306
msgid "Mixed system
TCP stack and gVisor
UDP stack."
msgstr "混合系统
TCP 栈和 gVisor
UDP 栈。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:527
-#: htdocs/luci-static/resources/view/homeproxy/client.js:876
+#: htdocs/luci-static/resources/view/homeproxy/client.js:535
+#: htdocs/luci-static/resources/view/homeproxy/client.js:907
msgid "Mode"
msgstr "模式"
@@ -1415,8 +1417,8 @@ msgstr "原生"
msgid "NaïveProxy"
msgstr "NaïveProxy"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:569
-#: htdocs/luci-static/resources/view/homeproxy/client.js:899
+#: htdocs/luci-static/resources/view/homeproxy/client.js:577
+#: htdocs/luci-static/resources/view/homeproxy/client.js:930
#: htdocs/luci-static/resources/view/homeproxy/server.js:815
msgid "Network"
msgstr "网络"
@@ -1449,7 +1451,7 @@ msgstr "无订阅节点"
msgid "No valid share link found."
msgstr "找不到有效分享链接。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:379
+#: htdocs/luci-static/resources/view/homeproxy/client.js:387
#: htdocs/luci-static/resources/view/homeproxy/node.js:363
msgid "Node"
msgstr "节点"
@@ -1462,7 +1464,7 @@ msgstr "节点设置"
msgid "Nodes"
msgstr "节点"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:785
+#: htdocs/luci-static/resources/view/homeproxy/client.js:815
#: htdocs/luci-static/resources/view/homeproxy/node.js:674
#: htdocs/luci-static/resources/view/homeproxy/node.js:713
#: htdocs/luci-static/resources/view/homeproxy/server.js:380
@@ -1480,28 +1482,28 @@ msgstr "混淆密码"
msgid "Obfuscate type"
msgstr "混淆类型"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1169
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1200
msgid "Only process traffic from specific interfaces. Leave empty for all."
msgstr "只处理来自指定接口的流量。留空表示全部。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:225
+#: htdocs/luci-static/resources/view/homeproxy/client.js:233
msgid "Only proxy mainland China"
msgstr "仅代理中国大陆"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:511
-#: htdocs/luci-static/resources/view/homeproxy/client.js:860
+#: htdocs/luci-static/resources/view/homeproxy/client.js:519
+#: htdocs/luci-static/resources/view/homeproxy/client.js:891
msgid "Other fields"
msgstr "其他字段"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:401
-#: htdocs/luci-static/resources/view/homeproxy/client.js:674
-#: htdocs/luci-static/resources/view/homeproxy/client.js:822
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1018
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1137
+#: htdocs/luci-static/resources/view/homeproxy/client.js:409
+#: htdocs/luci-static/resources/view/homeproxy/client.js:682
+#: htdocs/luci-static/resources/view/homeproxy/client.js:853
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1049
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1168
msgid "Outbound"
msgstr "出站"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:380
+#: htdocs/luci-static/resources/view/homeproxy/client.js:388
msgid "Outbound node"
msgstr "出站节点"
@@ -1509,7 +1511,7 @@ msgstr "出站节点"
msgid "Override address"
msgstr "覆盖地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:331
+#: htdocs/luci-static/resources/view/homeproxy/client.js:339
#: htdocs/luci-static/resources/view/homeproxy/server.js:805
msgid "Override destination"
msgstr "覆盖目标地址"
@@ -1518,7 +1520,7 @@ msgstr "覆盖目标地址"
msgid "Override port"
msgstr "覆盖端口"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:332
+#: htdocs/luci-static/resources/view/homeproxy/client.js:340
#: htdocs/luci-static/resources/view/homeproxy/server.js:806
msgid "Override the connection destination address with the sniffed domain."
msgstr "使用嗅探到的域名覆盖连接目标。"
@@ -1544,7 +1546,7 @@ msgstr "数据包编码"
msgid "Password"
msgstr "密码"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1108
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1139
#: htdocs/luci-static/resources/view/homeproxy/node.js:775
#: htdocs/luci-static/resources/view/homeproxy/node.js:808
#: htdocs/luci-static/resources/view/homeproxy/server.js:441
@@ -1556,7 +1558,7 @@ msgstr "路径"
msgid "Peer pubkic key"
msgstr "对端公钥"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:306
+#: htdocs/luci-static/resources/view/homeproxy/client.js:314
msgid ""
"Performance may degrade slightly, so it is not recommended to enable on when "
"it is not needed."
@@ -1575,23 +1577,23 @@ msgstr "插件"
msgid "Plugin opts"
msgstr "插件参数"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:623
-#: htdocs/luci-static/resources/view/homeproxy/client.js:932
+#: htdocs/luci-static/resources/view/homeproxy/client.js:631
+#: htdocs/luci-static/resources/view/homeproxy/client.js:963
#: htdocs/luci-static/resources/view/homeproxy/node.js:418
msgid "Port"
msgstr "端口"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:247
+#: htdocs/luci-static/resources/view/homeproxy/client.js:255
msgid "Port %s alrealy exists!"
msgstr "端口 %s 已存在!"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:513
-#: htdocs/luci-static/resources/view/homeproxy/client.js:862
+#: htdocs/luci-static/resources/view/homeproxy/client.js:521
+#: htdocs/luci-static/resources/view/homeproxy/client.js:893
msgid "Port fields"
msgstr "端口字段"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:628
-#: htdocs/luci-static/resources/view/homeproxy/client.js:937
+#: htdocs/luci-static/resources/view/homeproxy/client.js:636
+#: htdocs/luci-static/resources/view/homeproxy/client.js:968
msgid "Port range"
msgstr "端口范围"
@@ -1607,8 +1609,8 @@ msgstr "优先 IPv4"
msgid "Prefer IPv6"
msgstr "优先 IPv6"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:607
-#: htdocs/luci-static/resources/view/homeproxy/client.js:957
+#: htdocs/luci-static/resources/view/homeproxy/client.js:615
+#: htdocs/luci-static/resources/view/homeproxy/client.js:988
msgid "Private IP"
msgstr "私有 IP"
@@ -1621,28 +1623,28 @@ msgstr "私钥"
msgid "Private key passphrase"
msgstr "私钥指纹"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:596
-#: htdocs/luci-static/resources/view/homeproxy/client.js:947
+#: htdocs/luci-static/resources/view/homeproxy/client.js:604
+#: htdocs/luci-static/resources/view/homeproxy/client.js:978
msgid "Private source IP"
msgstr "私有源 IP"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:633
-#: htdocs/luci-static/resources/view/homeproxy/client.js:972
+#: htdocs/luci-static/resources/view/homeproxy/client.js:641
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1003
msgid "Process name"
msgstr "进程名"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:637
-#: htdocs/luci-static/resources/view/homeproxy/client.js:976
+#: htdocs/luci-static/resources/view/homeproxy/client.js:645
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1007
msgid "Process path"
msgstr "进程路径"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:641
-#: htdocs/luci-static/resources/view/homeproxy/client.js:980
+#: htdocs/luci-static/resources/view/homeproxy/client.js:649
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1011
msgid "Process path (regex)"
msgstr "进程路径(正则表达式)"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:547
-#: htdocs/luci-static/resources/view/homeproxy/client.js:904
+#: htdocs/luci-static/resources/view/homeproxy/client.js:555
+#: htdocs/luci-static/resources/view/homeproxy/client.js:935
#: htdocs/luci-static/resources/view/homeproxy/node.js:480
#: htdocs/luci-static/resources/view/homeproxy/node.js:891
#: htdocs/luci-static/resources/view/homeproxy/server.js:222
@@ -1659,37 +1661,37 @@ msgid ""
"default in v2ray and cannot be disabled)."
msgstr "协议参数。 如启用会随机浪费流量(在 v2ray 中默认启用并且无法禁用)。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1243
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1274
msgid "Proxy Domain List"
msgstr "代理域名列表"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1198
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1227
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1229
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1258
msgid "Proxy IPv4 IP-s"
msgstr "代理 IPv4 地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1201
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1230
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1232
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1261
msgid "Proxy IPv6 IP-s"
msgstr "代理 IPv6 地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1204
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1235
msgid "Proxy MAC-s"
msgstr "代理 MAC 地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1185
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1216
msgid "Proxy all except listed"
msgstr "仅允许列表外"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1182
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1213
msgid "Proxy filter mode"
msgstr "代理过滤模式"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1184
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1215
msgid "Proxy listed only"
msgstr "仅允许列表内"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:255
+#: htdocs/luci-static/resources/view/homeproxy/client.js:263
msgid "Proxy mode"
msgstr "代理模式"
@@ -1697,8 +1699,8 @@ msgstr "代理模式"
msgid "Proxy protocol"
msgstr "代理协议"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:553
-#: htdocs/luci-static/resources/view/homeproxy/client.js:909
+#: htdocs/luci-static/resources/view/homeproxy/client.js:561
+#: htdocs/luci-static/resources/view/homeproxy/client.js:940
#: htdocs/luci-static/resources/view/homeproxy/node.js:647
#: htdocs/luci-static/resources/view/homeproxy/node.js:717
#: htdocs/luci-static/resources/view/homeproxy/server.js:399
@@ -1724,16 +1726,16 @@ msgstr "QUIC 最大双向并发流"
msgid "QUIC stream receive window"
msgstr "QUIC 流接收窗口"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:895
+#: htdocs/luci-static/resources/view/homeproxy/client.js:926
msgid "Query type"
msgstr "请求类型"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:554
-#: htdocs/luci-static/resources/view/homeproxy/client.js:910
+#: htdocs/luci-static/resources/view/homeproxy/client.js:562
+#: htdocs/luci-static/resources/view/homeproxy/client.js:941
msgid "RDP"
msgstr "RDP"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:745
+#: htdocs/luci-static/resources/view/homeproxy/client.js:752
msgid "RDRC timeout"
msgstr "RDRC 超时"
@@ -1764,23 +1766,23 @@ msgstr "运行中"
msgid "Random version will be used if empty."
msgstr "如留空,则使用随机版本。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:429
+#: htdocs/luci-static/resources/view/homeproxy/client.js:437
msgid "Recursive outbound detected!"
msgstr "检测到递归出站!"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:804
+#: htdocs/luci-static/resources/view/homeproxy/client.js:834
msgid "Recursive resolver detected!"
msgstr "检测到递归解析器!"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:256
+#: htdocs/luci-static/resources/view/homeproxy/client.js:264
msgid "Redirect TCP"
msgstr "Redirect TCP"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:258
+#: htdocs/luci-static/resources/view/homeproxy/client.js:266
msgid "Redirect TCP + TProxy UDP"
msgstr "Redirect TCP + TProxy UDP"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:260
+#: htdocs/luci-static/resources/view/homeproxy/client.js:268
msgid "Redirect TCP + Tun UDP"
msgstr "Redirect TCP + Tun UDP"
@@ -1792,7 +1794,7 @@ msgstr "每 %s 秒刷新。"
msgid "Region ID"
msgstr "区域 ID"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1098
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1129
msgid "Remote"
msgstr "远程"
@@ -1808,7 +1810,7 @@ msgstr "移除所有订阅节点"
msgid "Reserved field bytes"
msgstr "保留字段字节"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:817
+#: htdocs/luci-static/resources/view/homeproxy/client.js:847
msgid "Resolve strategy"
msgstr "解析策略"
@@ -1816,19 +1818,19 @@ msgstr "解析策略"
msgid "Resources management"
msgstr "资源管理"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1060
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1091
msgid "Rewrite TTL"
msgstr "重写 TTL"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1061
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1092
msgid "Rewrite TTL in DNS responses."
msgstr "在 DNS 响应中重写 TTL。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:356
+#: htdocs/luci-static/resources/view/homeproxy/client.js:364
msgid "Routing Nodes"
msgstr "路由节点"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:498
+#: htdocs/luci-static/resources/view/homeproxy/client.js:506
msgid "Routing Rules"
msgstr "路由规则"
@@ -1836,55 +1838,58 @@ msgstr "路由规则"
msgid "Routing Settings"
msgstr "路由设置"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:222
+#: htdocs/luci-static/resources/view/homeproxy/client.js:230
msgid "Routing mode"
msgstr "路由模式"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:365
+#: htdocs/luci-static/resources/view/homeproxy/client.js:373
msgid "Routing node"
msgstr "路由节点"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:235
+#: htdocs/luci-static/resources/view/homeproxy/client.js:243
msgid "Routing ports"
msgstr "路由端口"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:507
+#: htdocs/luci-static/resources/view/homeproxy/client.js:515
msgid "Routing rule"
msgstr "路由规则"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:649
-#: htdocs/luci-static/resources/view/homeproxy/client.js:988
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1073
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1082
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1104
+msgid "Rule Set"
+msgstr "规则集"
+
+#: htdocs/luci-static/resources/view/homeproxy/client.js:657
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1019
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1113
msgid "Rule set"
msgstr "规则集"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1003
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1034
msgid "Rule set IP CIDR as source IP"
msgstr "规则集 IP CIDR 作为源 IP"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1115
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1146
msgid "Rule set URL"
msgstr "规则集 URL"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:514
-#: htdocs/luci-static/resources/view/homeproxy/client.js:863
+#: htdocs/luci-static/resources/view/homeproxy/client.js:522
+#: htdocs/luci-static/resources/view/homeproxy/client.js:894
msgid "SRC-IP fields"
msgstr "源 IP 字段"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:515
-#: htdocs/luci-static/resources/view/homeproxy/client.js:864
+#: htdocs/luci-static/resources/view/homeproxy/client.js:523
+#: htdocs/luci-static/resources/view/homeproxy/client.js:895
msgid "SRC-Port fields"
msgstr "源端口字段"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:555
-#: htdocs/luci-static/resources/view/homeproxy/client.js:911
+#: htdocs/luci-static/resources/view/homeproxy/client.js:563
+#: htdocs/luci-static/resources/view/homeproxy/client.js:942
#: htdocs/luci-static/resources/view/homeproxy/node.js:403
msgid "SSH"
msgstr "SSH"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:556
-#: htdocs/luci-static/resources/view/homeproxy/client.js:912
+#: htdocs/luci-static/resources/view/homeproxy/client.js:564
+#: htdocs/luci-static/resources/view/homeproxy/client.js:943
msgid "STUN"
msgstr "STUN"
@@ -1892,7 +1897,7 @@ msgstr "STUN"
msgid "SUoT version"
msgstr "SUoT 版本"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:564
+#: htdocs/luci-static/resources/view/homeproxy/client.js:572
msgid "Safari / Apple Network API"
msgstr "Safari / Apple Network API"
@@ -1913,7 +1918,7 @@ msgstr "保存当前设置"
msgid "Save subscriptions settings"
msgstr "保存订阅设置"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1036
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1067
#: htdocs/luci-static/resources/view/homeproxy/server.js:129
msgid "Server"
msgstr "服务器"
@@ -1949,12 +1954,12 @@ msgstr "ShadowTLS 版本"
msgid "Shadowsocks"
msgstr "Shadowsocks"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:560
+#: htdocs/luci-static/resources/view/homeproxy/client.js:568
msgid "Sniffed client type (QUIC client type or SSH client name)."
msgstr "嗅探到的客户端类型(QUIC 客户端类型或 SSH 客户端名称)。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:548
-#: htdocs/luci-static/resources/view/homeproxy/client.js:905
+#: htdocs/luci-static/resources/view/homeproxy/client.js:556
+#: htdocs/luci-static/resources/view/homeproxy/client.js:936
msgid ""
"Sniffed protocol, see Sniff for details."
@@ -1983,22 +1988,22 @@ msgstr "Socks4A"
msgid "Socks5"
msgstr "Socks5"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:591
-#: htdocs/luci-static/resources/view/homeproxy/client.js:942
+#: htdocs/luci-static/resources/view/homeproxy/client.js:599
+#: htdocs/luci-static/resources/view/homeproxy/client.js:973
msgid "Source IP CIDR"
msgstr "源 IP CIDR"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1104
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1135
msgid "Source file"
msgstr "源文件"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:613
-#: htdocs/luci-static/resources/view/homeproxy/client.js:962
+#: htdocs/luci-static/resources/view/homeproxy/client.js:621
+#: htdocs/luci-static/resources/view/homeproxy/client.js:993
msgid "Source port"
msgstr "源端口"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:618
-#: htdocs/luci-static/resources/view/homeproxy/client.js:967
+#: htdocs/luci-static/resources/view/homeproxy/client.js:626
+#: htdocs/luci-static/resources/view/homeproxy/client.js:998
msgid "Source port range"
msgstr "源端口范围"
@@ -2035,17 +2040,17 @@ msgstr ""
"指定发送 PING 帧后,在指定的超时时间(单位:秒)内必须接收到响应。
如果在"
"指定的超时时间内没有收到 PING 帧的响应,则连接将关闭。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:236
+#: htdocs/luci-static/resources/view/homeproxy/client.js:244
msgid ""
"Specify target ports to be proxied. Multiple ports must be separated by "
"commas."
msgstr "指定需要被代理的目标端口。多个端口必须用逗号隔开。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:739
+#: htdocs/luci-static/resources/view/homeproxy/client.js:747
msgid "Store RDRC"
msgstr "存储 RDRC"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:740
+#: htdocs/luci-static/resources/view/homeproxy/client.js:748
msgid ""
"Store rejected DNS response cache.
The check results of Address "
"filter DNS rule items
will be cached until expiration."
@@ -2087,18 +2092,23 @@ msgstr ""
"支持 Hysteria、Shadowsocks、Trojan、v2rayN(VMess)和 XTLS(VLESS)在线配置交"
"付标准。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:290
+#: htdocs/luci-static/resources/view/homeproxy/client.js:159
+msgid ""
+"Support UDP, TCP, DoH, DoT, DoQ. TCP protocol will be used if not specified."
+msgstr "支持 UDP、TCP、DoH、DoT、DoQ。如未指定则使用 TCP 协议。"
+
+#: htdocs/luci-static/resources/view/homeproxy/client.js:298
msgid "System"
msgstr "系统"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:710
-#: htdocs/luci-static/resources/view/homeproxy/client.js:787
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1043
+#: htdocs/luci-static/resources/view/homeproxy/client.js:718
+#: htdocs/luci-static/resources/view/homeproxy/client.js:817
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1074
msgid "System DNS"
msgstr "系统 DNS"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:570
-#: htdocs/luci-static/resources/view/homeproxy/client.js:900
+#: htdocs/luci-static/resources/view/homeproxy/client.js:578
+#: htdocs/luci-static/resources/view/homeproxy/client.js:931
#: htdocs/luci-static/resources/view/homeproxy/server.js:816
msgid "TCP"
msgstr "TCP"
@@ -2108,16 +2118,16 @@ msgstr "TCP"
msgid "TCP fast open"
msgstr "TCP 快速打开"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:284
+#: htdocs/luci-static/resources/view/homeproxy/client.js:292
msgid "TCP/IP stack"
msgstr "TCP/IP 协议栈"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:285
+#: htdocs/luci-static/resources/view/homeproxy/client.js:293
msgid "TCP/IP stack."
msgstr "TCP/IP 协议栈。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:557
-#: htdocs/luci-static/resources/view/homeproxy/client.js:913
+#: htdocs/luci-static/resources/view/homeproxy/client.js:565
+#: htdocs/luci-static/resources/view/homeproxy/client.js:944
#: htdocs/luci-static/resources/view/homeproxy/node.js:944
#: htdocs/luci-static/resources/view/homeproxy/server.js:529
msgid "TLS"
@@ -2138,7 +2148,7 @@ msgstr "TLS SNI"
msgid "TLS is not enforced. If TLS is not configured, plain HTTP 1.1 is used."
msgstr "不强制执行 TLS。如未配置 TLS,将使用纯 HTTP 1.1。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:780
+#: htdocs/luci-static/resources/view/homeproxy/client.js:810
msgid ""
"Tag of a another server to resolve the domain name in the address. Required "
"if address contains domain."
@@ -2146,19 +2156,19 @@ msgstr ""
"用于解析本 DNS 服务器的域名的另一个 DNS 服务器的标签。如果服务器地址包括域名"
"则必须。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:823
+#: htdocs/luci-static/resources/view/homeproxy/client.js:854
msgid "Tag of an outbound for connecting to the dns server."
msgstr "用于连接到 DNS 服务器的出站标签。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1138
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1169
msgid "Tag of the outbound to download rule set."
msgstr "用于下载规则集的出站标签。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1037
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1068
msgid "Tag of the target dns server."
msgstr "目标 DNS 服务器标签。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:675
+#: htdocs/luci-static/resources/view/homeproxy/client.js:683
msgid "Tag of the target outbound."
msgstr "目标出站标签。"
@@ -2168,23 +2178,23 @@ msgid ""
msgstr "让客户端使用 BBR 流控算法。"
#: htdocs/luci-static/resources/view/homeproxy/client.js:166
-#: htdocs/luci-static/resources/view/homeproxy/client.js:189
+#: htdocs/luci-static/resources/view/homeproxy/client.js:201
msgid "Tencent Public DNS (119.29.29.29)"
msgstr "腾讯公共 DNS(119.29.29.29)"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:444
+#: htdocs/luci-static/resources/view/homeproxy/client.js:452
msgid "Test URL"
msgstr "测试 URL"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:463
+#: htdocs/luci-static/resources/view/homeproxy/client.js:471
msgid "Test interval"
msgstr "测试间隔"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:470
+#: htdocs/luci-static/resources/view/homeproxy/client.js:478
msgid "Test interval must be less or equal than idle timeout."
msgstr "测试间隔时间必须小于或等于空闲超时时间。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:478
+#: htdocs/luci-static/resources/view/homeproxy/client.js:486
msgid "Test tolerance"
msgstr "测试容差"
@@ -2192,7 +2202,7 @@ msgstr "测试容差"
msgid "The ACME CA provider to use."
msgstr "使用的 ACME CA 颁发机构。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:700
+#: htdocs/luci-static/resources/view/homeproxy/client.js:708
msgid "The DNS strategy for resolving the domain name in the address."
msgstr "解析域名的默认策略。"
@@ -2206,7 +2216,7 @@ msgstr "用于接收数据的 QUIC 连接级流控制窗口。"
msgid "The QUIC stream-level flow control window for receiving data."
msgstr "用于接收数据的 QUIC 流级流控制窗口。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:445
+#: htdocs/luci-static/resources/view/homeproxy/client.js:453
msgid ""
"The URL to test. https://www.gstatic.com/generate_204
will be "
"used if empty."
@@ -2214,9 +2224,10 @@ msgstr ""
"用于测试的 URL。如留空,默认为 https://www.gstatic.com/generate_204"
"code>。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:776
-msgid "The address of the dns server. Support UDP, TCP, DoT, DoH and RCode."
-msgstr "DNS 服务器的地址。支持 UDP、TCP、DoT、DoH 和 RCode。"
+#: htdocs/luci-static/resources/view/homeproxy/client.js:783
+msgid ""
+"The address of the dns server. Support UDP, TCP, DoH, DoT, DoQ and RCode."
+msgstr "DNS 服务器的地址。支持 UDP、TCP、DoH、DoT、DoQ 和 RCode。"
#: htdocs/luci-static/resources/view/homeproxy/server.js:677
msgid ""
@@ -2233,7 +2244,7 @@ msgid ""
msgstr ""
"用于 ACME TLS-ALPN 质询的备用端口; 系统必须将 443 转发到此端口以使质询成功。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:528
+#: htdocs/luci-static/resources/view/homeproxy/client.js:536
msgid ""
"The default rule uses the following matching logic:
(domain || "
"domain_suffix || domain_keyword || domain_regex || ip_cidr || "
@@ -2250,7 +2261,7 @@ msgstr ""
"source_port_range)
&&
其他字段
。此外,包含的所有规则"
"集会被合并而不是独立生效。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:877
+#: htdocs/luci-static/resources/view/homeproxy/client.js:908
msgid ""
"The default rule uses the following matching logic:
(domain || "
"domain_suffix || domain_keyword || domain_regex)
&&
(port "
@@ -2265,7 +2276,12 @@ msgstr ""
">(source_port || source_port_range)
&&
其他字段"
"code>。此外,包含的所有规则集会被合并而不是独立生效。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:812
+#: htdocs/luci-static/resources/view/homeproxy/client.js:197
+msgid ""
+"The dns server for resolving China domains. Support UDP, TCP, DoH, DoT, DoQ."
+msgstr "用于解析国内域名的 DNS 服务器。支持 UDP、TCP、DoH、DoT、DoQ。"
+
+#: htdocs/luci-static/resources/view/homeproxy/client.js:842
msgid "The domain strategy for resolving the domain name in the address."
msgstr "用于解析本 DNS 服务器的域名的策略。"
@@ -2282,7 +2298,7 @@ msgid ""
"account."
msgstr "创建或选择现有 ACME 服务器帐户时使用的电子邮件地址。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:485
+#: htdocs/luci-static/resources/view/homeproxy/client.js:493
msgid "The idle timeout in seconds. 1800
will be used if empty."
msgstr "空闲超时时间(单位:秒)。如留空,默认为 1800
。"
@@ -2311,7 +2327,7 @@ msgstr "可接受的最低 TLS 版本。"
msgid "The modern OpenWrt proxy platform for ARM64/AMD64."
msgstr "为 ARM64/AMD64 设计的现代 OpenWrt 代理平台。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:395
+#: htdocs/luci-static/resources/view/homeproxy/client.js:403
msgid "The network interface to bind to."
msgstr "绑定到的网络接口。"
@@ -2337,17 +2353,17 @@ msgstr "服务端私钥,需要 PEM 格式。"
msgid "The server public key, in PEM format."
msgstr "服务端公钥,需要 PEM 格式。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:402
+#: htdocs/luci-static/resources/view/homeproxy/client.js:410
msgid ""
"The tag of the upstream outbound.
Other dial fields will be ignored when "
"enabled."
msgstr "上游出站的标签。
启用时,其他拨号字段将被忽略。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:464
+#: htdocs/luci-static/resources/view/homeproxy/client.js:472
msgid "The test interval in seconds. 180
will be used if empty."
msgstr "测试间隔时间(单位:秒)。如留空,默认为 180
。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:479
+#: htdocs/luci-static/resources/view/homeproxy/client.js:487
msgid ""
"The test tolerance in milliseconds. 50
will be used if empty."
msgstr "测试容差时间(单位:毫秒)。如留空,默认为 50
。"
@@ -2379,14 +2395,15 @@ msgstr ""
"UDP 中继模式。"
#: htdocs/luci-static/resources/view/homeproxy/client.js:167
-#: htdocs/luci-static/resources/view/homeproxy/client.js:190
+#: htdocs/luci-static/resources/view/homeproxy/client.js:202
msgid "ThreatBook Public DNS (117.50.10.10)"
msgstr "微步在线公共 DNS(117.50.10.10)"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:746
+#: htdocs/luci-static/resources/view/homeproxy/client.js:753
msgid ""
-"Timeout of rejected DNS response cache. 7d
is used by default."
-msgstr "被拒绝的 DNS 响应缓存超时。默认时长 7d
。"
+"Timeout of rejected DNS response cache in seconds. 604800 (7d)
"
+"is used by default."
+msgstr "被拒绝的 DNS 响应缓存超时时间(单位:秒)。默认为 604800(7 天)
。"
#: htdocs/luci-static/resources/view/homeproxy/server.js:485
msgid ""
@@ -2395,7 +2412,7 @@ msgid ""
msgstr ""
"要与 Xray-core 兼容,请将其设置为 Sec-WebSocket-Protocol
。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:263
+#: htdocs/luci-static/resources/view/homeproxy/client.js:271
msgid ""
"To enable Tun support, you need to install ip-full
and "
"kmod-tun
"
@@ -2417,18 +2434,18 @@ msgstr "Trojan"
msgid "Tuic"
msgstr "Tuic"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:261
+#: htdocs/luci-static/resources/view/homeproxy/client.js:269
msgid "Tun TCP/UDP"
msgstr "Tun TCP/UDP"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1096
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1127
#: htdocs/luci-static/resources/view/homeproxy/node.js:393
#: htdocs/luci-static/resources/view/homeproxy/server.js:144
msgid "Type"
msgstr "类型"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:571
-#: htdocs/luci-static/resources/view/homeproxy/client.js:901
+#: htdocs/luci-static/resources/view/homeproxy/client.js:579
+#: htdocs/luci-static/resources/view/homeproxy/client.js:932
#: htdocs/luci-static/resources/view/homeproxy/server.js:817
msgid "UDP"
msgstr "UDP"
@@ -2438,7 +2455,7 @@ msgstr "UDP"
msgid "UDP Fragment"
msgstr "UDP 分片"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:312
+#: htdocs/luci-static/resources/view/homeproxy/client.js:320
#: htdocs/luci-static/resources/view/homeproxy/server.js:798
msgid "UDP NAT expiration time"
msgstr "UDP NAT 过期时间"
@@ -2459,11 +2476,11 @@ msgstr "UDP 包中继模式。"
msgid "UDP relay mode"
msgstr "UDP 中继模式"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:381
+#: htdocs/luci-static/resources/view/homeproxy/client.js:389
msgid "URLTest"
msgstr "URLTest"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:437
+#: htdocs/luci-static/resources/view/homeproxy/client.js:445
msgid "URLTest nodes"
msgstr "URLTest 节点"
@@ -2492,11 +2509,11 @@ msgstr "更新 %s 个订阅"
msgid "Update failed."
msgstr "更新失败。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1154
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1185
msgid "Update interval"
msgstr "更新间隔"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1155
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1186
msgid "Update interval of rule set.
1d
will be used if empty."
msgstr "规则集更新间隔。
如留空,默认为 1d
。"
@@ -2557,8 +2574,8 @@ msgid ""
"given."
msgstr "用于验证返回证书上的主机名。如允许不安全连接,此配置无效。"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:645
-#: htdocs/luci-static/resources/view/homeproxy/client.js:984
+#: htdocs/luci-static/resources/view/homeproxy/client.js:653
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1015
msgid "User"
msgstr "用户"
@@ -2582,11 +2599,11 @@ msgid "VMess"
msgstr "VMess"
#: htdocs/luci-static/resources/view/homeproxy/client.js:160
-#: htdocs/luci-static/resources/view/homeproxy/client.js:186
+#: htdocs/luci-static/resources/view/homeproxy/client.js:198
msgid "WAN DNS (read from interface)"
msgstr "WAN DNS(从接口获取)"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1225
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1256
msgid "WAN IP Policy"
msgstr "WAN IP 策略"
@@ -2624,10 +2641,6 @@ msgstr "在连接头中写入代理协议。"
msgid "Xudp (Xray-core)"
msgstr "Xudp (Xray-core)"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:199
-msgid "You can only have two servers set at maximum."
-msgstr "您最多只能设置两个服务器。"
-
#: htdocs/luci-static/resources/homeproxy.js:253
msgid "Your %s was successfully uploaded. Size: %sB."
msgstr "您的 %s 已成功上传。大小:%sB。"
@@ -2666,14 +2679,16 @@ msgstr "gRPC 允许无活动连接"
msgid "gRPC service name"
msgstr "gRPC 服务名称"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:288
+#: htdocs/luci-static/resources/view/homeproxy/client.js:296
msgid "gVisor"
msgstr "gVisor"
#: htdocs/luci-static/resources/homeproxy.js:281
#: htdocs/luci-static/resources/homeproxy.js:301
-#: htdocs/luci-static/resources/view/homeproxy/client.js:176
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1119
+#: htdocs/luci-static/resources/view/homeproxy/client.js:174
+#: htdocs/luci-static/resources/view/homeproxy/client.js:209
+#: htdocs/luci-static/resources/view/homeproxy/client.js:788
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1150
#: htdocs/luci-static/resources/view/homeproxy/node.js:452
#: htdocs/luci-static/resources/view/homeproxy/node.js:1087
#: htdocs/luci-static/resources/view/homeproxy/server.js:213
@@ -2699,7 +2714,7 @@ msgstr "通过"
msgid "private key"
msgstr "私钥"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:563
+#: htdocs/luci-static/resources/view/homeproxy/client.js:571
msgid "quic-go / uquic chrome"
msgstr "quic-go / uquic chrome"
@@ -2751,29 +2766,30 @@ msgstr "v2"
msgid "v3"
msgstr "v3"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:178
-msgid "valid IP address"
-msgstr "有效 IP 地址"
+#: htdocs/luci-static/resources/view/homeproxy/client.js:186
+#: htdocs/luci-static/resources/view/homeproxy/client.js:190
+#: htdocs/luci-static/resources/view/homeproxy/client.js:220
+#: htdocs/luci-static/resources/view/homeproxy/client.js:224
+#: htdocs/luci-static/resources/view/homeproxy/client.js:799
+#: htdocs/luci-static/resources/view/homeproxy/client.js:803
+msgid "valid DNS server address"
+msgstr "有效 DNS 服务器地址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:451
-#: htdocs/luci-static/resources/view/homeproxy/client.js:454
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1124
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1127
+#: htdocs/luci-static/resources/view/homeproxy/client.js:459
+#: htdocs/luci-static/resources/view/homeproxy/client.js:462
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1155
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1158
#: htdocs/luci-static/resources/view/homeproxy/node.js:1316
#: htdocs/luci-static/resources/view/homeproxy/node.js:1319
msgid "valid URL"
msgstr "有效网址"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:206
-msgid "valid address#port"
-msgstr "有效 地址#端口"
-
#: htdocs/luci-static/resources/homeproxy.js:265
msgid "valid base64 key with %d characters"
msgstr "包含 %d 个字符的有效 base64 密钥"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1265
-#: htdocs/luci-static/resources/view/homeproxy/client.js:1294
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1296
+#: htdocs/luci-static/resources/view/homeproxy/client.js:1325
msgid "valid hostname"
msgstr "有效主机名"
@@ -2781,7 +2797,7 @@ msgstr "有效主机名"
msgid "valid port range (port1:port2)"
msgstr "有效端口范围(port1:port2)"
-#: htdocs/luci-static/resources/view/homeproxy/client.js:245
+#: htdocs/luci-static/resources/view/homeproxy/client.js:253
msgid "valid port value"
msgstr "有效端口值"
diff --git a/luci-app-homeproxy/root/etc/config/homeproxy b/luci-app-homeproxy/root/etc/config/homeproxy
index 19549eafb..03323534f 100644
--- a/luci-app-homeproxy/root/etc/config/homeproxy
+++ b/luci-app-homeproxy/root/etc/config/homeproxy
@@ -6,7 +6,6 @@ config homeproxy 'infra'
option redirect_port '5331'
option tproxy_port '5332'
option dns_port '5333'
- option china_dns_port '5334'
option udp_timeout ''
option tun_name 'singtun0'
option tun_addr4 '172.19.0.1/30'
diff --git a/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc b/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc
index 3716a0d86..74e880897 100755
--- a/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc
+++ b/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc
@@ -30,7 +30,6 @@ uci.load(uciconfig);
const uciinfra = 'infra',
ucimain = 'config',
- uciexp = 'experimental',
ucicontrol = 'control';
const ucidnssetting = 'dns',
@@ -53,8 +52,9 @@ if (!wan_dns)
const dns_port = uci.get(uciconfig, uciinfra, 'dns_port') || '5333';
let main_node, main_udp_node, dedicated_udp_node, default_outbound, domain_strategy, sniff_override = '1',
- dns_server, dns_default_strategy, dns_default_server, dns_disable_cache, dns_disable_cache_expire,
- dns_independent_cache, dns_client_subnet, direct_domain_list, proxy_domain_list;
+ dns_server, china_dns_server, dns_default_strategy, dns_default_server, dns_disable_cache,
+ dns_disable_cache_expire, dns_independent_cache, dns_client_subnet, cache_file_store_rdrc,
+ cache_file_rdrc_timeout, direct_domain_list, proxy_domain_list;
if (routing_mode !== 'custom') {
main_node = uci.get(uciconfig, ucimain, 'main_node') || 'nil';
@@ -65,6 +65,12 @@ if (routing_mode !== 'custom') {
if (isEmpty(dns_server) || dns_server === 'wan')
dns_server = wan_dns;
+ if (routing_mode === 'bypass_mainland_china') {
+ china_dns_server = uci.get(uciconfig, ucimain, 'china_dns_server');
+ if (isEmpty(china_dns_server) || type(china_dns_server) !== 'string' || china_dns_server === 'wan')
+ china_dns_server = wan_dns;
+ }
+
direct_domain_list = trim(readfile(HP_DIR + '/resources/direct_list.txt'));
if (direct_domain_list)
direct_domain_list = split(direct_domain_list, /[\r\n]/);
@@ -80,6 +86,8 @@ if (routing_mode !== 'custom') {
dns_disable_cache_expire = uci.get(uciconfig, ucidnssetting, 'disable_cache_expire');
dns_independent_cache = uci.get(uciconfig, ucidnssetting, 'independent_cache');
dns_client_subnet = uci.get(uciconfig, ucidnssetting, 'client_subnet');
+ cache_file_store_rdrc = uci.get(uciconfig, ucidnssetting, 'cache_file_store_rdrc'),
+ cache_file_rdrc_timeout = uci.get(uciconfig, ucidnssetting, 'cache_file_rdrc_timeout');
/* Routing settings */
default_outbound = uci.get(uciconfig, uciroutingsetting, 'default_outbound') || 'nil';
@@ -91,9 +99,6 @@ const proxy_mode = uci.get(uciconfig, ucimain, 'proxy_mode') || 'redirect_tproxy
ipv6_support = uci.get(uciconfig, ucimain, 'ipv6_support') || '0',
default_interface = uci.get(uciconfig, ucicontrol, 'bind_interface');
-const cache_file_store_rdrc = uci.get(uciconfig, uciexp, 'cache_file_store_rdrc'),
- cache_file_rdrc_timeout = uci.get(uciconfig, uciexp, 'cache_file_rdrc_timeout');
-
const mixed_port = uci.get(uciconfig, uciinfra, 'mixed_port') || '5330';
let self_mark, redirect_port, tproxy_port,
tun_name, tun_addr4, tun_addr6, tun_mtu, tun_gso,
@@ -367,22 +372,27 @@ config.dns = {
};
if (!isEmpty(main_node)) {
- /* Avoid DNS loop */
- const main_node_addr = uci.get(uciconfig, main_node, 'address');
- if (validateHostname(main_node_addr))
- push(config.dns.rules, {
- domain: main_node_addr,
- server: 'default-dns'
+ /* Main DNS */
+ let default_final_dns = 'default-dns';
+ if (dns_server !== wan_dns) {
+ push(config.dns.servers, {
+ tag: 'main-dns',
+ address: !match(dns_server, /:\/\//) ? 'tcp://' + (validation('ip6addr', dns_server) ? `[${dns_server}]` : dns_server) : dns_server,
+ strategy: (ipv6_support !== '1') ? 'ipv4_only' : null,
+ address_resolver: 'default-dns',
+ address_strategy: (ipv6_support !== '1') ? 'ipv4_only' : null,
+ detour: 'main-out'
});
- if (dedicated_udp_node) {
- const main_udp_node_addr = uci.get(uciconfig, main_udp_node, 'address');
- if (validateHostname(main_udp_node_addr))
- push(config.dns.rules, {
- domain: main_udp_node_addr,
- server: 'default-dns'
- });
+ default_final_dns = 'main-dns';
}
+ config.dns.final = default_final_dns;
+
+ /* Avoid DNS loop */
+ push(config.dns.rules, {
+ outbound: 'any',
+ server: 'default-dns'
+ });
if (direct_domain_list)
push(config.dns.rules, {
@@ -398,23 +408,38 @@ if (!isEmpty(main_node)) {
server: 'block-dns'
});
- if (isEmpty(config.dns.rules))
- config.dns.rules = null;
-
- let default_final_dns = 'default-dns';
- /* Main DNS */
- if (dns_server !== wan_dns) {
+ if (routing_mode === 'bypass_mainland_china') {
push(config.dns.servers, {
- tag: 'main-dns',
- address: 'tcp://' + (validation('ip6addr', dns_server) ? `[${dns_server}]` : dns_server),
- strategy: (ipv6_support !== '1') ? 'ipv4_only' : null,
- detour: 'main-out'
+ tag: 'china-dns',
+ address: china_dns_server,
+ detour: 'direct-out'
});
- default_final_dns = 'main-dns';
- }
+ if (proxy_domain_list)
+ push(config.dns.rules, {
+ domain_keyword: proxy_domain_list,
+ server: default_final_dns
+ });
- config.dns.final = default_final_dns;
+ push(config.dns.rules, {
+ rule_set: 'geosite-cn',
+ server: 'china-dns'
+ });
+ push(config.dns.rules, {
+ type: 'logical',
+ mode: 'and',
+ rules: [
+ {
+ rule_set: 'geosite-noncn',
+ invert: true
+ },
+ {
+ rule_set: 'geoip-cn'
+ }
+ ],
+ server: 'china-dns'
+ });
+ }
} else if (!isEmpty(default_outbound)) {
/* DNS servers */
uci.foreach(uciconfig, ucidnsserver, (cfg) => {
@@ -460,7 +485,6 @@ if (!isEmpty(main_node)) {
process_path_regex: cfg.process_path_regex,
user: cfg.user,
rule_set: get_ruleset(cfg.rule_set),
- /* rule_set_ipcidr_match_source is deprecated in sing-box 1.10.0 */
rule_set_ip_cidr_match_source: (cfg.rule_set_ip_cidr_match_source === '1') || null,
invert: (cfg.invert === '1') || null,
outbound: get_outbound(cfg.outbound),
@@ -617,6 +641,7 @@ config.route = {
outbound: 'dns-out'
}
],
+ rule_set: [],
auto_detect_interface: isEmpty(default_interface) ? true : null,
default_interface: default_interface
};
@@ -638,6 +663,31 @@ if (!isEmpty(main_node)) {
});
config.route.final = 'main-out';
+
+ /* Rule set */
+ if (routing_mode === 'bypass_mainland_china') {
+ push(config.route.rule_set, {
+ type: 'remote',
+ tag: 'geoip-cn',
+ format: 'binary',
+ url: 'https://github.com/1715173329/IPCIDR-CHINA/raw/rule-set/cn.srs',
+ download_detour: 'main-out'
+ });
+ push(config.route.rule_set, {
+ type: 'remote',
+ tag: 'geosite-cn',
+ format: 'binary',
+ url: 'https://github.com/1715173329/sing-geosite/raw/rule-set-unstable/geosite-geolocation-cn.srs',
+ download_detour: 'main-out'
+ });
+ push(config.route.rule_set, {
+ type: 'remote',
+ tag: 'geosite-noncn',
+ format: 'binary',
+ url: 'https://github.com/1715173329/sing-geosite/raw/rule-set-unstable/geosite-geolocation-!cn.srs',
+ download_detour: 'main-out'
+ });
+ }
} else if (!isEmpty(default_outbound)) {
uci.foreach(uciconfig, uciroutingrule, (cfg) => {
if (cfg.enabled !== '1')
@@ -673,11 +723,8 @@ if (!isEmpty(main_node)) {
});
config.route.final = get_outbound(default_outbound);
-};
-/* Rule set */
-if (routing_mode === 'custom') {
- config.route.rule_set = [];
+ /* Rule set */
uci.foreach(uciconfig, uciruleset, (cfg) => {
if (cfg.enabled !== '1')
return null;
@@ -696,13 +743,13 @@ if (routing_mode === 'custom') {
/* Routing rules end */
/* Experimental start */
-if (routing_mode === 'custom') {
+if (routing_mode in ['bypass_mainland_china', 'custom']) {
config.experimental = {
cache_file: {
enabled: true,
path: RUN_DIR + '/cache.db',
store_rdrc: (cache_file_store_rdrc === '1') || null,
- rdrc_timeout: cache_file_rdrc_timeout
+ rdrc_timeout: cache_file_rdrc_timeout ? (cache_file_rdrc_timeout + 's') : null,
}
};
}
diff --git a/luci-app-homeproxy/root/etc/init.d/homeproxy b/luci-app-homeproxy/root/etc/init.d/homeproxy
index d25a12e28..b6cecadd5 100755
--- a/luci-app-homeproxy/root/etc/init.d/homeproxy
+++ b/luci-app-homeproxy/root/etc/init.d/homeproxy
@@ -72,45 +72,28 @@ start_service() {
fi
# DNSMasq rules
- local ipv6_support
+ local ipv6_support dns_port
config_get_bool ipv6_support "config" "ipv6_support" "0"
- local dns_port china_dns_server china_dns_port
config_get dns_port "infra" "dns_port" "5333"
mkdir -p "$DNSMASQ_DIR"
echo -e "conf-dir=$DNSMASQ_DIR" > "$DNSMASQ_DIR/../dnsmasq-homeproxy.conf"
case "$routing_mode" in
- "gfwlist")
- [ "$ipv6_support" -eq "0" ] || local gfw_nftset_v6=",6#inet#fw4#homeproxy_gfw_list_v6"
- sed -r -e "s/(.*)/server=\/\1\/127.0.0.1#$dns_port\nnftset=\/\1\\/4#inet#fw4#homeproxy_gfw_list_v4$gfw_nftset_v6/g" \
- "$HP_DIR/resources/gfw_list.txt" > "$DNSMASQ_DIR/gfw_list.conf"
- ;;
- "bypass_mainland_china")
- config_get china_dns_server "config" "china_dns_server"
- config_get china_dns_port "infra" "china_dns_port" "5334"
-
- if [ -e "/usr/bin/chinadns-ng" ] && [ -n "$china_dns_server" ]; then
- cat <<-EOF >> "$DNSMASQ_DIR/redirect-dns.conf"
- no-poll
- no-resolv
- server=127.0.0.1#$china_dns_port
- EOF
- else
- china_dns_server=""
- sed -r -e "s/(.*)/server=\/\1\/127.0.0.1#$dns_port/g" \
- "$HP_DIR/resources/gfw_list.txt" > "$DNSMASQ_DIR/gfw_list.conf"
- fi
- ;;
- "proxy_mainland_china")
- sed -r -e "s/(.*)/server=\/\1\/127.0.0.1#$dns_port/g" \
- "$HP_DIR/resources/china_list.txt" > "$DNSMASQ_DIR/china_list.conf"
- ;;
- "custom"|"global")
+ "bypass_mainland_china"|"custom"|"global")
cat <<-EOF >> "$DNSMASQ_DIR/redirect-dns.conf"
no-poll
no-resolv
server=127.0.0.1#$dns_port
EOF
;;
+ "gfwlist")
+ [ "$ipv6_support" -eq "0" ] || local gfw_nftset_v6=",6#inet#fw4#homeproxy_gfw_list_v6"
+ sed -r -e "s/(.*)/server=\/\1\/127.0.0.1#$dns_port\nnftset=\/\1\\/4#inet#fw4#homeproxy_gfw_list_v4$gfw_nftset_v6/g" \
+ "$HP_DIR/resources/gfw_list.txt" > "$DNSMASQ_DIR/gfw_list.conf"
+ ;;
+ "proxy_mainland_china")
+ sed -r -e "s/(.*)/server=\/\1\/127.0.0.1#$dns_port/g" \
+ "$HP_DIR/resources/china_list.txt" > "$DNSMASQ_DIR/china_list.conf"
+ ;;
esac
if [ "$routing_mode" != "custom" ] && [ -s "$HP_DIR/resources/proxy_list.txt" ]; then
@@ -167,6 +150,7 @@ start_service() {
procd_add_jail "sing-box-c" log procfs
procd_add_jail_mount "$RUN_DIR/sing-box-c.json"
procd_add_jail_mount_rw "$RUN_DIR/sing-box-c.log"
+ procd_add_jail_mount_rw "$RUN_DIR/cache.db"
procd_add_jail_mount "$HP_DIR/certs/"
procd_add_jail_mount "/etc/ssl/"
procd_add_jail_mount "/etc/localtime"
@@ -183,53 +167,6 @@ start_service() {
procd_set_param respawn
procd_close_instance
-
- # chinadns-ng
- if [ -n "$china_dns_server" ]; then
- local wandns="$(ifstatus wan | jsonfilter -e '@["dns-server"][0]' || echo "119.29.29.29")"
- china_dns_server="${china_dns_server/wan/$wandns}"
- china_dns_server="${china_dns_server// /,}"
-
- for i in $(seq 1 "$(grep -c "processor" "/proc/cpuinfo")"); do
- procd_open_instance "chinadns-ng-$i"
-
- procd_set_param command "/usr/bin/chinadns-ng"
- procd_append_param command --bind-port "$china_dns_port"
- procd_append_param command --china-dns "$china_dns_server"
- procd_append_param command --trust-dns "127.0.0.1#$dns_port"
- procd_append_param command --ipset-name4 "inet@fw4@homeproxy_mainland_addr_v4"
- procd_append_param command --ipset-name6 "inet@fw4@homeproxy_mainland_addr_v6"
- procd_append_param command --chnlist-file "$HP_DIR/resources/china_list.txt"
- procd_append_param command --gfwlist-file "$HP_DIR/resources/gfw_list.txt"
- procd_append_param command --reuse-port
-
- if chinadns-ng --version | grep -q "target:"; then
- procd_append_param command --cache 10000
- procd_append_param command --cache-stale 3600
- procd_append_param command --verdict-cache 10000
- [ "$ipv6_support" -eq "1" ] || procd_append_param command --no-ipv6=ip:non_china
- else
- [ "$ipv6_support" -eq "1" ] || procd_append_param command --no-ipv6=tC
- fi
-
- if [ -x "/sbin/ujail" ]; then
- procd_add_jail "chinadns-ng" log
- procd_add_jail_mount "$HP_DIR/resources/china_list.txt"
- procd_add_jail_mount "$HP_DIR/resources/gfw_list.txt"
- procd_set_param capabilities "/etc/capabilities/homeproxy.json"
- procd_set_param no_new_privs 1
- procd_set_param user sing-box
- procd_set_param group sing-box
- fi
-
- procd_set_param limits core="unlimited"
- procd_set_param limits nofile="1000000 1000000"
- procd_set_param stderr 1
- procd_set_param respawn
-
- procd_close_instance
- done
- fi
fi
if [ "$server_enabled" = "1" ]; then
@@ -287,17 +224,13 @@ start_service() {
# Update permissions for ujail
if [ "$outbound_node" != "nil" ]; then
echo > "$RUN_DIR/sing-box-c.log"
- chown sing-box:sing-box "$RUN_DIR/sing-box-c.log"
- chown sing-box:sing-box "$RUN_DIR/sing-box-c.json"
chmod 0644 "$HP_DIR/resources/gfw_list.txt"
fi
if [ "$server_enabled" = "1" ]; then
echo > "$RUN_DIR/sing-box-s.log"
- chown sing-box:sing-box "$RUN_DIR/sing-box-s.log"
- chown sing-box:sing-box "$RUN_DIR/sing-box-s.json"
mkdir -p "$HP_DIR/certs"
- chown sing-box:sing-box "$HP_DIR/certs"
fi
+ chown -R sing-box:sing-box "$RUN_DIR"
# Setup firewall
utpl -S "$HP_DIR/scripts/firewall_pre.ut" > "$RUN_DIR/fw4_pre.nft"
diff --git a/luci-app-homeproxy/root/etc/uci-defaults/luci-homeproxy-migration b/luci-app-homeproxy/root/etc/uci-defaults/luci-homeproxy-migration
index 7b2d3f746..a03b72202 100644
--- a/luci-app-homeproxy/root/etc/uci-defaults/luci-homeproxy-migration
+++ b/luci-app-homeproxy/root/etc/uci-defaults/luci-homeproxy-migration
@@ -3,21 +3,24 @@
china_dns_server="$(uci -q get "homeproxy.config.china_dns_server")"
if [ "$china_dns_server" = "wan_114" ]; then
uci -q delete "homeproxy.config.china_dns_server"
- uci -q add_list "homeproxy.config.china_dns_server"="wan"
- uci -q add_list "homeproxy.config.china_dns_server"="114.114.114.114"
+ uci -q set "homeproxy.config.china_dns_server"="114.114.114.114"
elif echo "$china_dns_server" | grep -q ","; then
uci -q delete "homeproxy.config.china_dns_server"
- for dns in ${china_dns_server//,/ }; do
- uci -q add_list "homeproxy.config.china_dns_server"="$dns"
- done
+ uci -q set "homeproxy.config.china_dns_server"="${china_dns_server%%,*}"
+elif echo "$china_dns_server" | grep -q " "; then
+ uci -q delete "homeproxy.config.china_dns_server"
+ uci -q set "homeproxy.config.china_dns_server"="${china_dns_server%% *}"
fi
if [ "$(uci -q get homeproxy.config.routing_port)" = "all" ]; then
uci -q delete "homeproxy.config.routing_port"
fi
+[ -z "$(uci -q show homeproxy.experimental)" ] || uci -q delete "homeproxy.experimental"
+
[ -z "$(uci -q changes "homeproxy")" ] || uci -q commit "homeproxy"
sed -i "s/rule_set_ipcidr_match_source/rule_set_ip_cidr_match_source/g" "/etc/config/homeproxy"
+sed -i "/china_dns_port/d" "/etc/config/homeproxy"
exit 0
diff --git a/luci-app-homeproxy/root/usr/share/rpcd/ucode/luci.homeproxy b/luci-app-homeproxy/root/usr/share/rpcd/ucode/luci.homeproxy
index 28b94a6db..10a96896e 100644
--- a/luci-app-homeproxy/root/usr/share/rpcd/ucode/luci.homeproxy
+++ b/luci-app-homeproxy/root/usr/share/rpcd/ucode/luci.homeproxy
@@ -173,9 +173,6 @@ const methods = {
fd.close();
}
- features.hp_has_chinadns_ng = access('/usr/bin/chinadns-ng');
- if (features.hp_has_chinadns_ng)
- features.hp_has_chinadns_ng_v2 = (system('/usr/bin/chinadns-ng --version | grep -q "target:"') === 0);
features.hp_has_ip_full = access('/usr/libexec/ip-full');
features.hp_has_tcp_brutal = hasKernelModule('brutal.ko');
features.hp_has_tproxy = hasKernelModule('nft_tproxy.ko') || access('/etc/modules.d/nft-tproxy');