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。" -#: 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) &&
其他字段。此外,包含的所有规则集会被合并而不是独立生效。" -#: 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');