From dc1bbf8e9a4c93ed5a4cbe2b80e7e9da1f7ac7f3 Mon Sep 17 00:00:00 2001 From: kenzok8 Date: Wed, 12 Feb 2025 00:27:05 +0800 Subject: [PATCH] update 2025-02-12 00:27:05 --- luci-app-fchomo/Makefile | 2 +- luci-app-fchomo/docs/example/bypasscn.config | 2 +- luci-app-fchomo/docs/example/gfwlist.config | 2 +- .../htdocs/luci-static/resources/fchomo.js | 83 +- .../resources/view/fchomo/client.js | 14 +- .../resources/view/fchomo/global.js | 6 +- .../luci-static/resources/view/fchomo/node.js | 14 +- .../resources/view/fchomo/server.js | 73 +- luci-app-fchomo/po/templates/fchomo.pot | 713 ++++++++--------- luci-app-fchomo/po/zh_Hans/fchomo.po | 719 +++++++++--------- luci-app-fchomo/po/zh_Hant/fchomo.po | 719 +++++++++--------- luci-app-fchomo/root/etc/config/fchomo | 2 +- luci-app-fchomo/root/etc/init.d/fchomo | 6 +- .../uci-defaults/luci-app-fchomo-migration | 9 +- .../root/usr/share/fchomo/firewall_post.ut | 6 +- .../root/usr/share/fchomo/generate_client.uc | 8 +- .../root/usr/share/fchomo/generate_server.uc | 20 +- .../root/usr/share/rpcd/ucode/luci.fchomo | 31 + luci-app-oaf/luasrc/controller/appfilter.lua | 21 + .../luasrc/model/cbi/appfilter/advance.lua | 19 + .../luasrc/view/admin_network/advance.htm | 229 ++++++ .../luasrc/view/admin_network/time.htm | 21 +- .../root/etc/uci-defaults/94_feature_3.0 | 3 + mihomo/Makefile | 1 + oaf/src/af_client.c | 2 +- oaf/src/af_conntrack.c | 14 +- oaf/src/af_log.c | 24 + oaf/src/af_log.h | 2 + oaf/src/app_filter.c | 57 +- open-app-filter/Makefile | 1 + open-app-filter/files/appfilter.config | 3 + open-app-filter/files/hnat.sh | 33 + open-app-filter/files/oaf_rule | 11 +- open-app-filter/src/appfilter.h | 3 + open-app-filter/src/appfilter_ubus.c | 78 +- open-app-filter/src/main.c | 30 + 36 files changed, 1837 insertions(+), 1144 deletions(-) create mode 100755 luci-app-oaf/luasrc/model/cbi/appfilter/advance.lua create mode 100755 luci-app-oaf/luasrc/view/admin_network/advance.htm create mode 100644 open-app-filter/files/hnat.sh diff --git a/luci-app-fchomo/Makefile b/luci-app-fchomo/Makefile index 50c7339d5..9e02aa917 100644 --- a/luci-app-fchomo/Makefile +++ b/luci-app-fchomo/Makefile @@ -4,7 +4,7 @@ include $(TOPDIR)/rules.mk -LUCI_TITLE:=FullCombo Shark! supplies maximum customization on OpenWrt. +LUCI_TITLE:=FullCombo Shark! supplies maximum customization of mihomo on OpenWrt. LUCI_PKGARCH:=all LUCI_DEPENDS:= \ +mihomo \ diff --git a/luci-app-fchomo/docs/example/bypasscn.config b/luci-app-fchomo/docs/example/bypasscn.config index 98c0f14d0..a3ab75a68 100644 --- a/luci-app-fchomo/docs/example/bypasscn.config +++ b/luci-app-fchomo/docs/example/bypasscn.config @@ -52,7 +52,7 @@ config fchomo 'sniffer' list skip_domain 'Mijia Cloud' config fchomo 'dns' - option port '7853' + option dns_port '7853' option fallback_filter_geoip_code 'cn' list boot_server 'dns_223555' list bootnode_server 'dns_alidns' diff --git a/luci-app-fchomo/docs/example/gfwlist.config b/luci-app-fchomo/docs/example/gfwlist.config index 168bb12ec..55d472664 100644 --- a/luci-app-fchomo/docs/example/gfwlist.config +++ b/luci-app-fchomo/docs/example/gfwlist.config @@ -51,7 +51,7 @@ config fchomo 'sniffer' list skip_domain 'Mijia Cloud' config fchomo 'dns' - option port '7853' + option dns_port '7853' option fallback_filter_geoip_code 'cn' list boot_server 'dns_223555' list bootnode_server 'dns_alidns' diff --git a/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js b/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js index f5e9f3904..768f67162 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js @@ -68,6 +68,7 @@ const inbound_type = [ ['mixed', _('Mixed')], ['shadowsocks', _('Shadowsocks')], ['vmess', _('VMess')], + ['vless', _('VLESS')], ['tuic', _('TUIC')], ['hysteria2', _('Hysteria2')], //['tunnel', _('Tunnel')] @@ -243,6 +244,11 @@ const tls_client_fingerprints = [ ['random'] ]; +const vless_flow = [ + ['', _('None')], + ['xtls-rprx-vision'] +]; + /* Prototype */ const CBIDynamicList = form.DynamicList.extend({ __name__: 'CBI.DynamicList', @@ -270,7 +276,7 @@ const CBIDynamicList = form.DynamicList.extend({ const CBIGenValue = form.Value.extend({ __name__: 'CBI.GenValue', - renderWidget() { + renderWidget(/* ... */) { let node = form.Value.prototype.renderWidget.apply(this, arguments); if (!this.password) @@ -279,7 +285,7 @@ const CBIGenValue = form.Value.extend({ (node.querySelector('.control-group') || node).appendChild(E('button', { 'class': 'cbi-button cbi-button-add', 'title': _('Generate'), - 'click': ui.createHandlerFn(this, handleGenKey, this.option) + 'click': ui.createHandlerFn(this, handleGenKey, this.hm_asymmetric || this.option) }, [ _('Generate') ])); return node; @@ -750,35 +756,55 @@ function handleAdd(prefmt, ev, name) { function handleGenKey(option) { const section_id = this.section.section; const type = this.section.getOption('type').formvalue(section_id); - let widget = this.map.findElement('id', 'widget.cbid.fchomo.%s.%s'.format(section_id, option)); - let password, required_method; + const widget = L.bind(function(option) { + return this.map.findElement('id', 'widget.' + this.cbid(section_id).replace(/\.[^\.]+$/, '.') + option); + }, this); - if (option === 'uuid' || option.match(/_uuid/)) - required_method = 'uuid'; - else if (type === 'shadowsocks') - required_method = this.section.getOption('shadowsocks_chipher')?.formvalue(section_id); + const callMihomoGenerator = rpc.declare({ + object: 'luci.fchomo', + method: 'mihomo_generator', + params: ['type'], + expect: { '': {} } + }); - switch (required_method) { - /* NONE */ - case 'none': - password = ''; - break; - /* UUID */ - case 'uuid': - password = generateRand('uuid'); - break; - /* DEFAULT */ - default: - password = generateRand('hex', 16); - break; + if (typeof option === 'object') { + return callMihomoGenerator(option.type).then((ret) => { + if (ret.result) + for (let key in option.result) + widget(option.result[key]).value = ret.result[key]; + else + ui.addNotification(null, E('p', _('Failed to generate %s, error: %s.').format(type, ret.error))); + }); + } else { + let password, required_method; + + if (option === 'uuid' || option.match(/_uuid/)) + required_method = 'uuid'; + else if (type === 'shadowsocks') + required_method = this.section.getOption('shadowsocks_chipher')?.formvalue(section_id); + + switch (required_method) { + /* NONE */ + case 'none': + password = ''; + break; + /* UUID */ + case 'uuid': + password = generateRand('uuid'); + break; + /* DEFAULT */ + default: + password = generateRand('hex', 16); + break; + } + /* AEAD */ + (function(length) { + if (length && length > 0) + password = generateRand('base64', length); + }(shadowsocks_cipher_length[required_method])); + + return widget(option).value = password; } - /* AEAD */ - (function(length) { - if (length && length > 0) - password = generateRand('base64', length); - }(shadowsocks_cipher_length[required_method])); - - return widget.value = password; } function handleReload(instance, ev, section_id) { @@ -1154,6 +1180,7 @@ return baseclass.extend({ shadowsocks_cipher_length, stunserver, tls_client_fingerprints, + vless_flow, /* Prototype */ DynamicList: CBIDynamicList, diff --git a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js index 53c55fdf5..0d221c9c5 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js @@ -697,20 +697,20 @@ return view.extend({ so.default = so.disabled; so.modalonly = true; - // need deprecated + // Deprecated so = ss.taboption('field_override', widgets.DeviceSelect, 'interface_name', _('Bind interface'), _('Bind outbound interface.
') + - _('Priority: Proxy Node > Proxy Group > Global.') + '
' + - _('Option will soon be deprecated, please use the same option in proxy node.')); + _('Priority: Proxy Node > Global.') + '
' + + _('Option is deprecated, please use the same option in proxy node.')); so.multiple = false; so.noaliases = true; so.readonly = true; so.modalonly = true; - // need deprecated + // Deprecated so = ss.taboption('field_override', form.Value, 'routing_mark', _('Routing mark'), - _('Priority: Proxy Node > Proxy Group > Global.') + '
' + - _('Option will soon be deprecated, please use the same option in proxy node.')); + _('Priority: Proxy Node > Global.') + '
' + + _('Option is deprecated, please use the same option in proxy node.')); so.datatype = 'uinteger'; so.readonly = true; so.modalonly = true; @@ -891,7 +891,7 @@ return view.extend({ o = s.taboption('dns', form.SectionValue, '_dns', form.NamedSection, 'dns', 'fchomo', null); ss = o.subsection; - so = ss.option(form.Value, 'port', _('Listen port')); + so = ss.option(form.Value, 'dns_port', _('Listen port')); so.datatype = 'port' so.placeholder = '7853'; so.rmempty = false; diff --git a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js index abb3a17af..eebfa8feb 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js @@ -7,7 +7,6 @@ 'require uci'; 'require ui'; 'require view'; -'require dom'; 'require fchomo as hm'; 'require tools.firewall as fwtool'; @@ -468,6 +467,7 @@ return view.extend({ so.placeholder = '7892'; so.rmempty = false; + // Not required for v1.19.2+ so = ss.option(form.Value, 'tunnel_port', _('DNS port')); so.datatype = 'port'; so.placeholder = '7893'; @@ -687,7 +687,7 @@ return view.extend({ so = ss.taboption('interface', widgets.DeviceSelect, 'bind_interface', _('Bind interface'), _('Bind outbound traffic to specific interface. Leave empty to auto detect.
') + - _('Priority: Proxy Node > Proxy Group > Global.')); + _('Priority: Proxy Node > Global.')); so.multiple = false; so.noaliases = true; @@ -704,7 +704,7 @@ return view.extend({ so.rmempty = false; so = ss.taboption('interface', form.Value, 'self_mark', _('Routing mark'), - _('Priority: Proxy Node > Proxy Group > Global.')); + _('Priority: Proxy Node > Global.')); so.ucisection = 'config'; so.datatype = 'uinteger'; so.placeholder = '200'; diff --git a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js index 33c7dccdc..4fc914f50 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js @@ -292,8 +292,10 @@ return view.extend({ so.modalonly = true; so = ss.taboption('field_general', form.ListValue, 'vless_flow', _('Flow')); - so.value('', _('None')); - so.value('xtls-rprx-vision'); + so.default = hm.vless_flow[0][0]; + hm.vless_flow.forEach((res) => { + so.value.apply(so, res); + }) so.depends('type', 'vless'); so.modalonly = true; @@ -760,13 +762,13 @@ return view.extend({ so = ss.taboption('field_dial', widgets.DeviceSelect, 'interface_name', _('Bind interface'), _('Bind outbound interface.
') + - _('Priority: Proxy Node > Proxy Group > Global.')); + _('Priority: Proxy Node > Global.')); so.multiple = false; so.noaliases = true; so.modalonly = true; so = ss.taboption('field_dial', form.Value, 'routing_mark', _('Routing mark'), - _('Priority: Proxy Node > Proxy Group > Global.')); + _('Priority: Proxy Node > Global.')); so.datatype = 'uinteger'; so.modalonly = true; @@ -968,13 +970,13 @@ return view.extend({ so = ss.taboption('field_override', widgets.DeviceSelect, 'override_interface_name', _('Bind interface'), _('Bind outbound interface.
') + - _('Priority: Proxy Node > Proxy Group > Global.')); + _('Priority: Proxy Node > Global.')); so.multiple = false; so.noaliases = true; so.modalonly = true; so = ss.taboption('field_override', form.Value, 'override_routing_mark', _('Routing mark'), - _('Priority: Proxy Node > Proxy Group > Global.')); + _('Priority: Proxy Node > Global.')); so.datatype = 'uinteger'; so.modalonly = true; diff --git a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/server.js b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/server.js index a3da3ede0..54476089d 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/server.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/server.js @@ -202,11 +202,19 @@ return view.extend({ o.depends('type', 'tuic'); o.modalonly = true; - /* VMess fields */ + /* VMess / VLESS fields */ o = s.option(hm.GenValue, 'vmess_uuid', _('UUID')); o.rmempty = false; o.validate = L.bind(hm.validateUUID, o); - o.depends('type', 'vmess'); + o.depends({type: /^(vmess|vless)$/}); + o.modalonly = true; + + o = s.option(form.ListValue, 'vless_flow', _('Flow')); + o.default = hm.vless_flow[0][0]; + hm.vless_flow.forEach((res) => { + o.value.apply(o, res); + }) + o.depends('type', 'vless'); o.modalonly = true; o = s.option(form.Value, 'vmess_alterid', _('Alter ID'), @@ -223,20 +231,29 @@ return view.extend({ const type = this.section.getOption('type').formvalue(section_id); let tls = this.section.getUIElement(section_id, 'tls').node.querySelector('input'); let tls_alpn = this.section.getUIElement(section_id, 'tls_alpn'); + let tls_reality = this.section.getUIElement(section_id, 'tls_reality').node.querySelector('input'); // Force enabled - if (['tuic', 'hysteria2'].includes(type)) { + if (['vless', 'tuic', 'hysteria2'].includes(type)) { tls.checked = true; tls.disabled = true; - if (!`${tls_alpn.getValue()}`) + if (['tuic', 'hysteria2'].includes(type) && !`${tls_alpn.getValue()}`) tls_alpn.setValue('h3'); } else { tls.disabled = null; } + // Force disabled + if (!['vmess', 'vless'].includes(type)) { + tls_reality.checked = null; + tls_reality.disabled = true; + } else { + tls_reality.disabled = null; + } + return true; } - o.depends({type: /^(vmess|tuic|hysteria2)$/}); + o.depends({type: /^(vmess|vless|tuic|hysteria2)$/}); o.modalonly = true; o = s.option(form.DynamicList, 'tls_alpn', _('TLS ALPN'), @@ -247,7 +264,7 @@ return view.extend({ o = s.option(form.Value, 'tls_cert_path', _('Certificate path'), _('The server public key, in PEM format.')); o.value('/etc/fchomo/certs/server_publickey.pem'); - o.depends('tls', '1'); + o.depends({tls: '1', tls_reality: '0'}); o.rmempty = false; o.modalonly = true; @@ -274,6 +291,50 @@ return view.extend({ o.onclick = L.bind(hm.uploadCertificate, o, _('private key'), 'server_privatekey'); o.modalonly = true; + // uTLS fields + o = s.option(form.Flag, 'tls_reality', _('REALITY')); + o.default = o.disabled; + o.depends('tls', '1'); + o.modalonly = true; + + o = s.option(form.Value, 'tls_reality_dest', _('REALITY handshake server')); + o.datatype = 'hostport'; + o.placeholder = 'cloud.tencent.com'; + o.rmempty = false; + o.depends('tls_reality', '1'); + o.modalonly = true; + + o = s.option(hm.GenValue, 'tls_reality_private_key', _('REALITY private key')); + const tls_reality_public_key = 'tls_reality_public_key'; + o.hm_asymmetric = { + type: 'reality-keypair', + result: { + private_key: o.option, + public_key: tls_reality_public_key + } + }; + o.password = true; + o.rmempty = false; + o.depends('tls_reality', '1'); + o.modalonly = true; + + o = s.option(form.Value, tls_reality_public_key, _('REALITY public key')); + o.depends('tls_reality', '1'); + o.modalonly = true; + + o = s.option(form.DynamicList, 'tls_reality_short_id', _('REALITY short ID')); + //o.value('', '""'); + o.rmempty = false; + o.depends('tls_reality', '1'); + o.modalonly = true; + + o = s.option(form.DynamicList, 'tls_reality_server_names', _('REALITY certificate issued to')); + o.datatype = 'list(hostname)'; + o.placeholder = 'cloud.tencent.com'; + o.rmempty = false; + o.depends('tls_reality', '1'); + o.modalonly = true; + /* Extra fields */ o = s.option(form.Flag, 'udp', _('UDP')); o.default = o.disabled; diff --git a/luci-app-fchomo/po/templates/fchomo.pot b/luci-app-fchomo/po/templates/fchomo.pot index 8b89001ed..9d7333ab5 100644 --- a/luci-app-fchomo/po/templates/fchomo.pot +++ b/luci-app-fchomo/po/templates/fchomo.pot @@ -19,19 +19,19 @@ msgstr "" msgid "-- Please choose --" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:49 +#: htdocs/luci-static/resources/fchomo.js:54 msgid "163Music" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:194 +#: htdocs/luci-static/resources/fchomo.js:208 msgid "2022-blake3-aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:195 +#: htdocs/luci-static/resources/fchomo.js:209 msgid "2022-blake3-aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:196 +#: htdocs/luci-static/resources/fchomo.js:210 msgid "2022-blake3-chacha20-poly1305" msgstr "" @@ -39,45 +39,45 @@ msgstr "" msgid "0 or 1 only." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:305 -#: htdocs/luci-static/resources/view/fchomo/server.js:320 +#: htdocs/luci-static/resources/view/fchomo/server.js:270 +#: htdocs/luci-static/resources/view/fchomo/server.js:285 msgid "Save your configuration before uploading files!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:520 +#: htdocs/luci-static/resources/view/fchomo/global.js:556 msgid "API" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:560 +#: htdocs/luci-static/resources/view/fchomo/global.js:596 msgid "API DoH service" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:551 +#: htdocs/luci-static/resources/view/fchomo/global.js:587 msgid "API HTTP port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:555 +#: htdocs/luci-static/resources/view/fchomo/global.js:591 msgid "API HTTPS port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:510 +#: htdocs/luci-static/resources/view/fchomo/global.js:546 msgid "API TLS certificate path" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:514 +#: htdocs/luci-static/resources/view/fchomo/global.js:550 msgid "API TLS private key path" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:564 +#: htdocs/luci-static/resources/view/fchomo/global.js:600 msgid "API secret" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:344 +#: htdocs/luci-static/resources/view/fchomo/global.js:369 msgid "ASN version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:638 -#: htdocs/luci-static/resources/view/fchomo/global.js:688 +#: htdocs/luci-static/resources/view/fchomo/global.js:674 +#: htdocs/luci-static/resources/view/fchomo/global.js:724 msgid "Access Control" msgstr "" @@ -113,7 +113,7 @@ msgstr "" msgid "Add a rule set" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:113 +#: htdocs/luci-static/resources/view/fchomo/server.js:63 msgid "Add a server" msgstr "" @@ -134,18 +134,17 @@ msgstr "" msgid "Address" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:691 -#: htdocs/luci-static/resources/view/fchomo/global.js:739 -#: htdocs/luci-static/resources/view/fchomo/global.js:756 +#: htdocs/luci-static/resources/view/fchomo/global.js:727 +#: htdocs/luci-static/resources/view/fchomo/global.js:775 +#: htdocs/luci-static/resources/view/fchomo/global.js:792 msgid "All allowed" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:722 -#: htdocs/luci-static/resources/view/fchomo/global.js:731 +#: htdocs/luci-static/resources/fchomo.js:137 msgid "All ports" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:547 +#: htdocs/luci-static/resources/view/fchomo/global.js:583 msgid "" "Allow access from private network.
To access the API on a private " "network from a public website, it must be enabled." @@ -164,15 +163,15 @@ msgid "Already in updating." msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:300 -#: htdocs/luci-static/resources/view/fchomo/server.js:262 +#: htdocs/luci-static/resources/view/fchomo/server.js:218 msgid "Alter ID" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:192 +#: htdocs/luci-static/resources/view/fchomo/global.js:171 msgid "Application version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:248 +#: htdocs/luci-static/resources/view/fchomo/server.js:198 msgid "Auth timeout" msgstr "" @@ -180,27 +179,28 @@ msgstr "" msgid "Authenticated length" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:375 +#: htdocs/luci-static/resources/view/fchomo/global.js:400 msgid "Auto" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:103 +#: htdocs/luci-static/resources/view/fchomo/server.js:53 msgid "Auto configure firewall" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:283 +#: htdocs/luci-static/resources/view/fchomo/global.js:308 msgid "Auto update" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:284 +#: htdocs/luci-static/resources/view/fchomo/global.js:309 msgid "Auto update resources." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:48 +#: htdocs/luci-static/resources/fchomo.js:53 msgid "Baidu" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:470 +#: htdocs/luci-static/resources/view/fchomo/global.js:496 +#: htdocs/luci-static/resources/view/fchomo/global.js:507 msgid "Based on google/gvisor." msgstr "" @@ -218,7 +218,7 @@ msgid "Binary format only supports domain / ipcidr" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:701 -#: htdocs/luci-static/resources/view/fchomo/global.js:652 +#: htdocs/luci-static/resources/view/fchomo/global.js:688 #: htdocs/luci-static/resources/view/fchomo/node.js:761 #: htdocs/luci-static/resources/view/fchomo/node.js:969 msgid "Bind interface" @@ -230,12 +230,12 @@ msgstr "" msgid "Bind outbound interface.
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:653 +#: htdocs/luci-static/resources/view/fchomo/global.js:689 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect.
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:693 +#: htdocs/luci-static/resources/view/fchomo/global.js:729 msgid "Black list" msgstr "" @@ -251,23 +251,23 @@ msgstr "" msgid "Boot DNS server (Node)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:740 +#: htdocs/luci-static/resources/view/fchomo/global.js:776 msgid "Bypass CN" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:757 +#: htdocs/luci-static/resources/view/fchomo/global.js:793 msgid "Bypass DSCP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:542 +#: htdocs/luci-static/resources/view/fchomo/global.js:578 msgid "CORS Allow origins" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:546 +#: htdocs/luci-static/resources/view/fchomo/global.js:582 msgid "CORS Allow private network" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:543 +#: htdocs/luci-static/resources/view/fchomo/global.js:579 msgid "CORS allowed origins, * will be used if empty." msgstr "" @@ -284,7 +284,7 @@ msgid "" "Certificate fingerprint. Used to implement SSL Pinning and prevent MitM." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:297 +#: htdocs/luci-static/resources/view/fchomo/server.js:262 msgid "Certificate path" msgstr "" @@ -298,12 +298,12 @@ msgstr "" msgid "Chain tail" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:134 -#: htdocs/luci-static/resources/view/fchomo/global.js:242 +#: htdocs/luci-static/resources/view/fchomo/global.js:221 +#: htdocs/luci-static/resources/view/fchomo/global.js:271 msgid "Check" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:249 +#: htdocs/luci-static/resources/view/fchomo/global.js:228 msgid "Check routerself NAT Behavior" msgstr "" @@ -311,21 +311,21 @@ msgstr "" msgid "Check update" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:347 +#: htdocs/luci-static/resources/view/fchomo/global.js:372 msgid "China IPv4 list version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:350 +#: htdocs/luci-static/resources/view/fchomo/global.js:375 msgid "China IPv6 list version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:356 +#: htdocs/luci-static/resources/view/fchomo/global.js:381 msgid "China list version" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:143 #: htdocs/luci-static/resources/view/fchomo/node.js:306 -#: htdocs/luci-static/resources/view/fchomo/server.js:202 +#: htdocs/luci-static/resources/view/fchomo/server.js:152 msgid "Chipher" msgstr "" @@ -341,7 +341,7 @@ msgstr "" msgid "Client fingerprint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:197 +#: htdocs/luci-static/resources/view/fchomo/global.js:176 msgid "Client status" msgstr "" @@ -349,12 +349,12 @@ msgstr "" msgid "Collecting data..." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:723 -#: htdocs/luci-static/resources/view/fchomo/global.js:732 +#: htdocs/luci-static/resources/fchomo.js:138 +#: htdocs/luci-static/resources/fchomo.js:139 msgid "Common ports only (bypass P2P traffic)" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:707 +#: htdocs/luci-static/resources/fchomo.js:852 msgid "Complete" msgstr "" @@ -363,11 +363,11 @@ msgid "Configuration Items" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:210 -#: htdocs/luci-static/resources/view/fchomo/server.js:226 +#: htdocs/luci-static/resources/view/fchomo/server.js:176 msgid "Congestion controller" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:218 +#: htdocs/luci-static/resources/view/fchomo/global.js:197 msgid "Connection check" msgstr "" @@ -388,15 +388,15 @@ msgstr "" msgid "Contents have been saved." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:187 +#: htdocs/luci-static/resources/view/fchomo/global.js:166 msgid "Core version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:296 +#: htdocs/luci-static/resources/view/fchomo/global.js:321 msgid "Cron expression" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:775 +#: htdocs/luci-static/resources/view/fchomo/global.js:811 msgid "Custom Direct List" msgstr "" @@ -404,7 +404,7 @@ msgstr "" msgid "Custom HTTP header." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:793 +#: htdocs/luci-static/resources/view/fchomo/global.js:829 msgid "Custom Proxy List" msgstr "" @@ -413,7 +413,7 @@ msgid "" "Custom internal hosts. Support yaml or json format." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:87 +#: htdocs/luci-static/resources/fchomo.js:93 msgid "DIRECT" msgstr "" @@ -422,7 +422,7 @@ msgstr "" msgid "DNS policy" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:445 +#: htdocs/luci-static/resources/view/fchomo/global.js:471 msgid "DNS port" msgstr "" @@ -437,15 +437,15 @@ msgstr "" msgid "DNS settings" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:760 +#: htdocs/luci-static/resources/view/fchomo/global.js:796 msgid "DSCP list" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:314 +#: htdocs/luci-static/resources/view/fchomo/global.js:339 msgid "Dashboard version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:384 +#: htdocs/luci-static/resources/view/fchomo/global.js:409 msgid "Debug" msgstr "" @@ -474,33 +474,33 @@ msgstr "" msgid "Different chain head/tail" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:368 +#: htdocs/luci-static/resources/view/fchomo/global.js:393 msgid "Direct" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:695 +#: htdocs/luci-static/resources/view/fchomo/global.js:731 msgid "Direct IPv4 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:698 +#: htdocs/luci-static/resources/view/fchomo/global.js:734 msgid "Direct IPv6 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:701 +#: htdocs/luci-static/resources/view/fchomo/global.js:737 msgid "Direct MAC-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:376 +#: htdocs/luci-static/resources/view/fchomo/global.js:401 #: htdocs/luci-static/resources/view/fchomo/node.js:109 -#: htdocs/luci-static/resources/view/fchomo/server.js:182 +#: htdocs/luci-static/resources/view/fchomo/server.js:132 msgid "Disable" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:629 +#: htdocs/luci-static/resources/view/fchomo/global.js:665 msgid "Disable ECN of quic-go" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:626 +#: htdocs/luci-static/resources/view/fchomo/global.js:662 msgid "Disable GSO of quic-go" msgstr "" @@ -537,15 +537,15 @@ msgstr "" msgid "Download bandwidth in Mbps." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:613 +#: htdocs/luci-static/resources/fchomo.js:704 msgid "Download failed: %s" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:611 +#: htdocs/luci-static/resources/fchomo.js:702 msgid "Download successful." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:73 +#: htdocs/luci-static/resources/fchomo.js:79 msgid "Dual stack" msgstr "" @@ -557,7 +557,7 @@ msgstr "" msgid "EDNS Client Subnet" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:387 +#: htdocs/luci-static/resources/view/fchomo/global.js:412 msgid "ETag support" msgstr "" @@ -588,15 +588,15 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:874 #: htdocs/luci-static/resources/view/fchomo/client.js:961 #: htdocs/luci-static/resources/view/fchomo/client.js:1102 -#: htdocs/luci-static/resources/view/fchomo/global.js:374 -#: htdocs/luci-static/resources/view/fchomo/global.js:601 +#: htdocs/luci-static/resources/view/fchomo/global.js:399 +#: htdocs/luci-static/resources/view/fchomo/global.js:637 #: htdocs/luci-static/resources/view/fchomo/node.js:51 #: htdocs/luci-static/resources/view/fchomo/node.js:819 #: htdocs/luci-static/resources/view/fchomo/node.js:989 #: htdocs/luci-static/resources/view/fchomo/node.js:1070 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:199 -#: htdocs/luci-static/resources/view/fchomo/server.js:100 -#: htdocs/luci-static/resources/view/fchomo/server.js:124 +#: htdocs/luci-static/resources/view/fchomo/server.js:50 +#: htdocs/luci-static/resources/view/fchomo/server.js:74 msgid "Enable" msgstr "" @@ -611,7 +611,7 @@ msgstr "" msgid "Enable 0-RTT handshake" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:632 +#: htdocs/luci-static/resources/view/fchomo/global.js:668 msgid "" "Enable IP4P " "conversion for outbound connections" @@ -644,13 +644,13 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:115 -#: htdocs/luci-static/resources/view/fchomo/server.js:188 +#: htdocs/luci-static/resources/view/fchomo/server.js:138 msgid "" "Enabling obfuscation will make the server incompatible with standard QUIC " "connections, losing the ability to masquerade with HTTP/3." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:492 +#: htdocs/luci-static/resources/view/fchomo/global.js:528 msgid "Endpoint-Independent NAT" msgstr "" @@ -659,7 +659,7 @@ msgstr "" msgid "Entry" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:381 +#: htdocs/luci-static/resources/view/fchomo/global.js:406 msgid "Error" msgstr "" @@ -684,7 +684,7 @@ msgstr "" msgid "Exclude nodes that meet keywords or regexps." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:127 +#: htdocs/luci-static/resources/view/fchomo/global.js:265 msgid "Expand/Collapse result" msgstr "" @@ -698,31 +698,31 @@ msgstr "" msgid "Expected status" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:637 -#: htdocs/luci-static/resources/fchomo.js:640 -#: htdocs/luci-static/resources/fchomo.js:643 -#: htdocs/luci-static/resources/fchomo.js:724 -#: htdocs/luci-static/resources/fchomo.js:732 -#: htdocs/luci-static/resources/fchomo.js:740 -#: htdocs/luci-static/resources/fchomo.js:763 -#: htdocs/luci-static/resources/fchomo.js:766 -#: htdocs/luci-static/resources/fchomo.js:773 -#: htdocs/luci-static/resources/fchomo.js:791 -#: htdocs/luci-static/resources/fchomo.js:794 -#: htdocs/luci-static/resources/fchomo.js:804 -#: htdocs/luci-static/resources/fchomo.js:817 -#: htdocs/luci-static/resources/fchomo.js:819 -#: htdocs/luci-static/resources/fchomo.js:832 -#: htdocs/luci-static/resources/fchomo.js:841 -#: htdocs/luci-static/resources/fchomo.js:848 -#: htdocs/luci-static/resources/fchomo.js:857 +#: htdocs/luci-static/resources/fchomo.js:728 +#: htdocs/luci-static/resources/fchomo.js:731 +#: htdocs/luci-static/resources/fchomo.js:734 #: htdocs/luci-static/resources/fchomo.js:869 -#: htdocs/luci-static/resources/fchomo.js:872 -#: htdocs/luci-static/resources/fchomo.js:882 +#: htdocs/luci-static/resources/fchomo.js:877 +#: htdocs/luci-static/resources/fchomo.js:885 +#: htdocs/luci-static/resources/fchomo.js:908 +#: htdocs/luci-static/resources/fchomo.js:911 +#: htdocs/luci-static/resources/fchomo.js:918 +#: htdocs/luci-static/resources/fchomo.js:936 +#: htdocs/luci-static/resources/fchomo.js:939 +#: htdocs/luci-static/resources/fchomo.js:949 +#: htdocs/luci-static/resources/fchomo.js:962 +#: htdocs/luci-static/resources/fchomo.js:964 +#: htdocs/luci-static/resources/fchomo.js:977 +#: htdocs/luci-static/resources/fchomo.js:986 +#: htdocs/luci-static/resources/fchomo.js:993 +#: htdocs/luci-static/resources/fchomo.js:1002 +#: htdocs/luci-static/resources/fchomo.js:1014 +#: htdocs/luci-static/resources/fchomo.js:1017 +#: htdocs/luci-static/resources/fchomo.js:1027 #: htdocs/luci-static/resources/view/fchomo/client.js:27 #: htdocs/luci-static/resources/view/fchomo/client.js:629 #: htdocs/luci-static/resources/view/fchomo/client.js:976 -#: htdocs/luci-static/resources/view/fchomo/global.js:766 +#: htdocs/luci-static/resources/view/fchomo/global.js:802 #: htdocs/luci-static/resources/view/fchomo/node.js:535 #: htdocs/luci-static/resources/view/fchomo/node.js:1117 #: htdocs/luci-static/resources/view/fchomo/node.js:1139 @@ -736,7 +736,7 @@ msgstr "" msgid "Expecting: only support %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:620 +#: htdocs/luci-static/resources/view/fchomo/global.js:656 msgid "Experimental" msgstr "" @@ -750,19 +750,23 @@ msgstr "" msgid "Factor" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:665 +#: htdocs/luci-static/resources/fchomo.js:810 msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:982 +#: htdocs/luci-static/resources/fchomo.js:771 +msgid "Failed to generate %s, error: %s." +msgstr "" + +#: htdocs/luci-static/resources/fchomo.js:1127 msgid "Failed to upload %s, error: %s." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1001 +#: htdocs/luci-static/resources/fchomo.js:1146 msgid "Failed to upload, error: %s." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:124 +#: htdocs/luci-static/resources/fchomo.js:130 msgid "Fallback" msgstr "" @@ -797,6 +801,7 @@ msgid "Final DNS server (For poisoned domains)" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:294 +#: htdocs/luci-static/resources/view/fchomo/server.js:212 msgid "Flow" msgstr "" @@ -818,7 +823,7 @@ msgstr "" msgid "Force DNS remote resolution." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:580 +#: htdocs/luci-static/resources/view/fchomo/global.js:616 msgid "Forced sniffing domain" msgstr "" @@ -826,7 +831,7 @@ msgstr "" msgid "Format" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:175 +#: htdocs/luci-static/resources/view/fchomo/global.js:138 #: htdocs/luci-static/resources/view/fchomo/log.js:97 #: htdocs/luci-static/resources/view/fchomo/log.js:102 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:3 @@ -837,11 +842,11 @@ msgstr "" msgid "GET" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:353 +#: htdocs/luci-static/resources/view/fchomo/global.js:378 msgid "GFW list version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:361 +#: htdocs/luci-static/resources/view/fchomo/global.js:386 msgid "General" msgstr "" @@ -851,24 +856,24 @@ msgstr "" msgid "General fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:364 +#: htdocs/luci-static/resources/view/fchomo/global.js:389 msgid "General settings" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:52 -#: htdocs/luci-static/resources/view/fchomo/server.js:54 +#: htdocs/luci-static/resources/fchomo.js:282 +#: htdocs/luci-static/resources/fchomo.js:284 msgid "Generate" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:480 +#: htdocs/luci-static/resources/view/fchomo/global.js:516 msgid "Generic segmentation offload" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:338 +#: htdocs/luci-static/resources/view/fchomo/global.js:363 msgid "GeoIP version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:341 +#: htdocs/luci-static/resources/view/fchomo/global.js:366 msgid "GeoSite version" msgstr "" @@ -886,20 +891,20 @@ msgstr "" msgid "Geosite" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:51 +#: htdocs/luci-static/resources/fchomo.js:56 msgid "GitHub" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:370 +#: htdocs/luci-static/resources/view/fchomo/global.js:395 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:14 msgid "Global" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:410 +#: htdocs/luci-static/resources/view/fchomo/global.js:435 msgid "Global Authentication" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:504 +#: htdocs/luci-static/resources/view/fchomo/global.js:540 msgid "Global client fingerprint" msgstr "" @@ -907,7 +912,7 @@ msgstr "" msgid "Global padding" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:50 +#: htdocs/luci-static/resources/fchomo.js:55 msgid "Google" msgstr "" @@ -919,8 +924,8 @@ msgstr "" msgid "Group" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:61 -#: htdocs/luci-static/resources/fchomo.js:88 +#: htdocs/luci-static/resources/fchomo.js:66 +#: htdocs/luci-static/resources/fchomo.js:94 #: htdocs/luci-static/resources/view/fchomo/node.js:411 #: htdocs/luci-static/resources/view/fchomo/node.js:583 #: htdocs/luci-static/resources/view/fchomo/node.js:594 @@ -941,7 +946,7 @@ msgstr "" msgid "HTTP/3" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:196 +#: htdocs/luci-static/resources/view/fchomo/server.js:146 msgid "" "HTTP3 server behavior when authentication fails.
A 404 page will be " "returned if empty." @@ -952,7 +957,7 @@ msgstr "" msgid "HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:743 +#: htdocs/luci-static/resources/view/fchomo/global.js:779 msgid "Handle domain" msgstr "" @@ -1002,8 +1007,8 @@ msgstr "" msgid "Hosts" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:67 -#: htdocs/luci-static/resources/fchomo.js:98 +#: htdocs/luci-static/resources/fchomo.js:73 +#: htdocs/luci-static/resources/fchomo.js:104 msgid "Hysteria2" msgstr "" @@ -1025,24 +1030,24 @@ msgstr "" msgid "IP version" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:74 +#: htdocs/luci-static/resources/fchomo.js:80 msgid "IPv4 only" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:75 +#: htdocs/luci-static/resources/fchomo.js:81 msgid "IPv6 only" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:899 -#: htdocs/luci-static/resources/view/fchomo/global.js:390 +#: htdocs/luci-static/resources/view/fchomo/global.js:415 msgid "IPv6 support" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:241 +#: htdocs/luci-static/resources/view/fchomo/server.js:191 msgid "Idle timeout" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:766 +#: htdocs/luci-static/resources/fchomo.js:911 msgid "If All ports is selected, uncheck others" msgstr "" @@ -1050,7 +1055,7 @@ msgstr "" msgid "If Block is selected, uncheck others" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:175 +#: htdocs/luci-static/resources/view/fchomo/server.js:125 msgid "Ignore client bandwidth" msgstr "" @@ -1068,8 +1073,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:103 #: htdocs/luci-static/resources/view/fchomo/node.js:947 #: htdocs/luci-static/resources/view/fchomo/node.js:952 -#: htdocs/luci-static/resources/view/fchomo/server.js:164 -#: htdocs/luci-static/resources/view/fchomo/server.js:170 +#: htdocs/luci-static/resources/view/fchomo/server.js:114 +#: htdocs/luci-static/resources/view/fchomo/server.js:120 msgid "In Mbps." msgstr "" @@ -1089,22 +1094,22 @@ msgstr "" msgid "In millisecond. %s will be used if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:242 -#: htdocs/luci-static/resources/view/fchomo/server.js:249 +#: htdocs/luci-static/resources/view/fchomo/server.js:192 +#: htdocs/luci-static/resources/view/fchomo/server.js:199 msgid "In seconds." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:730 -#: htdocs/luci-static/resources/view/fchomo/global.js:400 -#: htdocs/luci-static/resources/view/fchomo/global.js:405 -#: htdocs/luci-static/resources/view/fchomo/global.js:488 +#: htdocs/luci-static/resources/view/fchomo/global.js:425 +#: htdocs/luci-static/resources/view/fchomo/global.js:430 +#: htdocs/luci-static/resources/view/fchomo/global.js:524 #: htdocs/luci-static/resources/view/fchomo/node.js:881 #: htdocs/luci-static/resources/view/fchomo/node.js:1003 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:298 msgid "In seconds. %s will be used if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:424 +#: htdocs/luci-static/resources/view/fchomo/global.js:449 msgid "Inbound" msgstr "" @@ -1132,7 +1137,7 @@ msgstr "" msgid "Includes all Proxy Node." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:383 +#: htdocs/luci-static/resources/view/fchomo/global.js:408 msgid "Info" msgstr "" @@ -1141,15 +1146,15 @@ msgstr "" msgid "Inline" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:645 +#: htdocs/luci-static/resources/view/fchomo/global.js:681 msgid "Interface Control" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:72 +#: htdocs/luci-static/resources/fchomo.js:78 msgid "Keep default" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:312 +#: htdocs/luci-static/resources/view/fchomo/server.js:277 msgid "Key path" msgstr "" @@ -1162,7 +1167,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:814 #: htdocs/luci-static/resources/view/fchomo/node.js:1065 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:194 -#: htdocs/luci-static/resources/view/fchomo/server.js:119 +#: htdocs/luci-static/resources/view/fchomo/server.js:69 msgid "Label" msgstr "" @@ -1171,39 +1176,40 @@ msgstr "" msgid "Lazy" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:263 +#: htdocs/luci-static/resources/view/fchomo/server.js:219 msgid "" "Legacy protocol support (VMess MD5 Authentication) is provided for " "compatibility purposes only, use of alterId > 1 is not recommended." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:468 +#: htdocs/luci-static/resources/view/fchomo/global.js:494 +#: htdocs/luci-static/resources/view/fchomo/global.js:509 msgid "Less compatibility and sometimes better performance." msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:525 -#: htdocs/luci-static/resources/view/fchomo/server.js:293 +#: htdocs/luci-static/resources/view/fchomo/server.js:258 msgid "List of supported application level protocols, in order of preference." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:134 +#: htdocs/luci-static/resources/view/fchomo/server.js:84 msgid "Listen address" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:647 +#: htdocs/luci-static/resources/view/fchomo/global.js:683 msgid "Listen interfaces" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:894 -#: htdocs/luci-static/resources/view/fchomo/server.js:139 +#: htdocs/luci-static/resources/view/fchomo/server.js:89 msgid "Listen port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:427 +#: htdocs/luci-static/resources/view/fchomo/global.js:452 msgid "Listen ports" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:126 +#: htdocs/luci-static/resources/fchomo.js:132 msgid "Load balance" msgstr "" @@ -1232,20 +1238,20 @@ msgstr "" msgid "Log is empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:379 +#: htdocs/luci-static/resources/view/fchomo/global.js:404 msgid "Log level" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:637 +#: htdocs/luci-static/resources/fchomo.js:728 msgid "Lowercase only" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:476 +#: htdocs/luci-static/resources/view/fchomo/global.js:512 #: htdocs/luci-static/resources/view/fchomo/node.js:383 msgid "MTU" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:195 +#: htdocs/luci-static/resources/view/fchomo/server.js:145 msgid "Masquerade" msgstr "" @@ -1282,7 +1288,7 @@ msgid "Max Early Data" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:238 -#: htdocs/luci-static/resources/view/fchomo/server.js:235 +#: htdocs/luci-static/resources/view/fchomo/server.js:185 msgid "Max UDP relay packet size" msgstr "" @@ -1291,12 +1297,12 @@ msgid "Max count of failures" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:102 -#: htdocs/luci-static/resources/view/fchomo/server.js:169 +#: htdocs/luci-static/resources/view/fchomo/server.js:119 msgid "Max download speed" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:96 -#: htdocs/luci-static/resources/view/fchomo/server.js:163 +#: htdocs/luci-static/resources/view/fchomo/server.js:113 msgid "Max upload speed" msgstr "" @@ -1315,7 +1321,7 @@ msgstr "" msgid "Maximum streams" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:92 +#: htdocs/luci-static/resources/fchomo.js:98 msgid "Mieru" msgstr "" @@ -1327,7 +1333,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/log.js:115 #: htdocs/luci-static/resources/view/fchomo/log.js:120 -#: htdocs/luci-static/resources/view/fchomo/server.js:74 +#: htdocs/luci-static/resources/view/fchomo/server.js:24 msgid "Mihomo server" msgstr "" @@ -1341,16 +1347,17 @@ msgstr "" msgid "Minimum streams" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:63 -#: htdocs/luci-static/resources/view/fchomo/global.js:471 +#: htdocs/luci-static/resources/fchomo.js:68 +#: htdocs/luci-static/resources/view/fchomo/global.js:497 msgid "Mixed" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:471 +#: htdocs/luci-static/resources/view/fchomo/global.js:497 +#: htdocs/luci-static/resources/view/fchomo/global.js:505 msgid "Mixed system TCP stack and gVisor UDP stack." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:430 +#: htdocs/luci-static/resources/view/fchomo/global.js:455 msgid "Mixed port" msgstr "" @@ -1383,7 +1390,7 @@ msgstr "" msgid "Native" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:418 +#: htdocs/luci-static/resources/view/fchomo/global.js:443 msgid "No Authentication IP ranges" msgstr "" @@ -1426,14 +1433,15 @@ msgid "Node switch tolerance" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:295 +#: htdocs/luci-static/resources/view/fchomo/server.js:213 msgid "None" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:534 +#: htdocs/luci-static/resources/view/fchomo/global.js:570 msgid "Not Installed" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:571 +#: htdocs/luci-static/resources/fchomo.js:662 msgid "Not Running" msgstr "" @@ -1442,43 +1450,42 @@ msgid "Obfs Mode" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:114 -#: htdocs/luci-static/resources/view/fchomo/server.js:187 +#: htdocs/luci-static/resources/view/fchomo/server.js:137 msgid "Obfuscate password" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:108 -#: htdocs/luci-static/resources/view/fchomo/server.js:181 +#: htdocs/luci-static/resources/view/fchomo/server.js:131 msgid "Obfuscate type" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:766 +#: htdocs/luci-static/resources/view/fchomo/global.js:802 msgid "One or more numbers in the range 0-63 separated by commas" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:648 +#: htdocs/luci-static/resources/view/fchomo/global.js:684 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:565 +#: htdocs/luci-static/resources/fchomo.js:656 msgid "Open Dashboard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:367 +#: htdocs/luci-static/resources/view/fchomo/global.js:392 msgid "Operation mode" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:704 #: htdocs/luci-static/resources/view/fchomo/client.js:713 -msgid "" -"Option will soon be deprecated, please use the same option in proxy node." +msgid "Option is deprecated, please use the same option in proxy node." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1063 msgid "Override ECS in original request." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:576 -#: htdocs/luci-static/resources/view/fchomo/global.js:614 +#: htdocs/luci-static/resources/view/fchomo/global.js:612 +#: htdocs/luci-static/resources/view/fchomo/global.js:650 msgid "Override destination" msgstr "" @@ -1495,11 +1502,11 @@ msgstr "" msgid "Override the Proxy group of DNS server." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:577 +#: htdocs/luci-static/resources/view/fchomo/global.js:613 msgid "Override the connection destination address with the sniffed domain." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:181 +#: htdocs/luci-static/resources/view/fchomo/global.js:160 msgid "Overview" msgstr "" @@ -1518,8 +1525,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:78 #: htdocs/luci-static/resources/view/fchomo/node.js:151 #: htdocs/luci-static/resources/view/fchomo/node.js:424 -#: htdocs/luci-static/resources/view/fchomo/server.js:154 -#: htdocs/luci-static/resources/view/fchomo/server.js:210 +#: htdocs/luci-static/resources/view/fchomo/server.js:104 +#: htdocs/luci-static/resources/view/fchomo/server.js:160 msgid "Password" msgstr "" @@ -1532,7 +1539,7 @@ msgstr "" msgid "Peer pubkic key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:493 +#: htdocs/luci-static/resources/view/fchomo/global.js:529 msgid "" "Performance may degrade slightly, so it is not recommended to enable on when " "it is not needed." @@ -1574,7 +1581,7 @@ msgstr "" msgid "Port" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:775 +#: htdocs/luci-static/resources/fchomo.js:920 msgid "Port %s alrealy exists!" msgstr "" @@ -1582,7 +1589,7 @@ msgstr "" msgid "Port range" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:611 +#: htdocs/luci-static/resources/view/fchomo/global.js:647 msgid "Ports" msgstr "" @@ -1595,23 +1602,23 @@ msgstr "" msgid "Pre-shared key" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:76 +#: htdocs/luci-static/resources/fchomo.js:82 msgid "Prefer IPv4" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:77 +#: htdocs/luci-static/resources/fchomo.js:83 msgid "Prefer IPv6" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:703 #: htdocs/luci-static/resources/view/fchomo/client.js:712 -#: htdocs/luci-static/resources/view/fchomo/global.js:654 -#: htdocs/luci-static/resources/view/fchomo/global.js:671 +#: htdocs/luci-static/resources/view/fchomo/global.js:690 +#: htdocs/luci-static/resources/view/fchomo/global.js:707 #: htdocs/luci-static/resources/view/fchomo/node.js:763 #: htdocs/luci-static/resources/view/fchomo/node.js:769 #: htdocs/luci-static/resources/view/fchomo/node.js:971 #: htdocs/luci-static/resources/view/fchomo/node.js:977 -msgid "Priority: Proxy Node > Proxy Group > Global." +msgid "Priority: Proxy Node > Global." msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:123 @@ -1626,11 +1633,11 @@ msgstr "" msgid "Private key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:373 +#: htdocs/luci-static/resources/view/fchomo/global.js:398 msgid "Process matching mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:605 +#: htdocs/luci-static/resources/view/fchomo/global.js:641 #: htdocs/luci-static/resources/view/fchomo/node.js:681 msgid "Protocol" msgstr "" @@ -1661,15 +1668,15 @@ msgstr "" msgid "Proxy Group" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:704 +#: htdocs/luci-static/resources/view/fchomo/global.js:740 msgid "Proxy IPv4 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:707 +#: htdocs/luci-static/resources/view/fchomo/global.js:743 msgid "Proxy IPv6 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:710 +#: htdocs/luci-static/resources/view/fchomo/global.js:746 msgid "Proxy MAC-s" msgstr "" @@ -1694,11 +1701,11 @@ msgstr "" msgid "Proxy group override" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:450 +#: htdocs/luci-static/resources/view/fchomo/global.js:476 msgid "Proxy mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:713 +#: htdocs/luci-static/resources/view/fchomo/global.js:749 msgid "Proxy routerself" msgstr "" @@ -1707,28 +1714,43 @@ msgid "QUIC" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:211 -#: htdocs/luci-static/resources/view/fchomo/server.js:227 +#: htdocs/luci-static/resources/view/fchomo/server.js:177 msgid "QUIC congestion controller." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:599 -#: htdocs/luci-static/resources/view/fchomo/server.js:95 +#: htdocs/luci-static/resources/view/fchomo/server.js:45 msgid "Quick Reload" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:560 +#: htdocs/luci-static/resources/view/fchomo/server.js:293 msgid "REALITY" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/server.js:329 +msgid "REALITY certificate issued to" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/server.js:298 +msgid "REALITY handshake server" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/server.js:305 +msgid "REALITY private key" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/node.js:565 +#: htdocs/luci-static/resources/view/fchomo/server.js:319 msgid "REALITY public key" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:570 +#: htdocs/luci-static/resources/view/fchomo/server.js:323 msgid "REALITY short ID" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:565 +#: htdocs/luci-static/resources/view/fchomo/global.js:601 msgid "Random will be used if empty." msgstr "" @@ -1737,19 +1759,19 @@ msgstr "" msgid "Recommended to use UoT node.
such as %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:435 +#: htdocs/luci-static/resources/view/fchomo/global.js:460 msgid "Redir port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:451 +#: htdocs/luci-static/resources/view/fchomo/global.js:477 msgid "Redirect TCP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:453 +#: htdocs/luci-static/resources/view/fchomo/global.js:479 msgid "Redirect TCP + TProxy UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:455 +#: htdocs/luci-static/resources/view/fchomo/global.js:481 msgid "Redirect TCP + Tun UDP" msgstr "" @@ -1757,14 +1779,14 @@ msgstr "" msgid "Refresh every %s seconds." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:558 +#: htdocs/luci-static/resources/fchomo.js:649 #: htdocs/luci-static/resources/view/fchomo/client.js:600 -#: htdocs/luci-static/resources/view/fchomo/global.js:214 -#: htdocs/luci-static/resources/view/fchomo/server.js:96 +#: htdocs/luci-static/resources/view/fchomo/global.js:193 +#: htdocs/luci-static/resources/view/fchomo/server.js:46 msgid "Reload" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:213 +#: htdocs/luci-static/resources/view/fchomo/global.js:192 msgid "Reload All" msgstr "" @@ -1777,11 +1799,11 @@ msgstr "" msgid "Remote DNS resolve" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:696 +#: htdocs/luci-static/resources/fchomo.js:841 msgid "Remove" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:701 +#: htdocs/luci-static/resources/fchomo.js:846 #: htdocs/luci-static/resources/view/fchomo/node.js:800 #: htdocs/luci-static/resources/view/fchomo/node.js:802 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:185 @@ -1810,7 +1832,7 @@ msgstr "" msgid "Reserved field bytes" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:273 +#: htdocs/luci-static/resources/view/fchomo/global.js:298 msgid "Resources management" msgstr "" @@ -1818,40 +1840,40 @@ msgstr "" msgid "Restls script" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:717 +#: htdocs/luci-static/resources/view/fchomo/global.js:753 msgid "Routing Control" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:755 -#: htdocs/luci-static/resources/view/fchomo/global.js:758 +#: htdocs/luci-static/resources/view/fchomo/global.js:791 +#: htdocs/luci-static/resources/view/fchomo/global.js:794 msgid "Routing DSCP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:741 +#: htdocs/luci-static/resources/view/fchomo/global.js:777 msgid "Routing GFW" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:711 -#: htdocs/luci-static/resources/view/fchomo/global.js:670 +#: htdocs/luci-static/resources/view/fchomo/global.js:706 #: htdocs/luci-static/resources/view/fchomo/node.js:768 #: htdocs/luci-static/resources/view/fchomo/node.js:976 msgid "Routing mark" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:737 +#: htdocs/luci-static/resources/view/fchomo/global.js:773 msgid "Routing mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:738 +#: htdocs/luci-static/resources/view/fchomo/global.js:774 msgid "Routing mode of the traffic enters mihomo via firewall rules." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:744 +#: htdocs/luci-static/resources/view/fchomo/global.js:780 msgid "Routing mode will be handle domain." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:719 -#: htdocs/luci-static/resources/view/fchomo/global.js:728 +#: htdocs/luci-static/resources/view/fchomo/global.js:755 +#: htdocs/luci-static/resources/view/fchomo/global.js:764 msgid "Routing ports" msgstr "" @@ -1860,15 +1882,15 @@ msgstr "" msgid "Routing rule" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:664 +#: htdocs/luci-static/resources/view/fchomo/global.js:700 msgid "Routing rule priority" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:658 +#: htdocs/luci-static/resources/view/fchomo/global.js:694 msgid "Routing table ID" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:369 +#: htdocs/luci-static/resources/view/fchomo/global.js:394 msgid "Rule" msgstr "" @@ -1890,24 +1912,23 @@ msgstr "" msgid "Ruleset-URI-Scheme" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:571 +#: htdocs/luci-static/resources/fchomo.js:662 msgid "Running" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:62 +#: htdocs/luci-static/resources/fchomo.js:67 msgid "SOCKS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:89 +#: htdocs/luci-static/resources/fchomo.js:95 msgid "SOCKS5" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:101 +#: htdocs/luci-static/resources/fchomo.js:107 msgid "SSH" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:724 -#: htdocs/luci-static/resources/view/fchomo/global.js:733 +#: htdocs/luci-static/resources/fchomo.js:140 msgid "STUN ports" msgstr "" @@ -1920,31 +1941,31 @@ msgid "SUoT version" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:110 -#: htdocs/luci-static/resources/view/fchomo/server.js:183 +#: htdocs/luci-static/resources/view/fchomo/server.js:133 msgid "Salamander" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:82 +#: htdocs/luci-static/resources/fchomo.js:88 msgid "Same dstaddr requests. Same node" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:83 +#: htdocs/luci-static/resources/fchomo.js:89 msgid "Same srcaddr and dstaddr requests. Same node" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:483 +#: htdocs/luci-static/resources/view/fchomo/global.js:519 msgid "Segment maximum size" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:123 +#: htdocs/luci-static/resources/fchomo.js:129 msgid "Select" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:526 +#: htdocs/luci-static/resources/view/fchomo/global.js:562 msgid "Select Dashboard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:113 +#: htdocs/luci-static/resources/view/fchomo/server.js:63 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:54 msgid "Server" msgstr "" @@ -1957,16 +1978,16 @@ msgstr "" msgid "Server hostname" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:205 +#: htdocs/luci-static/resources/view/fchomo/global.js:184 msgid "Server status" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:184 +#: htdocs/luci-static/resources/view/fchomo/global.js:163 msgid "Service status" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:64 -#: htdocs/luci-static/resources/fchomo.js:90 +#: htdocs/luci-static/resources/fchomo.js:69 +#: htdocs/luci-static/resources/fchomo.js:96 msgid "Shadowsocks" msgstr "" @@ -1986,11 +2007,11 @@ msgstr "" msgid "Show connections in the dashboard for breaking connections easier." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:380 +#: htdocs/luci-static/resources/view/fchomo/global.js:405 msgid "Silent" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:81 +#: htdocs/luci-static/resources/fchomo.js:87 msgid "Simple round-robin all nodes" msgstr "" @@ -2004,42 +2025,42 @@ msgstr "" msgid "Skip cert verify" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:583 +#: htdocs/luci-static/resources/view/fchomo/global.js:619 msgid "Skiped sniffing domain" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:589 +#: htdocs/luci-static/resources/view/fchomo/global.js:625 msgid "Skiped sniffing dst address" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:586 +#: htdocs/luci-static/resources/view/fchomo/global.js:622 msgid "Skiped sniffing src address" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:93 +#: htdocs/luci-static/resources/fchomo.js:99 msgid "Snell" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:593 +#: htdocs/luci-static/resources/view/fchomo/global.js:629 msgid "Sniff protocol" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:570 +#: htdocs/luci-static/resources/view/fchomo/global.js:606 msgid "Sniffer" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:573 +#: htdocs/luci-static/resources/view/fchomo/global.js:609 msgid "Sniffer settings" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:720 -#: htdocs/luci-static/resources/view/fchomo/global.js:729 +#: htdocs/luci-static/resources/view/fchomo/global.js:756 +#: htdocs/luci-static/resources/view/fchomo/global.js:765 msgid "" "Specify target ports to be proxied. Multiple ports must be separated by " "commas." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:466 +#: htdocs/luci-static/resources/view/fchomo/global.js:492 msgid "Stack" msgstr "" @@ -2065,7 +2086,7 @@ msgstr "" msgid "Successfully updated." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:998 +#: htdocs/luci-static/resources/fchomo.js:1143 msgid "Successfully uploaded." msgstr "" @@ -2075,7 +2096,7 @@ msgid "" "
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:468 +#: htdocs/luci-static/resources/view/fchomo/global.js:494 msgid "System" msgstr "" @@ -2088,7 +2109,7 @@ msgstr "" msgid "TCP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:396 +#: htdocs/luci-static/resources/view/fchomo/global.js:421 msgid "TCP concurrency" msgstr "" @@ -2096,11 +2117,11 @@ msgstr "" msgid "TCP only" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:404 +#: htdocs/luci-static/resources/view/fchomo/global.js:429 msgid "TCP-Keep-Alive idle timeout" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:399 +#: htdocs/luci-static/resources/view/fchomo/global.js:424 msgid "TCP-Keep-Alive interval" msgstr "" @@ -2109,15 +2130,15 @@ msgstr "" msgid "TFO" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:498 +#: htdocs/luci-static/resources/view/fchomo/global.js:534 #: htdocs/luci-static/resources/view/fchomo/node.js:412 #: htdocs/luci-static/resources/view/fchomo/node.js:470 -#: htdocs/luci-static/resources/view/fchomo/server.js:270 +#: htdocs/luci-static/resources/view/fchomo/server.js:226 msgid "TLS" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:524 -#: htdocs/luci-static/resources/view/fchomo/server.js:292 +#: htdocs/luci-static/resources/view/fchomo/server.js:257 msgid "TLS ALPN" msgstr "" @@ -2129,17 +2150,16 @@ msgstr "" msgid "TLS fields" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:66 -#: htdocs/luci-static/resources/fchomo.js:99 +#: htdocs/luci-static/resources/fchomo.js:72 +#: htdocs/luci-static/resources/fchomo.js:105 msgid "TUIC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:725 -#: htdocs/luci-static/resources/view/fchomo/global.js:734 +#: htdocs/luci-static/resources/fchomo.js:141 msgid "TURN ports" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:176 +#: htdocs/luci-static/resources/view/fchomo/server.js:126 msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "" @@ -2149,7 +2169,7 @@ msgstr "" msgid "The %s address used by local machine in the Wireguard network." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:297 +#: htdocs/luci-static/resources/view/fchomo/global.js:322 msgid "The default value is 2:00 every day." msgstr "" @@ -2163,11 +2183,11 @@ msgstr "" msgid "The matching %s will be deemed as poisoned." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:313 +#: htdocs/luci-static/resources/view/fchomo/server.js:278 msgid "The server private key, in PEM format." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:298 +#: htdocs/luci-static/resources/view/fchomo/server.js:263 msgid "The server public key, in PEM format." msgstr "" @@ -2184,27 +2204,27 @@ msgid "" "stream based UDP relay mode that TUIC does not provide." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:256 +#: htdocs/luci-static/resources/view/fchomo/global.js:235 msgid "" "To check NAT Behavior you need to install stuntman-client first" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:458 +#: htdocs/luci-static/resources/view/fchomo/global.js:484 msgid "" "To enable Tun support, you need to install ip-full and " "kmod-tun" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:747 +#: htdocs/luci-static/resources/view/fchomo/global.js:783 msgid "To enable, you need to install dnsmasq-full." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:677 +#: htdocs/luci-static/resources/view/fchomo/global.js:713 msgid "Tproxy Fwmark" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:440 +#: htdocs/luci-static/resources/view/fchomo/global.js:465 msgid "Tproxy port" msgstr "" @@ -2221,23 +2241,23 @@ msgstr "" msgid "Transport type" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:96 +#: htdocs/luci-static/resources/fchomo.js:102 msgid "Trojan" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:682 +#: htdocs/luci-static/resources/view/fchomo/global.js:718 msgid "Tun Fwmark" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:456 +#: htdocs/luci-static/resources/view/fchomo/global.js:482 msgid "Tun TCP/UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:463 +#: htdocs/luci-static/resources/view/fchomo/global.js:489 msgid "Tun settings" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:467 +#: htdocs/luci-static/resources/view/fchomo/global.js:493 msgid "Tun stack." msgstr "" @@ -2250,7 +2270,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:823 #: htdocs/luci-static/resources/view/fchomo/node.js:1074 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:203 -#: htdocs/luci-static/resources/view/fchomo/server.js:128 +#: htdocs/luci-static/resources/view/fchomo/server.js:78 msgid "Type" msgstr "" @@ -2258,11 +2278,11 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:404 #: htdocs/luci-static/resources/view/fchomo/node.js:451 #: htdocs/luci-static/resources/view/fchomo/node.js:937 -#: htdocs/luci-static/resources/view/fchomo/server.js:328 +#: htdocs/luci-static/resources/view/fchomo/server.js:337 msgid "UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:487 +#: htdocs/luci-static/resources/view/fchomo/global.js:523 msgid "UDP NAT expiration time" msgstr "" @@ -2282,18 +2302,18 @@ msgstr "" msgid "UDP relay mode" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:125 +#: htdocs/luci-static/resources/fchomo.js:131 msgid "URL test" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:198 #: htdocs/luci-static/resources/view/fchomo/node.js:288 -#: htdocs/luci-static/resources/view/fchomo/server.js:220 -#: htdocs/luci-static/resources/view/fchomo/server.js:256 +#: htdocs/luci-static/resources/view/fchomo/server.js:170 +#: htdocs/luci-static/resources/view/fchomo/server.js:206 msgid "UUID" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:616 +#: htdocs/luci-static/resources/fchomo.js:707 msgid "Unable to download unsupported type: %s" msgstr "" @@ -2301,12 +2321,12 @@ msgstr "" msgid "Unable to save contents: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:393 +#: htdocs/luci-static/resources/view/fchomo/global.js:418 msgid "Unified delay" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:189 -#: htdocs/luci-static/resources/view/fchomo/global.js:194 +#: htdocs/luci-static/resources/view/fchomo/global.js:168 +#: htdocs/luci-static/resources/view/fchomo/global.js:173 msgid "Unknown" msgstr "" @@ -2340,21 +2360,21 @@ msgstr "" msgid "Upload bandwidth in Mbps." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:304 +#: htdocs/luci-static/resources/view/fchomo/server.js:269 msgid "Upload certificate" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:277 +#: htdocs/luci-static/resources/view/fchomo/global.js:302 msgid "Upload initial package" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:319 +#: htdocs/luci-static/resources/view/fchomo/server.js:284 msgid "Upload key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:279 -#: htdocs/luci-static/resources/view/fchomo/server.js:307 -#: htdocs/luci-static/resources/view/fchomo/server.js:322 +#: htdocs/luci-static/resources/view/fchomo/global.js:304 +#: htdocs/luci-static/resources/view/fchomo/server.js:272 +#: htdocs/luci-static/resources/view/fchomo/server.js:287 msgid "Upload..." msgstr "" @@ -2370,16 +2390,16 @@ msgstr "" msgid "Used to verify the hostname on the returned certificates." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:413 +#: htdocs/luci-static/resources/view/fchomo/global.js:438 msgid "User Authentication" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:73 -#: htdocs/luci-static/resources/view/fchomo/server.js:149 +#: htdocs/luci-static/resources/view/fchomo/server.js:99 msgid "Username" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:690 +#: htdocs/luci-static/resources/view/fchomo/global.js:726 msgid "Users filter mode" msgstr "" @@ -2391,12 +2411,13 @@ msgstr "" msgid "V2ray HTTPUpgrade fast open" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:95 +#: htdocs/luci-static/resources/fchomo.js:71 +#: htdocs/luci-static/resources/fchomo.js:101 msgid "VLESS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:65 -#: htdocs/luci-static/resources/fchomo.js:94 +#: htdocs/luci-static/resources/fchomo.js:70 +#: htdocs/luci-static/resources/fchomo.js:100 msgid "VMess" msgstr "" @@ -2415,7 +2436,7 @@ msgstr "" msgid "Version hint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:382 +#: htdocs/luci-static/resources/view/fchomo/global.js:407 msgid "Warning" msgstr "" @@ -2425,15 +2446,15 @@ msgstr "" msgid "WebSocket" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:75 +#: htdocs/luci-static/resources/view/fchomo/server.js:25 msgid "When used as a server, HomeProxy is a better choice." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:692 +#: htdocs/luci-static/resources/view/fchomo/global.js:728 msgid "White list" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:100 +#: htdocs/luci-static/resources/fchomo.js:106 msgid "WireGuard" msgstr "" @@ -2457,25 +2478,25 @@ msgstr "" msgid "Yaml text" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:52 +#: htdocs/luci-static/resources/fchomo.js:57 msgid "YouTube" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:980 +#: htdocs/luci-static/resources/fchomo.js:1125 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:188 +#: htdocs/luci-static/resources/fchomo.js:202 #: htdocs/luci-static/resources/view/fchomo/node.js:272 #: htdocs/luci-static/resources/view/fchomo/node.js:311 msgid "aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:189 +#: htdocs/luci-static/resources/fchomo.js:203 msgid "aes-192-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:190 +#: htdocs/luci-static/resources/fchomo.js:204 #: htdocs/luci-static/resources/view/fchomo/node.js:273 msgid "aes-256-gcm" msgstr "" @@ -2485,15 +2506,15 @@ msgid "auto" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:215 -#: htdocs/luci-static/resources/view/fchomo/server.js:231 +#: htdocs/luci-static/resources/view/fchomo/server.js:181 msgid "bbr" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:309 +#: htdocs/luci-static/resources/view/fchomo/server.js:274 msgid "certificate" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:191 +#: htdocs/luci-static/resources/fchomo.js:205 #: htdocs/luci-static/resources/view/fchomo/node.js:274 msgid "chacha20-ietf-poly1305" msgstr "" @@ -2503,7 +2524,7 @@ msgid "chacha20-poly1305" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:213 -#: htdocs/luci-static/resources/view/fchomo/server.js:229 +#: htdocs/luci-static/resources/view/fchomo/server.js:179 msgid "cubic" msgstr "" @@ -2521,7 +2542,7 @@ msgstr "" msgid "gRPC service name" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:470 +#: htdocs/luci-static/resources/view/fchomo/global.js:496 msgid "gVisor" msgstr "" @@ -2529,7 +2550,7 @@ msgstr "" msgid "h2mux" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:35 +#: htdocs/luci-static/resources/fchomo.js:40 msgid "metacubexd" msgstr "" @@ -2539,7 +2560,7 @@ msgid "mpTCP" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:214 -#: htdocs/luci-static/resources/view/fchomo/server.js:230 +#: htdocs/luci-static/resources/view/fchomo/server.js:180 msgid "new_reno" msgstr "" @@ -2547,13 +2568,13 @@ msgstr "" msgid "no-resolve" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:763 -#: htdocs/luci-static/resources/fchomo.js:817 -#: htdocs/luci-static/resources/fchomo.js:848 +#: htdocs/luci-static/resources/fchomo.js:908 +#: htdocs/luci-static/resources/fchomo.js:962 +#: htdocs/luci-static/resources/fchomo.js:993 msgid "non-empty value" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:186 +#: htdocs/luci-static/resources/fchomo.js:200 #: htdocs/luci-static/resources/view/fchomo/node.js:309 #: htdocs/luci-static/resources/view/fchomo/node.js:329 #: htdocs/luci-static/resources/view/fchomo/node.js:402 @@ -2569,7 +2590,7 @@ msgstr "" msgid "not included \",\"" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:113 +#: htdocs/luci-static/resources/fchomo.js:119 msgid "null" msgstr "" @@ -2585,11 +2606,11 @@ msgstr "" msgid "packet addr (v2ray-core v5+)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:324 +#: htdocs/luci-static/resources/view/fchomo/server.js:289 msgid "private key" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:37 +#: htdocs/luci-static/resources/fchomo.js:42 msgid "razord-meta" msgstr "" @@ -2609,19 +2630,19 @@ msgstr "" msgid "src" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:244 +#: htdocs/luci-static/resources/view/fchomo/global.js:223 msgid "unchecked" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:640 +#: htdocs/luci-static/resources/fchomo.js:731 msgid "unique UCI identifier" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:643 +#: htdocs/luci-static/resources/fchomo.js:734 msgid "unique identifier" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:857 +#: htdocs/luci-static/resources/fchomo.js:1002 msgid "unique value" msgstr "" @@ -2647,8 +2668,8 @@ msgstr "" msgid "v3" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:791 -#: htdocs/luci-static/resources/fchomo.js:794 +#: htdocs/luci-static/resources/fchomo.js:936 +#: htdocs/luci-static/resources/fchomo.js:939 msgid "valid JSON format" msgstr "" @@ -2656,32 +2677,32 @@ msgstr "" msgid "valid SHA256 string with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:869 -#: htdocs/luci-static/resources/fchomo.js:872 +#: htdocs/luci-static/resources/fchomo.js:1014 +#: htdocs/luci-static/resources/fchomo.js:1017 msgid "valid URL" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:804 +#: htdocs/luci-static/resources/fchomo.js:949 msgid "valid base64 key with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:819 +#: htdocs/luci-static/resources/fchomo.js:964 msgid "valid key length with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:773 +#: htdocs/luci-static/resources/fchomo.js:918 msgid "valid port value" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:882 +#: htdocs/luci-static/resources/fchomo.js:1027 msgid "valid uuid" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:192 +#: htdocs/luci-static/resources/fchomo.js:206 msgid "xchacha20-ietf-poly1305" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:36 +#: htdocs/luci-static/resources/fchomo.js:41 msgid "yacd-meta" msgstr "" @@ -2689,7 +2710,7 @@ msgstr "" msgid "yamux" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:34 +#: htdocs/luci-static/resources/fchomo.js:39 msgid "zashboard" msgstr "" @@ -2697,6 +2718,6 @@ msgstr "" msgid "zero" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:618 +#: htdocs/luci-static/resources/fchomo.js:709 msgid "🡇" msgstr "" diff --git a/luci-app-fchomo/po/zh_Hans/fchomo.po b/luci-app-fchomo/po/zh_Hans/fchomo.po index 6cd4e929e..3fbe441d1 100644 --- a/luci-app-fchomo/po/zh_Hans/fchomo.po +++ b/luci-app-fchomo/po/zh_Hans/fchomo.po @@ -26,19 +26,19 @@ msgstr "%s 日志" msgid "-- Please choose --" msgstr "-- 请选择 --" -#: htdocs/luci-static/resources/fchomo.js:49 +#: htdocs/luci-static/resources/fchomo.js:54 msgid "163Music" msgstr "网抑云" -#: htdocs/luci-static/resources/fchomo.js:194 +#: htdocs/luci-static/resources/fchomo.js:208 msgid "2022-blake3-aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:195 +#: htdocs/luci-static/resources/fchomo.js:209 msgid "2022-blake3-aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:196 +#: htdocs/luci-static/resources/fchomo.js:210 msgid "2022-blake3-chacha20-poly1305" msgstr "" @@ -46,45 +46,45 @@ msgstr "" msgid "0 or 1 only." msgstr "仅限 01。" -#: htdocs/luci-static/resources/view/fchomo/server.js:305 -#: htdocs/luci-static/resources/view/fchomo/server.js:320 +#: htdocs/luci-static/resources/view/fchomo/server.js:270 +#: htdocs/luci-static/resources/view/fchomo/server.js:285 msgid "Save your configuration before uploading files!" msgstr "上传文件前请先保存配置!" -#: htdocs/luci-static/resources/view/fchomo/global.js:520 +#: htdocs/luci-static/resources/view/fchomo/global.js:556 msgid "API" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:560 +#: htdocs/luci-static/resources/view/fchomo/global.js:596 msgid "API DoH service" msgstr "API DoH 服务器" -#: htdocs/luci-static/resources/view/fchomo/global.js:551 +#: htdocs/luci-static/resources/view/fchomo/global.js:587 msgid "API HTTP port" msgstr "API HTTP 端口" -#: htdocs/luci-static/resources/view/fchomo/global.js:555 +#: htdocs/luci-static/resources/view/fchomo/global.js:591 msgid "API HTTPS port" msgstr "API HTTPS 端口" -#: htdocs/luci-static/resources/view/fchomo/global.js:510 +#: htdocs/luci-static/resources/view/fchomo/global.js:546 msgid "API TLS certificate path" msgstr "API TLS 证书路径" -#: htdocs/luci-static/resources/view/fchomo/global.js:514 +#: htdocs/luci-static/resources/view/fchomo/global.js:550 msgid "API TLS private key path" msgstr "API TLS 私钥" -#: htdocs/luci-static/resources/view/fchomo/global.js:564 +#: htdocs/luci-static/resources/view/fchomo/global.js:600 msgid "API secret" msgstr "API 令牌" -#: htdocs/luci-static/resources/view/fchomo/global.js:344 +#: htdocs/luci-static/resources/view/fchomo/global.js:369 msgid "ASN version" msgstr "ASN 版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:638 -#: htdocs/luci-static/resources/view/fchomo/global.js:688 +#: htdocs/luci-static/resources/view/fchomo/global.js:674 +#: htdocs/luci-static/resources/view/fchomo/global.js:724 msgid "Access Control" msgstr "访问控制" @@ -120,7 +120,7 @@ msgstr "新增 路由规则" msgid "Add a rule set" msgstr "新增 规则集" -#: htdocs/luci-static/resources/view/fchomo/server.js:113 +#: htdocs/luci-static/resources/view/fchomo/server.js:63 msgid "Add a server" msgstr "新增 服务器" @@ -141,18 +141,17 @@ msgstr "添加后缀" msgid "Address" msgstr "地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:691 -#: htdocs/luci-static/resources/view/fchomo/global.js:739 -#: htdocs/luci-static/resources/view/fchomo/global.js:756 +#: htdocs/luci-static/resources/view/fchomo/global.js:727 +#: htdocs/luci-static/resources/view/fchomo/global.js:775 +#: htdocs/luci-static/resources/view/fchomo/global.js:792 msgid "All allowed" msgstr "允许所有" -#: htdocs/luci-static/resources/view/fchomo/global.js:722 -#: htdocs/luci-static/resources/view/fchomo/global.js:731 +#: htdocs/luci-static/resources/fchomo.js:137 msgid "All ports" msgstr "所有端口" -#: htdocs/luci-static/resources/view/fchomo/global.js:547 +#: htdocs/luci-static/resources/view/fchomo/global.js:583 msgid "" "Allow access from private network.
To access the API on a private " "network from a public website, it must be enabled." @@ -172,15 +171,15 @@ msgid "Already in updating." msgstr "已在更新中。" #: htdocs/luci-static/resources/view/fchomo/node.js:300 -#: htdocs/luci-static/resources/view/fchomo/server.js:262 +#: htdocs/luci-static/resources/view/fchomo/server.js:218 msgid "Alter ID" msgstr "额外 ID" -#: htdocs/luci-static/resources/view/fchomo/global.js:192 +#: htdocs/luci-static/resources/view/fchomo/global.js:171 msgid "Application version" msgstr "应用版本" -#: htdocs/luci-static/resources/view/fchomo/server.js:248 +#: htdocs/luci-static/resources/view/fchomo/server.js:198 msgid "Auth timeout" msgstr "认证超时" @@ -188,27 +187,28 @@ msgstr "认证超时" msgid "Authenticated length" msgstr "认证长度" -#: htdocs/luci-static/resources/view/fchomo/global.js:375 +#: htdocs/luci-static/resources/view/fchomo/global.js:400 msgid "Auto" msgstr "自动" -#: htdocs/luci-static/resources/view/fchomo/server.js:103 +#: htdocs/luci-static/resources/view/fchomo/server.js:53 msgid "Auto configure firewall" msgstr "自动配置防火墙" -#: htdocs/luci-static/resources/view/fchomo/global.js:283 +#: htdocs/luci-static/resources/view/fchomo/global.js:308 msgid "Auto update" msgstr "自动更新" -#: htdocs/luci-static/resources/view/fchomo/global.js:284 +#: htdocs/luci-static/resources/view/fchomo/global.js:309 msgid "Auto update resources." msgstr "自动更新资源文件。" -#: htdocs/luci-static/resources/fchomo.js:48 +#: htdocs/luci-static/resources/fchomo.js:53 msgid "Baidu" msgstr "百度" -#: htdocs/luci-static/resources/view/fchomo/global.js:470 +#: htdocs/luci-static/resources/view/fchomo/global.js:496 +#: htdocs/luci-static/resources/view/fchomo/global.js:507 msgid "Based on google/gvisor." msgstr "基于 google/gvisor。" @@ -226,7 +226,7 @@ msgid "Binary format only supports domain / ipcidr" msgstr "二进制格式仅支持 domain/ipcidr" #: htdocs/luci-static/resources/view/fchomo/client.js:701 -#: htdocs/luci-static/resources/view/fchomo/global.js:652 +#: htdocs/luci-static/resources/view/fchomo/global.js:688 #: htdocs/luci-static/resources/view/fchomo/node.js:761 #: htdocs/luci-static/resources/view/fchomo/node.js:969 msgid "Bind interface" @@ -238,12 +238,12 @@ msgstr "绑定接口" msgid "Bind outbound interface.
" msgstr "绑定出站接口。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:653 +#: htdocs/luci-static/resources/view/fchomo/global.js:689 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect.
" msgstr "绑定出站流量至指定接口。留空自动检测。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:693 +#: htdocs/luci-static/resources/view/fchomo/global.js:729 msgid "Black list" msgstr "黑名单" @@ -259,23 +259,23 @@ msgstr "启动 DNS 服务器" msgid "Boot DNS server (Node)" msgstr "启动 DNS 服务器 (节点)" -#: htdocs/luci-static/resources/view/fchomo/global.js:740 +#: htdocs/luci-static/resources/view/fchomo/global.js:776 msgid "Bypass CN" msgstr "绕过 CN 流量" -#: htdocs/luci-static/resources/view/fchomo/global.js:757 +#: htdocs/luci-static/resources/view/fchomo/global.js:793 msgid "Bypass DSCP" msgstr "绕过 DSCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:542 +#: htdocs/luci-static/resources/view/fchomo/global.js:578 msgid "CORS Allow origins" msgstr "CORS 允许的来源" -#: htdocs/luci-static/resources/view/fchomo/global.js:546 +#: htdocs/luci-static/resources/view/fchomo/global.js:582 msgid "CORS Allow private network" msgstr "CORS 允许私有网络" -#: htdocs/luci-static/resources/view/fchomo/global.js:543 +#: htdocs/luci-static/resources/view/fchomo/global.js:579 msgid "CORS allowed origins, * will be used if empty." msgstr "CORS 允许的来源,留空则使用 *。" @@ -292,7 +292,7 @@ msgid "" "Certificate fingerprint. Used to implement SSL Pinning and prevent MitM." msgstr "证书指纹。用于实现 SSL证书固定 并防止 MitM。" -#: htdocs/luci-static/resources/view/fchomo/server.js:297 +#: htdocs/luci-static/resources/view/fchomo/server.js:262 msgid "Certificate path" msgstr "证书路径" @@ -306,12 +306,12 @@ msgstr "链头" msgid "Chain tail" msgstr "链尾" -#: htdocs/luci-static/resources/view/fchomo/global.js:134 -#: htdocs/luci-static/resources/view/fchomo/global.js:242 +#: htdocs/luci-static/resources/view/fchomo/global.js:221 +#: htdocs/luci-static/resources/view/fchomo/global.js:271 msgid "Check" msgstr "检查" -#: htdocs/luci-static/resources/view/fchomo/global.js:249 +#: htdocs/luci-static/resources/view/fchomo/global.js:228 msgid "Check routerself NAT Behavior" msgstr "检测路由器自身 NAT 行为" @@ -319,21 +319,21 @@ msgstr "检测路由器自身 NAT 行为" msgid "Check update" msgstr "检查更新" -#: htdocs/luci-static/resources/view/fchomo/global.js:347 +#: htdocs/luci-static/resources/view/fchomo/global.js:372 msgid "China IPv4 list version" msgstr "大陆 IPv4 库版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:350 +#: htdocs/luci-static/resources/view/fchomo/global.js:375 msgid "China IPv6 list version" msgstr "大陆 IPv6 库版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:356 +#: htdocs/luci-static/resources/view/fchomo/global.js:381 msgid "China list version" msgstr "大陆域名列表版本" #: htdocs/luci-static/resources/view/fchomo/node.js:143 #: htdocs/luci-static/resources/view/fchomo/node.js:306 -#: htdocs/luci-static/resources/view/fchomo/server.js:202 +#: htdocs/luci-static/resources/view/fchomo/server.js:152 msgid "Chipher" msgstr "加密方法" @@ -349,7 +349,7 @@ msgstr "客户端" msgid "Client fingerprint" msgstr "客户端指纹" -#: htdocs/luci-static/resources/view/fchomo/global.js:197 +#: htdocs/luci-static/resources/view/fchomo/global.js:176 msgid "Client status" msgstr "客户端状态" @@ -357,12 +357,12 @@ msgstr "客户端状态" msgid "Collecting data..." msgstr "收集数据中..." -#: htdocs/luci-static/resources/view/fchomo/global.js:723 -#: htdocs/luci-static/resources/view/fchomo/global.js:732 +#: htdocs/luci-static/resources/fchomo.js:138 +#: htdocs/luci-static/resources/fchomo.js:139 msgid "Common ports only (bypass P2P traffic)" msgstr "仅常用端口(绕过 P2P 流量)" -#: htdocs/luci-static/resources/fchomo.js:707 +#: htdocs/luci-static/resources/fchomo.js:852 msgid "Complete" msgstr "完成" @@ -371,11 +371,11 @@ msgid "Configuration Items" msgstr "配置项" #: htdocs/luci-static/resources/view/fchomo/node.js:210 -#: htdocs/luci-static/resources/view/fchomo/server.js:226 +#: htdocs/luci-static/resources/view/fchomo/server.js:176 msgid "Congestion controller" msgstr "拥塞控制器" -#: htdocs/luci-static/resources/view/fchomo/global.js:218 +#: htdocs/luci-static/resources/view/fchomo/global.js:197 msgid "Connection check" msgstr "连接检查" @@ -396,15 +396,15 @@ msgstr "内容" msgid "Contents have been saved." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:187 +#: htdocs/luci-static/resources/view/fchomo/global.js:166 msgid "Core version" msgstr "核心版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:296 +#: htdocs/luci-static/resources/view/fchomo/global.js:321 msgid "Cron expression" msgstr "Cron 表达式" -#: htdocs/luci-static/resources/view/fchomo/global.js:775 +#: htdocs/luci-static/resources/view/fchomo/global.js:811 msgid "Custom Direct List" msgstr "自定义直连列表" @@ -412,7 +412,7 @@ msgstr "自定义直连列表" msgid "Custom HTTP header." msgstr "自定义 HTTP header。" -#: htdocs/luci-static/resources/view/fchomo/global.js:793 +#: htdocs/luci-static/resources/view/fchomo/global.js:829 msgid "Custom Proxy List" msgstr "自定义代理列表" @@ -421,7 +421,7 @@ msgid "" "Custom internal hosts. Support yaml or json format." msgstr "自定义内部 hosts。支持 yamljson 格式。" -#: htdocs/luci-static/resources/fchomo.js:87 +#: htdocs/luci-static/resources/fchomo.js:93 msgid "DIRECT" msgstr "" @@ -430,7 +430,7 @@ msgstr "" msgid "DNS policy" msgstr "DNS 策略" -#: htdocs/luci-static/resources/view/fchomo/global.js:445 +#: htdocs/luci-static/resources/view/fchomo/global.js:471 msgid "DNS port" msgstr " DNS 端口" @@ -445,15 +445,15 @@ msgstr "DNS 服务器" msgid "DNS settings" msgstr "DNS 设置" -#: htdocs/luci-static/resources/view/fchomo/global.js:760 +#: htdocs/luci-static/resources/view/fchomo/global.js:796 msgid "DSCP list" msgstr "DSCP 列表" -#: htdocs/luci-static/resources/view/fchomo/global.js:314 +#: htdocs/luci-static/resources/view/fchomo/global.js:339 msgid "Dashboard version" msgstr "面板版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:384 +#: htdocs/luci-static/resources/view/fchomo/global.js:409 msgid "Debug" msgstr "调试" @@ -482,33 +482,33 @@ msgstr "拨号字段" msgid "Different chain head/tail" msgstr "不同的链头/链尾" -#: htdocs/luci-static/resources/view/fchomo/global.js:368 +#: htdocs/luci-static/resources/view/fchomo/global.js:393 msgid "Direct" msgstr "直连" -#: htdocs/luci-static/resources/view/fchomo/global.js:695 +#: htdocs/luci-static/resources/view/fchomo/global.js:731 msgid "Direct IPv4 IP-s" msgstr "直连 IPv4 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:698 +#: htdocs/luci-static/resources/view/fchomo/global.js:734 msgid "Direct IPv6 IP-s" msgstr "直连 IPv6 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:701 +#: htdocs/luci-static/resources/view/fchomo/global.js:737 msgid "Direct MAC-s" msgstr "直连 MAC 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:376 +#: htdocs/luci-static/resources/view/fchomo/global.js:401 #: htdocs/luci-static/resources/view/fchomo/node.js:109 -#: htdocs/luci-static/resources/view/fchomo/server.js:182 +#: htdocs/luci-static/resources/view/fchomo/server.js:132 msgid "Disable" msgstr "禁用" -#: htdocs/luci-static/resources/view/fchomo/global.js:629 +#: htdocs/luci-static/resources/view/fchomo/global.js:665 msgid "Disable ECN of quic-go" msgstr "禁用 quic-go 的 显式拥塞通知(ECN)" -#: htdocs/luci-static/resources/view/fchomo/global.js:626 +#: htdocs/luci-static/resources/view/fchomo/global.js:662 msgid "Disable GSO of quic-go" msgstr "禁用 quic-go 的 通用分段卸载(GSO)" @@ -545,15 +545,15 @@ msgstr "下载带宽" msgid "Download bandwidth in Mbps." msgstr "下载带宽(单位:Mbps)。" -#: htdocs/luci-static/resources/fchomo.js:613 +#: htdocs/luci-static/resources/fchomo.js:704 msgid "Download failed: %s" msgstr "下载失败: %s" -#: htdocs/luci-static/resources/fchomo.js:611 +#: htdocs/luci-static/resources/fchomo.js:702 msgid "Download successful." msgstr "下载成功。" -#: htdocs/luci-static/resources/fchomo.js:73 +#: htdocs/luci-static/resources/fchomo.js:79 msgid "Dual stack" msgstr "双栈" @@ -565,7 +565,7 @@ msgstr "强制覆盖 ECS" msgid "EDNS Client Subnet" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:387 +#: htdocs/luci-static/resources/view/fchomo/global.js:412 msgid "ETag support" msgstr "ETag 支持" @@ -596,15 +596,15 @@ msgstr "编辑器" #: htdocs/luci-static/resources/view/fchomo/client.js:874 #: htdocs/luci-static/resources/view/fchomo/client.js:961 #: htdocs/luci-static/resources/view/fchomo/client.js:1102 -#: htdocs/luci-static/resources/view/fchomo/global.js:374 -#: htdocs/luci-static/resources/view/fchomo/global.js:601 +#: htdocs/luci-static/resources/view/fchomo/global.js:399 +#: htdocs/luci-static/resources/view/fchomo/global.js:637 #: htdocs/luci-static/resources/view/fchomo/node.js:51 #: htdocs/luci-static/resources/view/fchomo/node.js:819 #: htdocs/luci-static/resources/view/fchomo/node.js:989 #: htdocs/luci-static/resources/view/fchomo/node.js:1070 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:199 -#: htdocs/luci-static/resources/view/fchomo/server.js:100 -#: htdocs/luci-static/resources/view/fchomo/server.js:124 +#: htdocs/luci-static/resources/view/fchomo/server.js:50 +#: htdocs/luci-static/resources/view/fchomo/server.js:74 msgid "Enable" msgstr "启用" @@ -621,7 +621,7 @@ msgstr "" msgid "Enable 0-RTT handshake" msgstr "启用 0-RTT 握手" -#: htdocs/luci-static/resources/view/fchomo/global.js:632 +#: htdocs/luci-static/resources/view/fchomo/global.js:668 msgid "" "Enable IP4P " "conversion for outbound connections" @@ -656,13 +656,13 @@ msgid "" msgstr "启用 SUoT 协议,需要服务端支持。与多路复用冲突。" #: htdocs/luci-static/resources/view/fchomo/node.js:115 -#: htdocs/luci-static/resources/view/fchomo/server.js:188 +#: htdocs/luci-static/resources/view/fchomo/server.js:138 msgid "" "Enabling obfuscation will make the server incompatible with standard QUIC " "connections, losing the ability to masquerade with HTTP/3." msgstr "启用混淆将使服务器与标准的 QUIC 连接不兼容,失去 HTTP/3 伪装的能力。" -#: htdocs/luci-static/resources/view/fchomo/global.js:492 +#: htdocs/luci-static/resources/view/fchomo/global.js:528 msgid "Endpoint-Independent NAT" msgstr "端点独立 NAT" @@ -671,7 +671,7 @@ msgstr "端点独立 NAT" msgid "Entry" msgstr "条目" -#: htdocs/luci-static/resources/view/fchomo/global.js:381 +#: htdocs/luci-static/resources/view/fchomo/global.js:406 msgid "Error" msgstr "错误" @@ -698,7 +698,7 @@ msgstr "" msgid "Exclude nodes that meet keywords or regexps." msgstr "排除匹配关键词或表达式的节点。" -#: htdocs/luci-static/resources/view/fchomo/global.js:127 +#: htdocs/luci-static/resources/view/fchomo/global.js:265 msgid "Expand/Collapse result" msgstr "展开/收起 结果" @@ -712,31 +712,31 @@ msgstr "预期的 HTTP code。留空则使用 204。" msgid "Expected status" msgstr "预期状态" -#: htdocs/luci-static/resources/fchomo.js:637 -#: htdocs/luci-static/resources/fchomo.js:640 -#: htdocs/luci-static/resources/fchomo.js:643 -#: htdocs/luci-static/resources/fchomo.js:724 -#: htdocs/luci-static/resources/fchomo.js:732 -#: htdocs/luci-static/resources/fchomo.js:740 -#: htdocs/luci-static/resources/fchomo.js:763 -#: htdocs/luci-static/resources/fchomo.js:766 -#: htdocs/luci-static/resources/fchomo.js:773 -#: htdocs/luci-static/resources/fchomo.js:791 -#: htdocs/luci-static/resources/fchomo.js:794 -#: htdocs/luci-static/resources/fchomo.js:804 -#: htdocs/luci-static/resources/fchomo.js:817 -#: htdocs/luci-static/resources/fchomo.js:819 -#: htdocs/luci-static/resources/fchomo.js:832 -#: htdocs/luci-static/resources/fchomo.js:841 -#: htdocs/luci-static/resources/fchomo.js:848 -#: htdocs/luci-static/resources/fchomo.js:857 +#: htdocs/luci-static/resources/fchomo.js:728 +#: htdocs/luci-static/resources/fchomo.js:731 +#: htdocs/luci-static/resources/fchomo.js:734 #: htdocs/luci-static/resources/fchomo.js:869 -#: htdocs/luci-static/resources/fchomo.js:872 -#: htdocs/luci-static/resources/fchomo.js:882 +#: htdocs/luci-static/resources/fchomo.js:877 +#: htdocs/luci-static/resources/fchomo.js:885 +#: htdocs/luci-static/resources/fchomo.js:908 +#: htdocs/luci-static/resources/fchomo.js:911 +#: htdocs/luci-static/resources/fchomo.js:918 +#: htdocs/luci-static/resources/fchomo.js:936 +#: htdocs/luci-static/resources/fchomo.js:939 +#: htdocs/luci-static/resources/fchomo.js:949 +#: htdocs/luci-static/resources/fchomo.js:962 +#: htdocs/luci-static/resources/fchomo.js:964 +#: htdocs/luci-static/resources/fchomo.js:977 +#: htdocs/luci-static/resources/fchomo.js:986 +#: htdocs/luci-static/resources/fchomo.js:993 +#: htdocs/luci-static/resources/fchomo.js:1002 +#: htdocs/luci-static/resources/fchomo.js:1014 +#: htdocs/luci-static/resources/fchomo.js:1017 +#: htdocs/luci-static/resources/fchomo.js:1027 #: htdocs/luci-static/resources/view/fchomo/client.js:27 #: htdocs/luci-static/resources/view/fchomo/client.js:629 #: htdocs/luci-static/resources/view/fchomo/client.js:976 -#: htdocs/luci-static/resources/view/fchomo/global.js:766 +#: htdocs/luci-static/resources/view/fchomo/global.js:802 #: htdocs/luci-static/resources/view/fchomo/node.js:535 #: htdocs/luci-static/resources/view/fchomo/node.js:1117 #: htdocs/luci-static/resources/view/fchomo/node.js:1139 @@ -750,7 +750,7 @@ msgstr "请输入:%s" msgid "Expecting: only support %s." msgstr "请输入:仅支援 %s." -#: htdocs/luci-static/resources/view/fchomo/global.js:620 +#: htdocs/luci-static/resources/view/fchomo/global.js:656 msgid "Experimental" msgstr "实验性" @@ -764,19 +764,23 @@ msgstr "实验性" msgid "Factor" msgstr "条件" -#: htdocs/luci-static/resources/fchomo.js:665 +#: htdocs/luci-static/resources/fchomo.js:810 msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s" msgstr "无法执行 \"/etc/init.d/fchomo %s %s\" 原因: %s" -#: htdocs/luci-static/resources/fchomo.js:982 +#: htdocs/luci-static/resources/fchomo.js:771 +msgid "Failed to generate %s, error: %s." +msgstr "" + +#: htdocs/luci-static/resources/fchomo.js:1127 msgid "Failed to upload %s, error: %s." msgstr "上传 %s 失败,错误:%s。" -#: htdocs/luci-static/resources/fchomo.js:1001 +#: htdocs/luci-static/resources/fchomo.js:1146 msgid "Failed to upload, error: %s." msgstr "上传失败,错误:%s。" -#: htdocs/luci-static/resources/fchomo.js:124 +#: htdocs/luci-static/resources/fchomo.js:130 msgid "Fallback" msgstr "自动回退" @@ -811,6 +815,7 @@ msgid "Final DNS server (For poisoned domains)" msgstr "兜底 DNS 服务器 (用于已被投毒污染的域名)" #: htdocs/luci-static/resources/view/fchomo/node.js:294 +#: htdocs/luci-static/resources/view/fchomo/server.js:212 msgid "Flow" msgstr "流控" @@ -836,7 +841,7 @@ msgstr "" msgid "Force DNS remote resolution." msgstr "强制 DNS 远程解析。" -#: htdocs/luci-static/resources/view/fchomo/global.js:580 +#: htdocs/luci-static/resources/view/fchomo/global.js:616 msgid "Forced sniffing domain" msgstr "强制嗅探域名" @@ -844,7 +849,7 @@ msgstr "强制嗅探域名" msgid "Format" msgstr "格式" -#: htdocs/luci-static/resources/view/fchomo/global.js:175 +#: htdocs/luci-static/resources/view/fchomo/global.js:138 #: htdocs/luci-static/resources/view/fchomo/log.js:97 #: htdocs/luci-static/resources/view/fchomo/log.js:102 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:3 @@ -855,11 +860,11 @@ msgstr "" msgid "GET" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:353 +#: htdocs/luci-static/resources/view/fchomo/global.js:378 msgid "GFW list version" msgstr "GFW 域名列表版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:361 +#: htdocs/luci-static/resources/view/fchomo/global.js:386 msgid "General" msgstr "常规" @@ -869,24 +874,24 @@ msgstr "常规" msgid "General fields" msgstr "常规字段" -#: htdocs/luci-static/resources/view/fchomo/global.js:364 +#: htdocs/luci-static/resources/view/fchomo/global.js:389 msgid "General settings" msgstr "常规设置" -#: htdocs/luci-static/resources/view/fchomo/server.js:52 -#: htdocs/luci-static/resources/view/fchomo/server.js:54 +#: htdocs/luci-static/resources/fchomo.js:282 +#: htdocs/luci-static/resources/fchomo.js:284 msgid "Generate" msgstr "生成" -#: htdocs/luci-static/resources/view/fchomo/global.js:480 +#: htdocs/luci-static/resources/view/fchomo/global.js:516 msgid "Generic segmentation offload" msgstr "通用分段卸载(GSO)" -#: htdocs/luci-static/resources/view/fchomo/global.js:338 +#: htdocs/luci-static/resources/view/fchomo/global.js:363 msgid "GeoIP version" msgstr "GeoIP 版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:341 +#: htdocs/luci-static/resources/view/fchomo/global.js:366 msgid "GeoSite version" msgstr "GeoSite 版本" @@ -904,20 +909,20 @@ msgstr "Geoip 启用" msgid "Geosite" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:51 +#: htdocs/luci-static/resources/fchomo.js:56 msgid "GitHub" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:370 +#: htdocs/luci-static/resources/view/fchomo/global.js:395 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:14 msgid "Global" msgstr "全局" -#: htdocs/luci-static/resources/view/fchomo/global.js:410 +#: htdocs/luci-static/resources/view/fchomo/global.js:435 msgid "Global Authentication" msgstr "全局认证" -#: htdocs/luci-static/resources/view/fchomo/global.js:504 +#: htdocs/luci-static/resources/view/fchomo/global.js:540 msgid "Global client fingerprint" msgstr "全局客户端指纹" @@ -925,7 +930,7 @@ msgstr "全局客户端指纹" msgid "Global padding" msgstr "全局填充" -#: htdocs/luci-static/resources/fchomo.js:50 +#: htdocs/luci-static/resources/fchomo.js:55 msgid "Google" msgstr "谷歌" @@ -937,8 +942,8 @@ msgstr "授予 fchomo 访问 UCI 配置的权限" msgid "Group" msgstr "组" -#: htdocs/luci-static/resources/fchomo.js:61 -#: htdocs/luci-static/resources/fchomo.js:88 +#: htdocs/luci-static/resources/fchomo.js:66 +#: htdocs/luci-static/resources/fchomo.js:94 #: htdocs/luci-static/resources/view/fchomo/node.js:411 #: htdocs/luci-static/resources/view/fchomo/node.js:583 #: htdocs/luci-static/resources/view/fchomo/node.js:594 @@ -959,7 +964,7 @@ msgstr "HTTP 请求方法" msgid "HTTP/3" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:196 +#: htdocs/luci-static/resources/view/fchomo/server.js:146 msgid "" "HTTP3 server behavior when authentication fails.
A 404 page will be " "returned if empty." @@ -970,7 +975,7 @@ msgstr "身份验证失败时的 HTTP3 服务器响应。默认返回 404 页面 msgid "HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:743 +#: htdocs/luci-static/resources/view/fchomo/global.js:779 msgid "Handle domain" msgstr "处理域名" @@ -1020,8 +1025,8 @@ msgstr "主机密钥算法" msgid "Hosts" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:67 -#: htdocs/luci-static/resources/fchomo.js:98 +#: htdocs/luci-static/resources/fchomo.js:73 +#: htdocs/luci-static/resources/fchomo.js:104 msgid "Hysteria2" msgstr "" @@ -1043,24 +1048,24 @@ msgstr "IP 覆写" msgid "IP version" msgstr "IP 版本" -#: htdocs/luci-static/resources/fchomo.js:74 +#: htdocs/luci-static/resources/fchomo.js:80 msgid "IPv4 only" msgstr "仅 IPv4" -#: htdocs/luci-static/resources/fchomo.js:75 +#: htdocs/luci-static/resources/fchomo.js:81 msgid "IPv6 only" msgstr "仅 IPv6" #: htdocs/luci-static/resources/view/fchomo/client.js:899 -#: htdocs/luci-static/resources/view/fchomo/global.js:390 +#: htdocs/luci-static/resources/view/fchomo/global.js:415 msgid "IPv6 support" msgstr "IPv6 支持" -#: htdocs/luci-static/resources/view/fchomo/server.js:241 +#: htdocs/luci-static/resources/view/fchomo/server.js:191 msgid "Idle timeout" msgstr "空闲超时" -#: htdocs/luci-static/resources/fchomo.js:766 +#: htdocs/luci-static/resources/fchomo.js:911 msgid "If All ports is selected, uncheck others" msgstr "如果选择了“所有端口”,则取消选中“其他”" @@ -1068,7 +1073,7 @@ msgstr "如果选择了“所有端口”,则取消选中“其他”" msgid "If Block is selected, uncheck others" msgstr "如果选择了“阻止”,则取消选中“其他”" -#: htdocs/luci-static/resources/view/fchomo/server.js:175 +#: htdocs/luci-static/resources/view/fchomo/server.js:125 msgid "Ignore client bandwidth" msgstr "忽略客户端带宽" @@ -1086,8 +1091,8 @@ msgstr "导入 rule-set 链接" #: htdocs/luci-static/resources/view/fchomo/node.js:103 #: htdocs/luci-static/resources/view/fchomo/node.js:947 #: htdocs/luci-static/resources/view/fchomo/node.js:952 -#: htdocs/luci-static/resources/view/fchomo/server.js:164 -#: htdocs/luci-static/resources/view/fchomo/server.js:170 +#: htdocs/luci-static/resources/view/fchomo/server.js:114 +#: htdocs/luci-static/resources/view/fchomo/server.js:120 msgid "In Mbps." msgstr "单位为 Mbps。" @@ -1107,22 +1112,22 @@ msgstr "单位为毫秒。" msgid "In millisecond. %s will be used if empty." msgstr "单位为毫秒。留空则使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/server.js:242 -#: htdocs/luci-static/resources/view/fchomo/server.js:249 +#: htdocs/luci-static/resources/view/fchomo/server.js:192 +#: htdocs/luci-static/resources/view/fchomo/server.js:199 msgid "In seconds." msgstr "单位为秒。" #: htdocs/luci-static/resources/view/fchomo/client.js:730 -#: htdocs/luci-static/resources/view/fchomo/global.js:400 -#: htdocs/luci-static/resources/view/fchomo/global.js:405 -#: htdocs/luci-static/resources/view/fchomo/global.js:488 +#: htdocs/luci-static/resources/view/fchomo/global.js:425 +#: htdocs/luci-static/resources/view/fchomo/global.js:430 +#: htdocs/luci-static/resources/view/fchomo/global.js:524 #: htdocs/luci-static/resources/view/fchomo/node.js:881 #: htdocs/luci-static/resources/view/fchomo/node.js:1003 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:298 msgid "In seconds. %s will be used if empty." msgstr "单位为秒。留空则使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/global.js:424 +#: htdocs/luci-static/resources/view/fchomo/global.js:449 msgid "Inbound" msgstr "入站" @@ -1150,7 +1155,7 @@ msgstr "引入所有代理节点及供应商。" msgid "Includes all Proxy Node." msgstr "引入所有代理节点。" -#: htdocs/luci-static/resources/view/fchomo/global.js:383 +#: htdocs/luci-static/resources/view/fchomo/global.js:408 msgid "Info" msgstr "信息" @@ -1159,15 +1164,15 @@ msgstr "信息" msgid "Inline" msgstr "内嵌" -#: htdocs/luci-static/resources/view/fchomo/global.js:645 +#: htdocs/luci-static/resources/view/fchomo/global.js:681 msgid "Interface Control" msgstr "接口控制" -#: htdocs/luci-static/resources/fchomo.js:72 +#: htdocs/luci-static/resources/fchomo.js:78 msgid "Keep default" msgstr "保持缺省" -#: htdocs/luci-static/resources/view/fchomo/server.js:312 +#: htdocs/luci-static/resources/view/fchomo/server.js:277 msgid "Key path" msgstr "证书路径" @@ -1180,7 +1185,7 @@ msgstr "证书路径" #: htdocs/luci-static/resources/view/fchomo/node.js:814 #: htdocs/luci-static/resources/view/fchomo/node.js:1065 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:194 -#: htdocs/luci-static/resources/view/fchomo/server.js:119 +#: htdocs/luci-static/resources/view/fchomo/server.js:69 msgid "Label" msgstr "标签" @@ -1189,7 +1194,7 @@ msgstr "标签" msgid "Lazy" msgstr "懒惰状态" -#: htdocs/luci-static/resources/view/fchomo/server.js:263 +#: htdocs/luci-static/resources/view/fchomo/server.js:219 msgid "" "Legacy protocol support (VMess MD5 Authentication) is provided for " "compatibility purposes only, use of alterId > 1 is not recommended." @@ -1197,33 +1202,34 @@ msgstr "" "提供旧协议支持(VMess MD5 身份验证)仅出于兼容性目的,不建议使用 alterId > " "1。" -#: htdocs/luci-static/resources/view/fchomo/global.js:468 +#: htdocs/luci-static/resources/view/fchomo/global.js:494 +#: htdocs/luci-static/resources/view/fchomo/global.js:509 msgid "Less compatibility and sometimes better performance." msgstr "有时性能更好。" #: htdocs/luci-static/resources/view/fchomo/node.js:525 -#: htdocs/luci-static/resources/view/fchomo/server.js:293 +#: htdocs/luci-static/resources/view/fchomo/server.js:258 msgid "List of supported application level protocols, in order of preference." msgstr "支持的应用层协议协商列表,按顺序排列。" -#: htdocs/luci-static/resources/view/fchomo/server.js:134 +#: htdocs/luci-static/resources/view/fchomo/server.js:84 msgid "Listen address" msgstr "监听地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:647 +#: htdocs/luci-static/resources/view/fchomo/global.js:683 msgid "Listen interfaces" msgstr "监听接口" #: htdocs/luci-static/resources/view/fchomo/client.js:894 -#: htdocs/luci-static/resources/view/fchomo/server.js:139 +#: htdocs/luci-static/resources/view/fchomo/server.js:89 msgid "Listen port" msgstr "监听端口" -#: htdocs/luci-static/resources/view/fchomo/global.js:427 +#: htdocs/luci-static/resources/view/fchomo/global.js:452 msgid "Listen ports" msgstr "监听端口" -#: htdocs/luci-static/resources/fchomo.js:126 +#: htdocs/luci-static/resources/fchomo.js:132 msgid "Load balance" msgstr "负载均衡" @@ -1252,20 +1258,20 @@ msgstr "日志文件不存在。" msgid "Log is empty." msgstr "日志为空。" -#: htdocs/luci-static/resources/view/fchomo/global.js:379 +#: htdocs/luci-static/resources/view/fchomo/global.js:404 msgid "Log level" msgstr "日志等级" -#: htdocs/luci-static/resources/fchomo.js:637 +#: htdocs/luci-static/resources/fchomo.js:728 msgid "Lowercase only" msgstr "仅限小写" -#: htdocs/luci-static/resources/view/fchomo/global.js:476 +#: htdocs/luci-static/resources/view/fchomo/global.js:512 #: htdocs/luci-static/resources/view/fchomo/node.js:383 msgid "MTU" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:195 +#: htdocs/luci-static/resources/view/fchomo/server.js:145 msgid "Masquerade" msgstr "伪装" @@ -1302,7 +1308,7 @@ msgid "Max Early Data" msgstr "前置数据最大值" #: htdocs/luci-static/resources/view/fchomo/node.js:238 -#: htdocs/luci-static/resources/view/fchomo/server.js:235 +#: htdocs/luci-static/resources/view/fchomo/server.js:185 msgid "Max UDP relay packet size" msgstr "UDP 中继数据包最大尺寸" @@ -1311,12 +1317,12 @@ msgid "Max count of failures" msgstr "最大失败次数" #: htdocs/luci-static/resources/view/fchomo/node.js:102 -#: htdocs/luci-static/resources/view/fchomo/server.js:169 +#: htdocs/luci-static/resources/view/fchomo/server.js:119 msgid "Max download speed" msgstr "最大下载速度" #: htdocs/luci-static/resources/view/fchomo/node.js:96 -#: htdocs/luci-static/resources/view/fchomo/server.js:163 +#: htdocs/luci-static/resources/view/fchomo/server.js:113 msgid "Max upload speed" msgstr "最大上传速度" @@ -1337,7 +1343,7 @@ msgstr "" msgid "Maximum streams" msgstr "最大流数量" -#: htdocs/luci-static/resources/fchomo.js:92 +#: htdocs/luci-static/resources/fchomo.js:98 msgid "Mieru" msgstr "" @@ -1349,7 +1355,7 @@ msgstr "Mihomo 客户端" #: htdocs/luci-static/resources/view/fchomo/log.js:115 #: htdocs/luci-static/resources/view/fchomo/log.js:120 -#: htdocs/luci-static/resources/view/fchomo/server.js:74 +#: htdocs/luci-static/resources/view/fchomo/server.js:24 msgid "Mihomo server" msgstr "Mihomo 服务端" @@ -1363,16 +1369,17 @@ msgstr "在打开新连接之前,连接中的最小多路复用流数量。" msgid "Minimum streams" msgstr "最小流数量" -#: htdocs/luci-static/resources/fchomo.js:63 -#: htdocs/luci-static/resources/view/fchomo/global.js:471 +#: htdocs/luci-static/resources/fchomo.js:68 +#: htdocs/luci-static/resources/view/fchomo/global.js:497 msgid "Mixed" msgstr "混合" -#: htdocs/luci-static/resources/view/fchomo/global.js:471 +#: htdocs/luci-static/resources/view/fchomo/global.js:497 +#: htdocs/luci-static/resources/view/fchomo/global.js:505 msgid "Mixed system TCP stack and gVisor UDP stack." msgstr "混合 系统 TCP 栈和 gVisor UDP 栈。" -#: htdocs/luci-static/resources/view/fchomo/global.js:430 +#: htdocs/luci-static/resources/view/fchomo/global.js:455 msgid "Mixed port" msgstr "混合端口" @@ -1405,7 +1412,7 @@ msgstr "用于下载规则集订阅的代理组名称。" msgid "Native" msgstr "原生" -#: htdocs/luci-static/resources/view/fchomo/global.js:418 +#: htdocs/luci-static/resources/view/fchomo/global.js:443 msgid "No Authentication IP ranges" msgstr "无需认证的 IP 范围" @@ -1448,14 +1455,15 @@ msgid "Node switch tolerance" msgstr "节点切换容差" #: htdocs/luci-static/resources/view/fchomo/node.js:295 +#: htdocs/luci-static/resources/view/fchomo/server.js:213 msgid "None" msgstr "无" -#: htdocs/luci-static/resources/view/fchomo/global.js:534 +#: htdocs/luci-static/resources/view/fchomo/global.js:570 msgid "Not Installed" msgstr "未安装" -#: htdocs/luci-static/resources/fchomo.js:571 +#: htdocs/luci-static/resources/fchomo.js:662 msgid "Not Running" msgstr "未在运行" @@ -1464,43 +1472,42 @@ msgid "Obfs Mode" msgstr "Obfs 模式" #: htdocs/luci-static/resources/view/fchomo/node.js:114 -#: htdocs/luci-static/resources/view/fchomo/server.js:187 +#: htdocs/luci-static/resources/view/fchomo/server.js:137 msgid "Obfuscate password" msgstr "混淆密码" #: htdocs/luci-static/resources/view/fchomo/node.js:108 -#: htdocs/luci-static/resources/view/fchomo/server.js:181 +#: htdocs/luci-static/resources/view/fchomo/server.js:131 msgid "Obfuscate type" msgstr "混淆类型" -#: htdocs/luci-static/resources/view/fchomo/global.js:766 +#: htdocs/luci-static/resources/view/fchomo/global.js:802 msgid "One or more numbers in the range 0-63 separated by commas" msgstr "0-63 范围内的一个或多个数字,以逗号分隔" -#: htdocs/luci-static/resources/view/fchomo/global.js:648 +#: htdocs/luci-static/resources/view/fchomo/global.js:684 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "只处理来自指定接口的流量。留空表示全部。" -#: htdocs/luci-static/resources/fchomo.js:565 +#: htdocs/luci-static/resources/fchomo.js:656 msgid "Open Dashboard" msgstr "打开面板" -#: htdocs/luci-static/resources/view/fchomo/global.js:367 +#: htdocs/luci-static/resources/view/fchomo/global.js:392 msgid "Operation mode" msgstr "运行模式" #: htdocs/luci-static/resources/view/fchomo/client.js:704 #: htdocs/luci-static/resources/view/fchomo/client.js:713 -msgid "" -"Option will soon be deprecated, please use the same option in proxy node." -msgstr "该选项即将被弃用,请在代理节点中使用相同的选项。" +msgid "Option is deprecated, please use the same option in proxy node." +msgstr "该选项已弃用,请在代理节点中使用相同的选项。" #: htdocs/luci-static/resources/view/fchomo/client.js:1063 msgid "Override ECS in original request." msgstr "覆盖原始请求中的 ECS。" -#: htdocs/luci-static/resources/view/fchomo/global.js:576 -#: htdocs/luci-static/resources/view/fchomo/global.js:614 +#: htdocs/luci-static/resources/view/fchomo/global.js:612 +#: htdocs/luci-static/resources/view/fchomo/global.js:650 msgid "Override destination" msgstr "覆盖目标地址" @@ -1517,11 +1524,11 @@ msgstr "覆盖 DNS 回应的服务器的 IP 地址。" msgid "Override the Proxy group of DNS server." msgstr "覆盖 DNS 服务器所使用的代理组。" -#: htdocs/luci-static/resources/view/fchomo/global.js:577 +#: htdocs/luci-static/resources/view/fchomo/global.js:613 msgid "Override the connection destination address with the sniffed domain." msgstr "使用嗅探到的域名覆盖连接目标。" -#: htdocs/luci-static/resources/view/fchomo/global.js:181 +#: htdocs/luci-static/resources/view/fchomo/global.js:160 msgid "Overview" msgstr "概览" @@ -1540,8 +1547,8 @@ msgstr "数据包编码" #: htdocs/luci-static/resources/view/fchomo/node.js:78 #: htdocs/luci-static/resources/view/fchomo/node.js:151 #: htdocs/luci-static/resources/view/fchomo/node.js:424 -#: htdocs/luci-static/resources/view/fchomo/server.js:154 -#: htdocs/luci-static/resources/view/fchomo/server.js:210 +#: htdocs/luci-static/resources/view/fchomo/server.js:104 +#: htdocs/luci-static/resources/view/fchomo/server.js:160 msgid "Password" msgstr "密码" @@ -1554,7 +1561,7 @@ msgstr "Payload" msgid "Peer pubkic key" msgstr "对端公钥" -#: htdocs/luci-static/resources/view/fchomo/global.js:493 +#: htdocs/luci-static/resources/view/fchomo/global.js:529 msgid "" "Performance may degrade slightly, so it is not recommended to enable on when " "it is not needed." @@ -1597,7 +1604,7 @@ msgstr "插件:" msgid "Port" msgstr "端口" -#: htdocs/luci-static/resources/fchomo.js:775 +#: htdocs/luci-static/resources/fchomo.js:920 msgid "Port %s alrealy exists!" msgstr "端口 %s 已存在!" @@ -1605,7 +1612,7 @@ msgstr "端口 %s 已存在!" msgid "Port range" msgstr "端口范围" -#: htdocs/luci-static/resources/view/fchomo/global.js:611 +#: htdocs/luci-static/resources/view/fchomo/global.js:647 msgid "Ports" msgstr "端口" @@ -1618,24 +1625,24 @@ msgstr "端口池" msgid "Pre-shared key" msgstr "预共享密钥" -#: htdocs/luci-static/resources/fchomo.js:76 +#: htdocs/luci-static/resources/fchomo.js:82 msgid "Prefer IPv4" msgstr "优先 IPv4" -#: htdocs/luci-static/resources/fchomo.js:77 +#: htdocs/luci-static/resources/fchomo.js:83 msgid "Prefer IPv6" msgstr "优先 IPv6" #: htdocs/luci-static/resources/view/fchomo/client.js:703 #: htdocs/luci-static/resources/view/fchomo/client.js:712 -#: htdocs/luci-static/resources/view/fchomo/global.js:654 -#: htdocs/luci-static/resources/view/fchomo/global.js:671 +#: htdocs/luci-static/resources/view/fchomo/global.js:690 +#: htdocs/luci-static/resources/view/fchomo/global.js:707 #: htdocs/luci-static/resources/view/fchomo/node.js:763 #: htdocs/luci-static/resources/view/fchomo/node.js:769 #: htdocs/luci-static/resources/view/fchomo/node.js:971 #: htdocs/luci-static/resources/view/fchomo/node.js:977 -msgid "Priority: Proxy Node > Proxy Group > Global." -msgstr "优先级: 代理节点 > 代理组 > 全局。" +msgid "Priority: Proxy Node > Global." +msgstr "优先级: 代理节点 > 全局。" #: htdocs/luci-static/resources/view/fchomo/node.js:123 msgid "Priv-key" @@ -1649,11 +1656,11 @@ msgstr "密钥密码" msgid "Private key" msgstr "私钥" -#: htdocs/luci-static/resources/view/fchomo/global.js:373 +#: htdocs/luci-static/resources/view/fchomo/global.js:398 msgid "Process matching mode" msgstr "进程匹配模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:605 +#: htdocs/luci-static/resources/view/fchomo/global.js:641 #: htdocs/luci-static/resources/view/fchomo/node.js:681 msgid "Protocol" msgstr "协议" @@ -1684,15 +1691,15 @@ msgstr "供应商订阅 URL" msgid "Proxy Group" msgstr "代理组" -#: htdocs/luci-static/resources/view/fchomo/global.js:704 +#: htdocs/luci-static/resources/view/fchomo/global.js:740 msgid "Proxy IPv4 IP-s" msgstr "代理 IPv4 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:707 +#: htdocs/luci-static/resources/view/fchomo/global.js:743 msgid "Proxy IPv6 IP-s" msgstr "代理 IPv6 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:710 +#: htdocs/luci-static/resources/view/fchomo/global.js:746 msgid "Proxy MAC-s" msgstr "代理 MAC 地址" @@ -1717,11 +1724,11 @@ msgstr "代理组" msgid "Proxy group override" msgstr "代理组覆盖" -#: htdocs/luci-static/resources/view/fchomo/global.js:450 +#: htdocs/luci-static/resources/view/fchomo/global.js:476 msgid "Proxy mode" msgstr "代理模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:713 +#: htdocs/luci-static/resources/view/fchomo/global.js:749 msgid "Proxy routerself" msgstr "代理路由器自身" @@ -1730,28 +1737,43 @@ msgid "QUIC" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:211 -#: htdocs/luci-static/resources/view/fchomo/server.js:227 +#: htdocs/luci-static/resources/view/fchomo/server.js:177 msgid "QUIC congestion controller." msgstr "QUIC 拥塞控制器。" #: htdocs/luci-static/resources/view/fchomo/client.js:599 -#: htdocs/luci-static/resources/view/fchomo/server.js:95 +#: htdocs/luci-static/resources/view/fchomo/server.js:45 msgid "Quick Reload" msgstr "快速重载" #: htdocs/luci-static/resources/view/fchomo/node.js:560 +#: htdocs/luci-static/resources/view/fchomo/server.js:293 msgid "REALITY" -msgstr "" +msgstr "REALITY" + +#: htdocs/luci-static/resources/view/fchomo/server.js:329 +msgid "REALITY certificate issued to" +msgstr "REALITY 证书颁发给" + +#: htdocs/luci-static/resources/view/fchomo/server.js:298 +msgid "REALITY handshake server" +msgstr "REALITY 握手服务器" + +#: htdocs/luci-static/resources/view/fchomo/server.js:305 +msgid "REALITY private key" +msgstr "REALITY 私钥" #: htdocs/luci-static/resources/view/fchomo/node.js:565 +#: htdocs/luci-static/resources/view/fchomo/server.js:319 msgid "REALITY public key" msgstr "REALITY 公钥" #: htdocs/luci-static/resources/view/fchomo/node.js:570 +#: htdocs/luci-static/resources/view/fchomo/server.js:323 msgid "REALITY short ID" msgstr "REALITY 标识符" -#: htdocs/luci-static/resources/view/fchomo/global.js:565 +#: htdocs/luci-static/resources/view/fchomo/global.js:601 msgid "Random will be used if empty." msgstr "留空将使用随机令牌。" @@ -1760,19 +1782,19 @@ msgstr "留空将使用随机令牌。" msgid "Recommended to use UoT node.
such as %s." msgstr "建议使用 UoT 节点。
例如%s。" -#: htdocs/luci-static/resources/view/fchomo/global.js:435 +#: htdocs/luci-static/resources/view/fchomo/global.js:460 msgid "Redir port" msgstr "Redir 端口" -#: htdocs/luci-static/resources/view/fchomo/global.js:451 +#: htdocs/luci-static/resources/view/fchomo/global.js:477 msgid "Redirect TCP" msgstr "Redirect TCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:453 +#: htdocs/luci-static/resources/view/fchomo/global.js:479 msgid "Redirect TCP + TProxy UDP" msgstr "Redirect TCP + TProxy UDP" -#: htdocs/luci-static/resources/view/fchomo/global.js:455 +#: htdocs/luci-static/resources/view/fchomo/global.js:481 msgid "Redirect TCP + Tun UDP" msgstr "Redirect TCP + Tun UDP" @@ -1780,14 +1802,14 @@ msgstr "Redirect TCP + Tun UDP" msgid "Refresh every %s seconds." msgstr "每 %s 秒刷新。" -#: htdocs/luci-static/resources/fchomo.js:558 +#: htdocs/luci-static/resources/fchomo.js:649 #: htdocs/luci-static/resources/view/fchomo/client.js:600 -#: htdocs/luci-static/resources/view/fchomo/global.js:214 -#: htdocs/luci-static/resources/view/fchomo/server.js:96 +#: htdocs/luci-static/resources/view/fchomo/global.js:193 +#: htdocs/luci-static/resources/view/fchomo/server.js:46 msgid "Reload" msgstr "重载" -#: htdocs/luci-static/resources/view/fchomo/global.js:213 +#: htdocs/luci-static/resources/view/fchomo/global.js:192 msgid "Reload All" msgstr "重载所有" @@ -1800,11 +1822,11 @@ msgstr "远程" msgid "Remote DNS resolve" msgstr "远程 DNS 解析" -#: htdocs/luci-static/resources/fchomo.js:696 +#: htdocs/luci-static/resources/fchomo.js:841 msgid "Remove" msgstr "移除" -#: htdocs/luci-static/resources/fchomo.js:701 +#: htdocs/luci-static/resources/fchomo.js:846 #: htdocs/luci-static/resources/view/fchomo/node.js:800 #: htdocs/luci-static/resources/view/fchomo/node.js:802 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:185 @@ -1833,7 +1855,7 @@ msgstr "请求超时" msgid "Reserved field bytes" msgstr "保留字段字节" -#: htdocs/luci-static/resources/view/fchomo/global.js:273 +#: htdocs/luci-static/resources/view/fchomo/global.js:298 msgid "Resources management" msgstr "资源管理" @@ -1841,40 +1863,40 @@ msgstr "资源管理" msgid "Restls script" msgstr "Restls 剧本" -#: htdocs/luci-static/resources/view/fchomo/global.js:717 +#: htdocs/luci-static/resources/view/fchomo/global.js:753 msgid "Routing Control" msgstr "路由控制" -#: htdocs/luci-static/resources/view/fchomo/global.js:755 -#: htdocs/luci-static/resources/view/fchomo/global.js:758 +#: htdocs/luci-static/resources/view/fchomo/global.js:791 +#: htdocs/luci-static/resources/view/fchomo/global.js:794 msgid "Routing DSCP" msgstr "路由 DSCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:741 +#: htdocs/luci-static/resources/view/fchomo/global.js:777 msgid "Routing GFW" msgstr "路由 GFW 流量" #: htdocs/luci-static/resources/view/fchomo/client.js:711 -#: htdocs/luci-static/resources/view/fchomo/global.js:670 +#: htdocs/luci-static/resources/view/fchomo/global.js:706 #: htdocs/luci-static/resources/view/fchomo/node.js:768 #: htdocs/luci-static/resources/view/fchomo/node.js:976 msgid "Routing mark" msgstr "路由标记" -#: htdocs/luci-static/resources/view/fchomo/global.js:737 +#: htdocs/luci-static/resources/view/fchomo/global.js:773 msgid "Routing mode" msgstr "路由模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:738 +#: htdocs/luci-static/resources/view/fchomo/global.js:774 msgid "Routing mode of the traffic enters mihomo via firewall rules." msgstr "流量通过防火墙规则进入 mihomo 的路由模式。" -#: htdocs/luci-static/resources/view/fchomo/global.js:744 +#: htdocs/luci-static/resources/view/fchomo/global.js:780 msgid "Routing mode will be handle domain." msgstr "路由模式将处理域名。" -#: htdocs/luci-static/resources/view/fchomo/global.js:719 -#: htdocs/luci-static/resources/view/fchomo/global.js:728 +#: htdocs/luci-static/resources/view/fchomo/global.js:755 +#: htdocs/luci-static/resources/view/fchomo/global.js:764 msgid "Routing ports" msgstr "路由端口" @@ -1883,15 +1905,15 @@ msgstr "路由端口" msgid "Routing rule" msgstr "路由规则" -#: htdocs/luci-static/resources/view/fchomo/global.js:664 +#: htdocs/luci-static/resources/view/fchomo/global.js:700 msgid "Routing rule priority" msgstr "路由规则优先权" -#: htdocs/luci-static/resources/view/fchomo/global.js:658 +#: htdocs/luci-static/resources/view/fchomo/global.js:694 msgid "Routing table ID" msgstr "路由表 ID" -#: htdocs/luci-static/resources/view/fchomo/global.js:369 +#: htdocs/luci-static/resources/view/fchomo/global.js:394 msgid "Rule" msgstr "规则" @@ -1913,24 +1935,23 @@ msgstr "规则集" msgid "Ruleset-URI-Scheme" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:571 +#: htdocs/luci-static/resources/fchomo.js:662 msgid "Running" msgstr "正在运行" -#: htdocs/luci-static/resources/fchomo.js:62 +#: htdocs/luci-static/resources/fchomo.js:67 msgid "SOCKS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:89 +#: htdocs/luci-static/resources/fchomo.js:95 msgid "SOCKS5" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:101 +#: htdocs/luci-static/resources/fchomo.js:107 msgid "SSH" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:724 -#: htdocs/luci-static/resources/view/fchomo/global.js:733 +#: htdocs/luci-static/resources/fchomo.js:140 msgid "STUN ports" msgstr "STUN 端口" @@ -1943,31 +1964,31 @@ msgid "SUoT version" msgstr "SUoT 版本" #: htdocs/luci-static/resources/view/fchomo/node.js:110 -#: htdocs/luci-static/resources/view/fchomo/server.js:183 +#: htdocs/luci-static/resources/view/fchomo/server.js:133 msgid "Salamander" msgstr "Salamander" -#: htdocs/luci-static/resources/fchomo.js:82 +#: htdocs/luci-static/resources/fchomo.js:88 msgid "Same dstaddr requests. Same node" msgstr "相同 目标地址 请求。相同节点" -#: htdocs/luci-static/resources/fchomo.js:83 +#: htdocs/luci-static/resources/fchomo.js:89 msgid "Same srcaddr and dstaddr requests. Same node" msgstr "相同 来源地址 和 目标地址 请求。相同节点" -#: htdocs/luci-static/resources/view/fchomo/global.js:483 +#: htdocs/luci-static/resources/view/fchomo/global.js:519 msgid "Segment maximum size" msgstr "分段最大尺寸" -#: htdocs/luci-static/resources/fchomo.js:123 +#: htdocs/luci-static/resources/fchomo.js:129 msgid "Select" msgstr "手动选择" -#: htdocs/luci-static/resources/view/fchomo/global.js:526 +#: htdocs/luci-static/resources/view/fchomo/global.js:562 msgid "Select Dashboard" msgstr "选择面板" -#: htdocs/luci-static/resources/view/fchomo/server.js:113 +#: htdocs/luci-static/resources/view/fchomo/server.js:63 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:54 msgid "Server" msgstr "服务端" @@ -1980,16 +2001,16 @@ msgstr "服务器地址" msgid "Server hostname" msgstr "服务器主机名称" -#: htdocs/luci-static/resources/view/fchomo/global.js:205 +#: htdocs/luci-static/resources/view/fchomo/global.js:184 msgid "Server status" msgstr "服务端状态" -#: htdocs/luci-static/resources/view/fchomo/global.js:184 +#: htdocs/luci-static/resources/view/fchomo/global.js:163 msgid "Service status" msgstr "服务状态" -#: htdocs/luci-static/resources/fchomo.js:64 -#: htdocs/luci-static/resources/fchomo.js:90 +#: htdocs/luci-static/resources/fchomo.js:69 +#: htdocs/luci-static/resources/fchomo.js:96 msgid "Shadowsocks" msgstr "" @@ -2009,11 +2030,11 @@ msgstr "Shadowsocks 密码" msgid "Show connections in the dashboard for breaking connections easier." msgstr "在面板中显示连接以便于打断连接。" -#: htdocs/luci-static/resources/view/fchomo/global.js:380 +#: htdocs/luci-static/resources/view/fchomo/global.js:405 msgid "Silent" msgstr "静音" -#: htdocs/luci-static/resources/fchomo.js:81 +#: htdocs/luci-static/resources/fchomo.js:87 msgid "Simple round-robin all nodes" msgstr "简单轮替所有节点" @@ -2027,42 +2048,42 @@ msgstr "大小限制" msgid "Skip cert verify" msgstr "跳过证书验证" -#: htdocs/luci-static/resources/view/fchomo/global.js:583 +#: htdocs/luci-static/resources/view/fchomo/global.js:619 msgid "Skiped sniffing domain" msgstr "跳过嗅探域名" -#: htdocs/luci-static/resources/view/fchomo/global.js:589 +#: htdocs/luci-static/resources/view/fchomo/global.js:625 msgid "Skiped sniffing dst address" msgstr "跳过嗅探目标地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:586 +#: htdocs/luci-static/resources/view/fchomo/global.js:622 msgid "Skiped sniffing src address" msgstr "跳过嗅探来源地址" -#: htdocs/luci-static/resources/fchomo.js:93 +#: htdocs/luci-static/resources/fchomo.js:99 msgid "Snell" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:593 +#: htdocs/luci-static/resources/view/fchomo/global.js:629 msgid "Sniff protocol" msgstr "嗅探协议" -#: htdocs/luci-static/resources/view/fchomo/global.js:570 +#: htdocs/luci-static/resources/view/fchomo/global.js:606 msgid "Sniffer" msgstr "嗅探器" -#: htdocs/luci-static/resources/view/fchomo/global.js:573 +#: htdocs/luci-static/resources/view/fchomo/global.js:609 msgid "Sniffer settings" msgstr "嗅探器设置" -#: htdocs/luci-static/resources/view/fchomo/global.js:720 -#: htdocs/luci-static/resources/view/fchomo/global.js:729 +#: htdocs/luci-static/resources/view/fchomo/global.js:756 +#: htdocs/luci-static/resources/view/fchomo/global.js:765 msgid "" "Specify target ports to be proxied. Multiple ports must be separated by " "commas." msgstr "指定需要被代理的目标端口。多个端口必须用逗号隔开。" -#: htdocs/luci-static/resources/view/fchomo/global.js:466 +#: htdocs/luci-static/resources/view/fchomo/global.js:492 msgid "Stack" msgstr "堆栈" @@ -2088,7 +2109,7 @@ msgstr "已成功导入 %s 个规则集 (共 %s 个)。" msgid "Successfully updated." msgstr "更新成功。" -#: htdocs/luci-static/resources/fchomo.js:998 +#: htdocs/luci-static/resources/fchomo.js:1143 msgid "Successfully uploaded." msgstr "已成功上传。" @@ -2100,7 +2121,7 @@ msgstr "" "支持规则集类型为: %s 并且格式为: %s 的规则集链接。" "
" -#: htdocs/luci-static/resources/view/fchomo/global.js:468 +#: htdocs/luci-static/resources/view/fchomo/global.js:494 msgid "System" msgstr "系统" @@ -2113,7 +2134,7 @@ msgstr "系统 DNS" msgid "TCP" msgstr "TCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:396 +#: htdocs/luci-static/resources/view/fchomo/global.js:421 msgid "TCP concurrency" msgstr "TCP 并发" @@ -2121,11 +2142,11 @@ msgstr "TCP 并发" msgid "TCP only" msgstr "仅 TCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:404 +#: htdocs/luci-static/resources/view/fchomo/global.js:429 msgid "TCP-Keep-Alive idle timeout" msgstr "TCP-Keep-Alive 闲置超时" -#: htdocs/luci-static/resources/view/fchomo/global.js:399 +#: htdocs/luci-static/resources/view/fchomo/global.js:424 msgid "TCP-Keep-Alive interval" msgstr "TCP-Keep-Alive 间隔" @@ -2134,15 +2155,15 @@ msgstr "TCP-Keep-Alive 间隔" msgid "TFO" msgstr "TCP 快速打开 (TFO)" -#: htdocs/luci-static/resources/view/fchomo/global.js:498 +#: htdocs/luci-static/resources/view/fchomo/global.js:534 #: htdocs/luci-static/resources/view/fchomo/node.js:412 #: htdocs/luci-static/resources/view/fchomo/node.js:470 -#: htdocs/luci-static/resources/view/fchomo/server.js:270 +#: htdocs/luci-static/resources/view/fchomo/server.js:226 msgid "TLS" msgstr "TLS" #: htdocs/luci-static/resources/view/fchomo/node.js:524 -#: htdocs/luci-static/resources/view/fchomo/server.js:292 +#: htdocs/luci-static/resources/view/fchomo/server.js:257 msgid "TLS ALPN" msgstr "TLS ALPN" @@ -2154,17 +2175,16 @@ msgstr "" msgid "TLS fields" msgstr "TLS字段" -#: htdocs/luci-static/resources/fchomo.js:66 -#: htdocs/luci-static/resources/fchomo.js:99 +#: htdocs/luci-static/resources/fchomo.js:72 +#: htdocs/luci-static/resources/fchomo.js:105 msgid "TUIC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:725 -#: htdocs/luci-static/resources/view/fchomo/global.js:734 +#: htdocs/luci-static/resources/fchomo.js:141 msgid "TURN ports" msgstr "TURN 端口" -#: htdocs/luci-static/resources/view/fchomo/server.js:176 +#: htdocs/luci-static/resources/view/fchomo/server.js:126 msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "让客户端使用 BBR 流控算法。" @@ -2174,7 +2194,7 @@ msgstr "让客户端使用 BBR 流控算法。" msgid "The %s address used by local machine in the Wireguard network." msgstr "WireGuard 网络中使用的本机 %s 地址。" -#: htdocs/luci-static/resources/view/fchomo/global.js:297 +#: htdocs/luci-static/resources/view/fchomo/global.js:322 msgid "The default value is 2:00 every day." msgstr "默认值为每天 2:00。" @@ -2188,11 +2208,11 @@ msgstr "匹配 %s 的将被视为未被投毒污染。" msgid "The matching %s will be deemed as poisoned." msgstr "匹配 %s 的将被视为已被投毒污染。" -#: htdocs/luci-static/resources/view/fchomo/server.js:313 +#: htdocs/luci-static/resources/view/fchomo/server.js:278 msgid "The server private key, in PEM format." msgstr "服务端私钥,需要 PEM 格式。" -#: htdocs/luci-static/resources/view/fchomo/server.js:298 +#: htdocs/luci-static/resources/view/fchomo/server.js:263 msgid "The server public key, in PEM format." msgstr "服务端公钥,需要 PEM 格式。" @@ -2212,29 +2232,29 @@ msgstr "" "这是 TUIC 的 SUoT 协议移植, 旨在提供 TUIC 不提供的基于 QUIC 流的 UDP 中继模" "式。" -#: htdocs/luci-static/resources/view/fchomo/global.js:256 +#: htdocs/luci-static/resources/view/fchomo/global.js:235 msgid "" "To check NAT Behavior you need to install stuntman-client first" msgstr "" "检测 NAT 行为需要先安装 stuntman-client first" -#: htdocs/luci-static/resources/view/fchomo/global.js:458 +#: htdocs/luci-static/resources/view/fchomo/global.js:484 msgid "" "To enable Tun support, you need to install ip-full and " "kmod-tun" msgstr "" "要启用 Tun 支持,您需要安装 ip-fullkmod-tun。" -#: htdocs/luci-static/resources/view/fchomo/global.js:747 +#: htdocs/luci-static/resources/view/fchomo/global.js:783 msgid "To enable, you need to install dnsmasq-full." msgstr "要启用,您需要安装 dnsmasq-full。" -#: htdocs/luci-static/resources/view/fchomo/global.js:677 +#: htdocs/luci-static/resources/view/fchomo/global.js:713 msgid "Tproxy Fwmark" msgstr "Tproxy 标记" -#: htdocs/luci-static/resources/view/fchomo/global.js:440 +#: htdocs/luci-static/resources/view/fchomo/global.js:465 msgid "Tproxy port" msgstr "Tproxy 端口" @@ -2251,23 +2271,23 @@ msgstr "传输层字段" msgid "Transport type" msgstr "传输层类型" -#: htdocs/luci-static/resources/fchomo.js:96 +#: htdocs/luci-static/resources/fchomo.js:102 msgid "Trojan" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:682 +#: htdocs/luci-static/resources/view/fchomo/global.js:718 msgid "Tun Fwmark" msgstr "Tun 标记" -#: htdocs/luci-static/resources/view/fchomo/global.js:456 +#: htdocs/luci-static/resources/view/fchomo/global.js:482 msgid "Tun TCP/UDP" msgstr "Tun TCP/UDP" -#: htdocs/luci-static/resources/view/fchomo/global.js:463 +#: htdocs/luci-static/resources/view/fchomo/global.js:489 msgid "Tun settings" msgstr "Tun 设置" -#: htdocs/luci-static/resources/view/fchomo/global.js:467 +#: htdocs/luci-static/resources/view/fchomo/global.js:493 msgid "Tun stack." msgstr "Tun 堆栈" @@ -2280,7 +2300,7 @@ msgstr "Tun 堆栈" #: htdocs/luci-static/resources/view/fchomo/node.js:823 #: htdocs/luci-static/resources/view/fchomo/node.js:1074 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:203 -#: htdocs/luci-static/resources/view/fchomo/server.js:128 +#: htdocs/luci-static/resources/view/fchomo/server.js:78 msgid "Type" msgstr "类型" @@ -2288,11 +2308,11 @@ msgstr "类型" #: htdocs/luci-static/resources/view/fchomo/client.js:404 #: htdocs/luci-static/resources/view/fchomo/node.js:451 #: htdocs/luci-static/resources/view/fchomo/node.js:937 -#: htdocs/luci-static/resources/view/fchomo/server.js:328 +#: htdocs/luci-static/resources/view/fchomo/server.js:337 msgid "UDP" msgstr "UDP" -#: htdocs/luci-static/resources/view/fchomo/global.js:487 +#: htdocs/luci-static/resources/view/fchomo/global.js:523 msgid "UDP NAT expiration time" msgstr "UDP NAT 过期时间" @@ -2312,18 +2332,18 @@ msgstr "UDP 包中继模式。" msgid "UDP relay mode" msgstr "UDP 中继模式" -#: htdocs/luci-static/resources/fchomo.js:125 +#: htdocs/luci-static/resources/fchomo.js:131 msgid "URL test" msgstr "自动选择" #: htdocs/luci-static/resources/view/fchomo/node.js:198 #: htdocs/luci-static/resources/view/fchomo/node.js:288 -#: htdocs/luci-static/resources/view/fchomo/server.js:220 -#: htdocs/luci-static/resources/view/fchomo/server.js:256 +#: htdocs/luci-static/resources/view/fchomo/server.js:170 +#: htdocs/luci-static/resources/view/fchomo/server.js:206 msgid "UUID" msgstr "UUID" -#: htdocs/luci-static/resources/fchomo.js:616 +#: htdocs/luci-static/resources/fchomo.js:707 msgid "Unable to download unsupported type: %s" msgstr "无法下载不支持的类型: %s" @@ -2331,12 +2351,12 @@ msgstr "无法下载不支持的类型: %s" msgid "Unable to save contents: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:393 +#: htdocs/luci-static/resources/view/fchomo/global.js:418 msgid "Unified delay" msgstr "统一延迟" -#: htdocs/luci-static/resources/view/fchomo/global.js:189 -#: htdocs/luci-static/resources/view/fchomo/global.js:194 +#: htdocs/luci-static/resources/view/fchomo/global.js:168 +#: htdocs/luci-static/resources/view/fchomo/global.js:173 msgid "Unknown" msgstr "未知" @@ -2370,21 +2390,21 @@ msgstr "上传带宽" msgid "Upload bandwidth in Mbps." msgstr "上传带宽(单位:Mbps)。" -#: htdocs/luci-static/resources/view/fchomo/server.js:304 +#: htdocs/luci-static/resources/view/fchomo/server.js:269 msgid "Upload certificate" msgstr "上传证书" -#: htdocs/luci-static/resources/view/fchomo/global.js:277 +#: htdocs/luci-static/resources/view/fchomo/global.js:302 msgid "Upload initial package" msgstr "上传初始资源包" -#: htdocs/luci-static/resources/view/fchomo/server.js:319 +#: htdocs/luci-static/resources/view/fchomo/server.js:284 msgid "Upload key" msgstr "上传密钥" -#: htdocs/luci-static/resources/view/fchomo/global.js:279 -#: htdocs/luci-static/resources/view/fchomo/server.js:307 -#: htdocs/luci-static/resources/view/fchomo/server.js:322 +#: htdocs/luci-static/resources/view/fchomo/global.js:304 +#: htdocs/luci-static/resources/view/fchomo/server.js:272 +#: htdocs/luci-static/resources/view/fchomo/server.js:287 msgid "Upload..." msgstr "上传..." @@ -2400,16 +2420,16 @@ msgstr "用于解析代理节点的域名。" msgid "Used to verify the hostname on the returned certificates." msgstr "用于验证返回的证书上的主机名。" -#: htdocs/luci-static/resources/view/fchomo/global.js:413 +#: htdocs/luci-static/resources/view/fchomo/global.js:438 msgid "User Authentication" msgstr "用户认证" #: htdocs/luci-static/resources/view/fchomo/node.js:73 -#: htdocs/luci-static/resources/view/fchomo/server.js:149 +#: htdocs/luci-static/resources/view/fchomo/server.js:99 msgid "Username" msgstr "用户名" -#: htdocs/luci-static/resources/view/fchomo/global.js:690 +#: htdocs/luci-static/resources/view/fchomo/global.js:726 msgid "Users filter mode" msgstr "使用者过滤模式" @@ -2421,12 +2441,13 @@ msgstr "" msgid "V2ray HTTPUpgrade fast open" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:95 +#: htdocs/luci-static/resources/fchomo.js:71 +#: htdocs/luci-static/resources/fchomo.js:101 msgid "VLESS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:65 -#: htdocs/luci-static/resources/fchomo.js:94 +#: htdocs/luci-static/resources/fchomo.js:70 +#: htdocs/luci-static/resources/fchomo.js:100 msgid "VMess" msgstr "" @@ -2445,7 +2466,7 @@ msgstr "版本" msgid "Version hint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:382 +#: htdocs/luci-static/resources/view/fchomo/global.js:407 msgid "Warning" msgstr "警告" @@ -2455,15 +2476,15 @@ msgstr "警告" msgid "WebSocket" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:75 +#: htdocs/luci-static/resources/view/fchomo/server.js:25 msgid "When used as a server, HomeProxy is a better choice." msgstr "用作服务端时,HomeProxy 是更好的选择。" -#: htdocs/luci-static/resources/view/fchomo/global.js:692 +#: htdocs/luci-static/resources/view/fchomo/global.js:728 msgid "White list" msgstr "白名单" -#: htdocs/luci-static/resources/fchomo.js:100 +#: htdocs/luci-static/resources/fchomo.js:106 msgid "WireGuard" msgstr "" @@ -2487,25 +2508,25 @@ msgstr "" msgid "Yaml text" msgstr "Yaml 格式文本" -#: htdocs/luci-static/resources/fchomo.js:52 +#: htdocs/luci-static/resources/fchomo.js:57 msgid "YouTube" msgstr "油管" -#: htdocs/luci-static/resources/fchomo.js:980 +#: htdocs/luci-static/resources/fchomo.js:1125 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "您的 %s 已成功上传。大小:%sB。" -#: htdocs/luci-static/resources/fchomo.js:188 +#: htdocs/luci-static/resources/fchomo.js:202 #: htdocs/luci-static/resources/view/fchomo/node.js:272 #: htdocs/luci-static/resources/view/fchomo/node.js:311 msgid "aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:189 +#: htdocs/luci-static/resources/fchomo.js:203 msgid "aes-192-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:190 +#: htdocs/luci-static/resources/fchomo.js:204 #: htdocs/luci-static/resources/view/fchomo/node.js:273 msgid "aes-256-gcm" msgstr "" @@ -2515,15 +2536,15 @@ msgid "auto" msgstr "自动" #: htdocs/luci-static/resources/view/fchomo/node.js:215 -#: htdocs/luci-static/resources/view/fchomo/server.js:231 +#: htdocs/luci-static/resources/view/fchomo/server.js:181 msgid "bbr" msgstr "bbr" -#: htdocs/luci-static/resources/view/fchomo/server.js:309 +#: htdocs/luci-static/resources/view/fchomo/server.js:274 msgid "certificate" msgstr "证书" -#: htdocs/luci-static/resources/fchomo.js:191 +#: htdocs/luci-static/resources/fchomo.js:205 #: htdocs/luci-static/resources/view/fchomo/node.js:274 msgid "chacha20-ietf-poly1305" msgstr "" @@ -2533,7 +2554,7 @@ msgid "chacha20-poly1305" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:213 -#: htdocs/luci-static/resources/view/fchomo/server.js:229 +#: htdocs/luci-static/resources/view/fchomo/server.js:179 msgid "cubic" msgstr "cubic" @@ -2551,7 +2572,7 @@ msgstr "" msgid "gRPC service name" msgstr "gRPC 服务名称" -#: htdocs/luci-static/resources/view/fchomo/global.js:470 +#: htdocs/luci-static/resources/view/fchomo/global.js:496 msgid "gVisor" msgstr "gVisor" @@ -2559,7 +2580,7 @@ msgstr "gVisor" msgid "h2mux" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:35 +#: htdocs/luci-static/resources/fchomo.js:40 msgid "metacubexd" msgstr "metacubexd" @@ -2569,7 +2590,7 @@ msgid "mpTCP" msgstr "多路径 TCP (mpTCP)" #: htdocs/luci-static/resources/view/fchomo/node.js:214 -#: htdocs/luci-static/resources/view/fchomo/server.js:230 +#: htdocs/luci-static/resources/view/fchomo/server.js:180 msgid "new_reno" msgstr "new_reno" @@ -2577,13 +2598,13 @@ msgstr "new_reno" msgid "no-resolve" msgstr "no-resolve" -#: htdocs/luci-static/resources/fchomo.js:763 -#: htdocs/luci-static/resources/fchomo.js:817 -#: htdocs/luci-static/resources/fchomo.js:848 +#: htdocs/luci-static/resources/fchomo.js:908 +#: htdocs/luci-static/resources/fchomo.js:962 +#: htdocs/luci-static/resources/fchomo.js:993 msgid "non-empty value" msgstr "非空值" -#: htdocs/luci-static/resources/fchomo.js:186 +#: htdocs/luci-static/resources/fchomo.js:200 #: htdocs/luci-static/resources/view/fchomo/node.js:309 #: htdocs/luci-static/resources/view/fchomo/node.js:329 #: htdocs/luci-static/resources/view/fchomo/node.js:402 @@ -2599,7 +2620,7 @@ msgstr "未找到" msgid "not included \",\"" msgstr "不包含 \",\"" -#: htdocs/luci-static/resources/fchomo.js:113 +#: htdocs/luci-static/resources/fchomo.js:119 msgid "null" msgstr "" @@ -2615,11 +2636,11 @@ msgstr "" msgid "packet addr (v2ray-core v5+)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:324 +#: htdocs/luci-static/resources/view/fchomo/server.js:289 msgid "private key" msgstr "私钥" -#: htdocs/luci-static/resources/fchomo.js:37 +#: htdocs/luci-static/resources/fchomo.js:42 msgid "razord-meta" msgstr "razord-meta" @@ -2639,19 +2660,19 @@ msgstr "" msgid "src" msgstr "src" -#: htdocs/luci-static/resources/view/fchomo/global.js:244 +#: htdocs/luci-static/resources/view/fchomo/global.js:223 msgid "unchecked" msgstr "未检查" -#: htdocs/luci-static/resources/fchomo.js:640 +#: htdocs/luci-static/resources/fchomo.js:731 msgid "unique UCI identifier" msgstr "独立 UCI 标识" -#: htdocs/luci-static/resources/fchomo.js:643 +#: htdocs/luci-static/resources/fchomo.js:734 msgid "unique identifier" msgstr "独立标识" -#: htdocs/luci-static/resources/fchomo.js:857 +#: htdocs/luci-static/resources/fchomo.js:1002 msgid "unique value" msgstr "独立值" @@ -2677,8 +2698,8 @@ msgstr "" msgid "v3" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:791 -#: htdocs/luci-static/resources/fchomo.js:794 +#: htdocs/luci-static/resources/fchomo.js:936 +#: htdocs/luci-static/resources/fchomo.js:939 msgid "valid JSON format" msgstr "有效的 JSON 格式" @@ -2686,32 +2707,32 @@ msgstr "有效的 JSON 格式" msgid "valid SHA256 string with %d characters" msgstr "包含 %d 个字符的有效 SHA256 字符串" -#: htdocs/luci-static/resources/fchomo.js:869 -#: htdocs/luci-static/resources/fchomo.js:872 +#: htdocs/luci-static/resources/fchomo.js:1014 +#: htdocs/luci-static/resources/fchomo.js:1017 msgid "valid URL" msgstr "有效网址" -#: htdocs/luci-static/resources/fchomo.js:804 +#: htdocs/luci-static/resources/fchomo.js:949 msgid "valid base64 key with %d characters" msgstr "包含 %d 个字符的有效 base64 密钥" -#: htdocs/luci-static/resources/fchomo.js:819 +#: htdocs/luci-static/resources/fchomo.js:964 msgid "valid key length with %d characters" msgstr "包含 %d 个字符的有效密钥" -#: htdocs/luci-static/resources/fchomo.js:773 +#: htdocs/luci-static/resources/fchomo.js:918 msgid "valid port value" msgstr "有效端口值" -#: htdocs/luci-static/resources/fchomo.js:882 +#: htdocs/luci-static/resources/fchomo.js:1027 msgid "valid uuid" msgstr "有效 uuid" -#: htdocs/luci-static/resources/fchomo.js:192 +#: htdocs/luci-static/resources/fchomo.js:206 msgid "xchacha20-ietf-poly1305" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:36 +#: htdocs/luci-static/resources/fchomo.js:41 msgid "yacd-meta" msgstr "yacd-meta" @@ -2719,7 +2740,7 @@ msgstr "yacd-meta" msgid "yamux" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:34 +#: htdocs/luci-static/resources/fchomo.js:39 msgid "zashboard" msgstr "" @@ -2727,6 +2748,6 @@ msgstr "" msgid "zero" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:618 +#: htdocs/luci-static/resources/fchomo.js:709 msgid "🡇" msgstr "" diff --git a/luci-app-fchomo/po/zh_Hant/fchomo.po b/luci-app-fchomo/po/zh_Hant/fchomo.po index f71832ec3..c79d83065 100644 --- a/luci-app-fchomo/po/zh_Hant/fchomo.po +++ b/luci-app-fchomo/po/zh_Hant/fchomo.po @@ -26,19 +26,19 @@ msgstr "%s 日誌" msgid "-- Please choose --" msgstr "-- 請選擇 --" -#: htdocs/luci-static/resources/fchomo.js:49 +#: htdocs/luci-static/resources/fchomo.js:54 msgid "163Music" msgstr "網易雲音樂" -#: htdocs/luci-static/resources/fchomo.js:194 +#: htdocs/luci-static/resources/fchomo.js:208 msgid "2022-blake3-aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:195 +#: htdocs/luci-static/resources/fchomo.js:209 msgid "2022-blake3-aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:196 +#: htdocs/luci-static/resources/fchomo.js:210 msgid "2022-blake3-chacha20-poly1305" msgstr "" @@ -46,45 +46,45 @@ msgstr "" msgid "0 or 1 only." msgstr "僅限 01。" -#: htdocs/luci-static/resources/view/fchomo/server.js:305 -#: htdocs/luci-static/resources/view/fchomo/server.js:320 +#: htdocs/luci-static/resources/view/fchomo/server.js:270 +#: htdocs/luci-static/resources/view/fchomo/server.js:285 msgid "Save your configuration before uploading files!" msgstr "上傳文件前請先保存配置!" -#: htdocs/luci-static/resources/view/fchomo/global.js:520 +#: htdocs/luci-static/resources/view/fchomo/global.js:556 msgid "API" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:560 +#: htdocs/luci-static/resources/view/fchomo/global.js:596 msgid "API DoH service" msgstr "API DoH 伺服器" -#: htdocs/luci-static/resources/view/fchomo/global.js:551 +#: htdocs/luci-static/resources/view/fchomo/global.js:587 msgid "API HTTP port" msgstr "API HTTP 連接埠" -#: htdocs/luci-static/resources/view/fchomo/global.js:555 +#: htdocs/luci-static/resources/view/fchomo/global.js:591 msgid "API HTTPS port" msgstr "API HTTPS 連接埠" -#: htdocs/luci-static/resources/view/fchomo/global.js:510 +#: htdocs/luci-static/resources/view/fchomo/global.js:546 msgid "API TLS certificate path" msgstr "API TLS 憑證路徑" -#: htdocs/luci-static/resources/view/fchomo/global.js:514 +#: htdocs/luci-static/resources/view/fchomo/global.js:550 msgid "API TLS private key path" msgstr "API TLS 私鑰" -#: htdocs/luci-static/resources/view/fchomo/global.js:564 +#: htdocs/luci-static/resources/view/fchomo/global.js:600 msgid "API secret" msgstr "API 令牌" -#: htdocs/luci-static/resources/view/fchomo/global.js:344 +#: htdocs/luci-static/resources/view/fchomo/global.js:369 msgid "ASN version" msgstr "ASN 版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:638 -#: htdocs/luci-static/resources/view/fchomo/global.js:688 +#: htdocs/luci-static/resources/view/fchomo/global.js:674 +#: htdocs/luci-static/resources/view/fchomo/global.js:724 msgid "Access Control" msgstr "訪問控制" @@ -120,7 +120,7 @@ msgstr "新增 路由規則" msgid "Add a rule set" msgstr "新增 規則集" -#: htdocs/luci-static/resources/view/fchomo/server.js:113 +#: htdocs/luci-static/resources/view/fchomo/server.js:63 msgid "Add a server" msgstr "新增 伺服器" @@ -141,18 +141,17 @@ msgstr "添加後綴" msgid "Address" msgstr "位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:691 -#: htdocs/luci-static/resources/view/fchomo/global.js:739 -#: htdocs/luci-static/resources/view/fchomo/global.js:756 +#: htdocs/luci-static/resources/view/fchomo/global.js:727 +#: htdocs/luci-static/resources/view/fchomo/global.js:775 +#: htdocs/luci-static/resources/view/fchomo/global.js:792 msgid "All allowed" msgstr "允許所有" -#: htdocs/luci-static/resources/view/fchomo/global.js:722 -#: htdocs/luci-static/resources/view/fchomo/global.js:731 +#: htdocs/luci-static/resources/fchomo.js:137 msgid "All ports" msgstr "所有連接埠" -#: htdocs/luci-static/resources/view/fchomo/global.js:547 +#: htdocs/luci-static/resources/view/fchomo/global.js:583 msgid "" "Allow access from private network.
To access the API on a private " "network from a public website, it must be enabled." @@ -172,15 +171,15 @@ msgid "Already in updating." msgstr "已在更新中。" #: htdocs/luci-static/resources/view/fchomo/node.js:300 -#: htdocs/luci-static/resources/view/fchomo/server.js:262 +#: htdocs/luci-static/resources/view/fchomo/server.js:218 msgid "Alter ID" msgstr "額外 ID" -#: htdocs/luci-static/resources/view/fchomo/global.js:192 +#: htdocs/luci-static/resources/view/fchomo/global.js:171 msgid "Application version" msgstr "應用版本" -#: htdocs/luci-static/resources/view/fchomo/server.js:248 +#: htdocs/luci-static/resources/view/fchomo/server.js:198 msgid "Auth timeout" msgstr "認證超時" @@ -188,27 +187,28 @@ msgstr "認證超時" msgid "Authenticated length" msgstr "認證長度" -#: htdocs/luci-static/resources/view/fchomo/global.js:375 +#: htdocs/luci-static/resources/view/fchomo/global.js:400 msgid "Auto" msgstr "自動" -#: htdocs/luci-static/resources/view/fchomo/server.js:103 +#: htdocs/luci-static/resources/view/fchomo/server.js:53 msgid "Auto configure firewall" msgstr "自動配置防火牆" -#: htdocs/luci-static/resources/view/fchomo/global.js:283 +#: htdocs/luci-static/resources/view/fchomo/global.js:308 msgid "Auto update" msgstr "自動更新" -#: htdocs/luci-static/resources/view/fchomo/global.js:284 +#: htdocs/luci-static/resources/view/fchomo/global.js:309 msgid "Auto update resources." msgstr "自動更新資源文件。" -#: htdocs/luci-static/resources/fchomo.js:48 +#: htdocs/luci-static/resources/fchomo.js:53 msgid "Baidu" msgstr "百度" -#: htdocs/luci-static/resources/view/fchomo/global.js:470 +#: htdocs/luci-static/resources/view/fchomo/global.js:496 +#: htdocs/luci-static/resources/view/fchomo/global.js:507 msgid "Based on google/gvisor." msgstr "基於 google/gvisor。" @@ -226,7 +226,7 @@ msgid "Binary format only supports domain / ipcidr" msgstr "二進位格式僅支持 domain/ipcidr" #: htdocs/luci-static/resources/view/fchomo/client.js:701 -#: htdocs/luci-static/resources/view/fchomo/global.js:652 +#: htdocs/luci-static/resources/view/fchomo/global.js:688 #: htdocs/luci-static/resources/view/fchomo/node.js:761 #: htdocs/luci-static/resources/view/fchomo/node.js:969 msgid "Bind interface" @@ -238,12 +238,12 @@ msgstr "綁定介面" msgid "Bind outbound interface.
" msgstr "綁定出站介面。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:653 +#: htdocs/luci-static/resources/view/fchomo/global.js:689 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect.
" msgstr "綁定出站流量至指定介面。留空自動檢測。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:693 +#: htdocs/luci-static/resources/view/fchomo/global.js:729 msgid "Black list" msgstr "黑名單" @@ -259,23 +259,23 @@ msgstr "啟動 DNS 伺服器" msgid "Boot DNS server (Node)" msgstr "啟動 DNS 伺服器 (節點)" -#: htdocs/luci-static/resources/view/fchomo/global.js:740 +#: htdocs/luci-static/resources/view/fchomo/global.js:776 msgid "Bypass CN" msgstr "繞過 CN 流量" -#: htdocs/luci-static/resources/view/fchomo/global.js:757 +#: htdocs/luci-static/resources/view/fchomo/global.js:793 msgid "Bypass DSCP" msgstr "繞過 DSCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:542 +#: htdocs/luci-static/resources/view/fchomo/global.js:578 msgid "CORS Allow origins" msgstr "CORS 允許的來源" -#: htdocs/luci-static/resources/view/fchomo/global.js:546 +#: htdocs/luci-static/resources/view/fchomo/global.js:582 msgid "CORS Allow private network" msgstr "CORS 允許私有網路" -#: htdocs/luci-static/resources/view/fchomo/global.js:543 +#: htdocs/luci-static/resources/view/fchomo/global.js:579 msgid "CORS allowed origins, * will be used if empty." msgstr "CORS 允許的來源,留空則使用 *。" @@ -292,7 +292,7 @@ msgid "" "Certificate fingerprint. Used to implement SSL Pinning and prevent MitM." msgstr "憑證指紋。用於實現 SSL憑證固定 並防止 MitM。" -#: htdocs/luci-static/resources/view/fchomo/server.js:297 +#: htdocs/luci-static/resources/view/fchomo/server.js:262 msgid "Certificate path" msgstr "憑證路徑" @@ -306,12 +306,12 @@ msgstr "鏈頭" msgid "Chain tail" msgstr "鏈尾" -#: htdocs/luci-static/resources/view/fchomo/global.js:134 -#: htdocs/luci-static/resources/view/fchomo/global.js:242 +#: htdocs/luci-static/resources/view/fchomo/global.js:221 +#: htdocs/luci-static/resources/view/fchomo/global.js:271 msgid "Check" msgstr "檢查" -#: htdocs/luci-static/resources/view/fchomo/global.js:249 +#: htdocs/luci-static/resources/view/fchomo/global.js:228 msgid "Check routerself NAT Behavior" msgstr "檢測路由器自身 NAT 行為" @@ -319,21 +319,21 @@ msgstr "檢測路由器自身 NAT 行為" msgid "Check update" msgstr "檢查更新" -#: htdocs/luci-static/resources/view/fchomo/global.js:347 +#: htdocs/luci-static/resources/view/fchomo/global.js:372 msgid "China IPv4 list version" msgstr "大陸 IPv4 庫版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:350 +#: htdocs/luci-static/resources/view/fchomo/global.js:375 msgid "China IPv6 list version" msgstr "大陸 IPv6 庫版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:356 +#: htdocs/luci-static/resources/view/fchomo/global.js:381 msgid "China list version" msgstr "大陸網域清單版本" #: htdocs/luci-static/resources/view/fchomo/node.js:143 #: htdocs/luci-static/resources/view/fchomo/node.js:306 -#: htdocs/luci-static/resources/view/fchomo/server.js:202 +#: htdocs/luci-static/resources/view/fchomo/server.js:152 msgid "Chipher" msgstr "加密方法" @@ -349,7 +349,7 @@ msgstr "客戶端" msgid "Client fingerprint" msgstr "客戶端指紋" -#: htdocs/luci-static/resources/view/fchomo/global.js:197 +#: htdocs/luci-static/resources/view/fchomo/global.js:176 msgid "Client status" msgstr "客戶端狀態" @@ -357,12 +357,12 @@ msgstr "客戶端狀態" msgid "Collecting data..." msgstr "收集資料中..." -#: htdocs/luci-static/resources/view/fchomo/global.js:723 -#: htdocs/luci-static/resources/view/fchomo/global.js:732 +#: htdocs/luci-static/resources/fchomo.js:138 +#: htdocs/luci-static/resources/fchomo.js:139 msgid "Common ports only (bypass P2P traffic)" msgstr "僅常用連接埠(繞過 P2P 流量)" -#: htdocs/luci-static/resources/fchomo.js:707 +#: htdocs/luci-static/resources/fchomo.js:852 msgid "Complete" msgstr "完成" @@ -371,11 +371,11 @@ msgid "Configuration Items" msgstr "配置項" #: htdocs/luci-static/resources/view/fchomo/node.js:210 -#: htdocs/luci-static/resources/view/fchomo/server.js:226 +#: htdocs/luci-static/resources/view/fchomo/server.js:176 msgid "Congestion controller" msgstr "擁塞控制器" -#: htdocs/luci-static/resources/view/fchomo/global.js:218 +#: htdocs/luci-static/resources/view/fchomo/global.js:197 msgid "Connection check" msgstr "連接檢查" @@ -396,15 +396,15 @@ msgstr "內容" msgid "Contents have been saved." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:187 +#: htdocs/luci-static/resources/view/fchomo/global.js:166 msgid "Core version" msgstr "核心版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:296 +#: htdocs/luci-static/resources/view/fchomo/global.js:321 msgid "Cron expression" msgstr "Cron 表達式" -#: htdocs/luci-static/resources/view/fchomo/global.js:775 +#: htdocs/luci-static/resources/view/fchomo/global.js:811 msgid "Custom Direct List" msgstr "自訂直連清單" @@ -412,7 +412,7 @@ msgstr "自訂直連清單" msgid "Custom HTTP header." msgstr "自訂 HTTP header。" -#: htdocs/luci-static/resources/view/fchomo/global.js:793 +#: htdocs/luci-static/resources/view/fchomo/global.js:829 msgid "Custom Proxy List" msgstr "自訂代理清單" @@ -421,7 +421,7 @@ msgid "" "Custom internal hosts. Support yaml or json format." msgstr "自訂內部 hosts。支援 yamljson 格式。" -#: htdocs/luci-static/resources/fchomo.js:87 +#: htdocs/luci-static/resources/fchomo.js:93 msgid "DIRECT" msgstr "" @@ -430,7 +430,7 @@ msgstr "" msgid "DNS policy" msgstr "DNS 策略" -#: htdocs/luci-static/resources/view/fchomo/global.js:445 +#: htdocs/luci-static/resources/view/fchomo/global.js:471 msgid "DNS port" msgstr " DNS 連接埠" @@ -445,15 +445,15 @@ msgstr "DNS 伺服器" msgid "DNS settings" msgstr "DNS 設定" -#: htdocs/luci-static/resources/view/fchomo/global.js:760 +#: htdocs/luci-static/resources/view/fchomo/global.js:796 msgid "DSCP list" msgstr "DSCP 清單" -#: htdocs/luci-static/resources/view/fchomo/global.js:314 +#: htdocs/luci-static/resources/view/fchomo/global.js:339 msgid "Dashboard version" msgstr "面板版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:384 +#: htdocs/luci-static/resources/view/fchomo/global.js:409 msgid "Debug" msgstr "調試" @@ -482,33 +482,33 @@ msgstr "撥號欄位" msgid "Different chain head/tail" msgstr "不同的鏈頭/鏈尾" -#: htdocs/luci-static/resources/view/fchomo/global.js:368 +#: htdocs/luci-static/resources/view/fchomo/global.js:393 msgid "Direct" msgstr "直連" -#: htdocs/luci-static/resources/view/fchomo/global.js:695 +#: htdocs/luci-static/resources/view/fchomo/global.js:731 msgid "Direct IPv4 IP-s" msgstr "直連 IPv4 位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:698 +#: htdocs/luci-static/resources/view/fchomo/global.js:734 msgid "Direct IPv6 IP-s" msgstr "直連 IPv6 位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:701 +#: htdocs/luci-static/resources/view/fchomo/global.js:737 msgid "Direct MAC-s" msgstr "直連 MAC 位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:376 +#: htdocs/luci-static/resources/view/fchomo/global.js:401 #: htdocs/luci-static/resources/view/fchomo/node.js:109 -#: htdocs/luci-static/resources/view/fchomo/server.js:182 +#: htdocs/luci-static/resources/view/fchomo/server.js:132 msgid "Disable" msgstr "停用" -#: htdocs/luci-static/resources/view/fchomo/global.js:629 +#: htdocs/luci-static/resources/view/fchomo/global.js:665 msgid "Disable ECN of quic-go" msgstr "停用 quic-go 的 明確壅塞通知(ECN)" -#: htdocs/luci-static/resources/view/fchomo/global.js:626 +#: htdocs/luci-static/resources/view/fchomo/global.js:662 msgid "Disable GSO of quic-go" msgstr "停用 quic-go 的 通用分段卸載(GSO)" @@ -545,15 +545,15 @@ msgstr "下載頻寬" msgid "Download bandwidth in Mbps." msgstr "下載頻寬(單位:Mbps)。" -#: htdocs/luci-static/resources/fchomo.js:613 +#: htdocs/luci-static/resources/fchomo.js:704 msgid "Download failed: %s" msgstr "下載失敗: %s" -#: htdocs/luci-static/resources/fchomo.js:611 +#: htdocs/luci-static/resources/fchomo.js:702 msgid "Download successful." msgstr "下載成功。" -#: htdocs/luci-static/resources/fchomo.js:73 +#: htdocs/luci-static/resources/fchomo.js:79 msgid "Dual stack" msgstr "雙棧" @@ -565,7 +565,7 @@ msgstr "強制覆蓋 ECS" msgid "EDNS Client Subnet" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:387 +#: htdocs/luci-static/resources/view/fchomo/global.js:412 msgid "ETag support" msgstr "ETag 支援" @@ -596,15 +596,15 @@ msgstr "編輯器" #: htdocs/luci-static/resources/view/fchomo/client.js:874 #: htdocs/luci-static/resources/view/fchomo/client.js:961 #: htdocs/luci-static/resources/view/fchomo/client.js:1102 -#: htdocs/luci-static/resources/view/fchomo/global.js:374 -#: htdocs/luci-static/resources/view/fchomo/global.js:601 +#: htdocs/luci-static/resources/view/fchomo/global.js:399 +#: htdocs/luci-static/resources/view/fchomo/global.js:637 #: htdocs/luci-static/resources/view/fchomo/node.js:51 #: htdocs/luci-static/resources/view/fchomo/node.js:819 #: htdocs/luci-static/resources/view/fchomo/node.js:989 #: htdocs/luci-static/resources/view/fchomo/node.js:1070 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:199 -#: htdocs/luci-static/resources/view/fchomo/server.js:100 -#: htdocs/luci-static/resources/view/fchomo/server.js:124 +#: htdocs/luci-static/resources/view/fchomo/server.js:50 +#: htdocs/luci-static/resources/view/fchomo/server.js:74 msgid "Enable" msgstr "啟用" @@ -621,7 +621,7 @@ msgstr "" msgid "Enable 0-RTT handshake" msgstr "啟用 0-RTT 握手" -#: htdocs/luci-static/resources/view/fchomo/global.js:632 +#: htdocs/luci-static/resources/view/fchomo/global.js:668 msgid "" "Enable IP4P " "conversion for outbound connections" @@ -656,13 +656,13 @@ msgid "" msgstr "啟用 SUoT 協議,需要服務端支援。與多路復用衝突。" #: htdocs/luci-static/resources/view/fchomo/node.js:115 -#: htdocs/luci-static/resources/view/fchomo/server.js:188 +#: htdocs/luci-static/resources/view/fchomo/server.js:138 msgid "" "Enabling obfuscation will make the server incompatible with standard QUIC " "connections, losing the ability to masquerade with HTTP/3." msgstr "啟用混淆將使伺服器與標準的 QUIC 連線不相容,失去 HTTP/3 偽裝的能力。" -#: htdocs/luci-static/resources/view/fchomo/global.js:492 +#: htdocs/luci-static/resources/view/fchomo/global.js:528 msgid "Endpoint-Independent NAT" msgstr "端點獨立 NAT" @@ -671,7 +671,7 @@ msgstr "端點獨立 NAT" msgid "Entry" msgstr "條目" -#: htdocs/luci-static/resources/view/fchomo/global.js:381 +#: htdocs/luci-static/resources/view/fchomo/global.js:406 msgid "Error" msgstr "錯誤" @@ -698,7 +698,7 @@ msgstr "" msgid "Exclude nodes that meet keywords or regexps." msgstr "排除匹配關鍵字或表達式的節點。" -#: htdocs/luci-static/resources/view/fchomo/global.js:127 +#: htdocs/luci-static/resources/view/fchomo/global.js:265 msgid "Expand/Collapse result" msgstr "展開/收起 結果" @@ -712,31 +712,31 @@ msgstr "預期的 HTTP code。留空則使用 204。" msgid "Expected status" msgstr "預期狀態" -#: htdocs/luci-static/resources/fchomo.js:637 -#: htdocs/luci-static/resources/fchomo.js:640 -#: htdocs/luci-static/resources/fchomo.js:643 -#: htdocs/luci-static/resources/fchomo.js:724 -#: htdocs/luci-static/resources/fchomo.js:732 -#: htdocs/luci-static/resources/fchomo.js:740 -#: htdocs/luci-static/resources/fchomo.js:763 -#: htdocs/luci-static/resources/fchomo.js:766 -#: htdocs/luci-static/resources/fchomo.js:773 -#: htdocs/luci-static/resources/fchomo.js:791 -#: htdocs/luci-static/resources/fchomo.js:794 -#: htdocs/luci-static/resources/fchomo.js:804 -#: htdocs/luci-static/resources/fchomo.js:817 -#: htdocs/luci-static/resources/fchomo.js:819 -#: htdocs/luci-static/resources/fchomo.js:832 -#: htdocs/luci-static/resources/fchomo.js:841 -#: htdocs/luci-static/resources/fchomo.js:848 -#: htdocs/luci-static/resources/fchomo.js:857 +#: htdocs/luci-static/resources/fchomo.js:728 +#: htdocs/luci-static/resources/fchomo.js:731 +#: htdocs/luci-static/resources/fchomo.js:734 #: htdocs/luci-static/resources/fchomo.js:869 -#: htdocs/luci-static/resources/fchomo.js:872 -#: htdocs/luci-static/resources/fchomo.js:882 +#: htdocs/luci-static/resources/fchomo.js:877 +#: htdocs/luci-static/resources/fchomo.js:885 +#: htdocs/luci-static/resources/fchomo.js:908 +#: htdocs/luci-static/resources/fchomo.js:911 +#: htdocs/luci-static/resources/fchomo.js:918 +#: htdocs/luci-static/resources/fchomo.js:936 +#: htdocs/luci-static/resources/fchomo.js:939 +#: htdocs/luci-static/resources/fchomo.js:949 +#: htdocs/luci-static/resources/fchomo.js:962 +#: htdocs/luci-static/resources/fchomo.js:964 +#: htdocs/luci-static/resources/fchomo.js:977 +#: htdocs/luci-static/resources/fchomo.js:986 +#: htdocs/luci-static/resources/fchomo.js:993 +#: htdocs/luci-static/resources/fchomo.js:1002 +#: htdocs/luci-static/resources/fchomo.js:1014 +#: htdocs/luci-static/resources/fchomo.js:1017 +#: htdocs/luci-static/resources/fchomo.js:1027 #: htdocs/luci-static/resources/view/fchomo/client.js:27 #: htdocs/luci-static/resources/view/fchomo/client.js:629 #: htdocs/luci-static/resources/view/fchomo/client.js:976 -#: htdocs/luci-static/resources/view/fchomo/global.js:766 +#: htdocs/luci-static/resources/view/fchomo/global.js:802 #: htdocs/luci-static/resources/view/fchomo/node.js:535 #: htdocs/luci-static/resources/view/fchomo/node.js:1117 #: htdocs/luci-static/resources/view/fchomo/node.js:1139 @@ -750,7 +750,7 @@ msgstr "請輸入:%s" msgid "Expecting: only support %s." msgstr "請輸入:僅支援 %s." -#: htdocs/luci-static/resources/view/fchomo/global.js:620 +#: htdocs/luci-static/resources/view/fchomo/global.js:656 msgid "Experimental" msgstr "實驗性" @@ -764,19 +764,23 @@ msgstr "實驗性" msgid "Factor" msgstr "條件" -#: htdocs/luci-static/resources/fchomo.js:665 +#: htdocs/luci-static/resources/fchomo.js:810 msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s" msgstr "無法執行 \"/etc/init.d/fchomo %s %s\" 原因: %s" -#: htdocs/luci-static/resources/fchomo.js:982 +#: htdocs/luci-static/resources/fchomo.js:771 +msgid "Failed to generate %s, error: %s." +msgstr "" + +#: htdocs/luci-static/resources/fchomo.js:1127 msgid "Failed to upload %s, error: %s." msgstr "上傳 %s 失敗,錯誤:%s。" -#: htdocs/luci-static/resources/fchomo.js:1001 +#: htdocs/luci-static/resources/fchomo.js:1146 msgid "Failed to upload, error: %s." msgstr "上傳失敗,錯誤:%s。" -#: htdocs/luci-static/resources/fchomo.js:124 +#: htdocs/luci-static/resources/fchomo.js:130 msgid "Fallback" msgstr "自動回退" @@ -811,6 +815,7 @@ msgid "Final DNS server (For poisoned domains)" msgstr "兜底 DNS 伺服器 (用於已被投毒汙染的網域)" #: htdocs/luci-static/resources/view/fchomo/node.js:294 +#: htdocs/luci-static/resources/view/fchomo/server.js:212 msgid "Flow" msgstr "流控" @@ -836,7 +841,7 @@ msgstr "" msgid "Force DNS remote resolution." msgstr "強制 DNS 遠端解析。" -#: htdocs/luci-static/resources/view/fchomo/global.js:580 +#: htdocs/luci-static/resources/view/fchomo/global.js:616 msgid "Forced sniffing domain" msgstr "強制嗅探網域" @@ -844,7 +849,7 @@ msgstr "強制嗅探網域" msgid "Format" msgstr "格式" -#: htdocs/luci-static/resources/view/fchomo/global.js:175 +#: htdocs/luci-static/resources/view/fchomo/global.js:138 #: htdocs/luci-static/resources/view/fchomo/log.js:97 #: htdocs/luci-static/resources/view/fchomo/log.js:102 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:3 @@ -855,11 +860,11 @@ msgstr "" msgid "GET" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:353 +#: htdocs/luci-static/resources/view/fchomo/global.js:378 msgid "GFW list version" msgstr "GFW 網域清單版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:361 +#: htdocs/luci-static/resources/view/fchomo/global.js:386 msgid "General" msgstr "常規" @@ -869,24 +874,24 @@ msgstr "常規" msgid "General fields" msgstr "常規字段" -#: htdocs/luci-static/resources/view/fchomo/global.js:364 +#: htdocs/luci-static/resources/view/fchomo/global.js:389 msgid "General settings" msgstr "常規設定" -#: htdocs/luci-static/resources/view/fchomo/server.js:52 -#: htdocs/luci-static/resources/view/fchomo/server.js:54 +#: htdocs/luci-static/resources/fchomo.js:282 +#: htdocs/luci-static/resources/fchomo.js:284 msgid "Generate" msgstr "生成" -#: htdocs/luci-static/resources/view/fchomo/global.js:480 +#: htdocs/luci-static/resources/view/fchomo/global.js:516 msgid "Generic segmentation offload" msgstr "通用分段卸載(GSO)" -#: htdocs/luci-static/resources/view/fchomo/global.js:338 +#: htdocs/luci-static/resources/view/fchomo/global.js:363 msgid "GeoIP version" msgstr "GeoIP 版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:341 +#: htdocs/luci-static/resources/view/fchomo/global.js:366 msgid "GeoSite version" msgstr "GeoSite 版本" @@ -904,20 +909,20 @@ msgstr "Geoip 啟用" msgid "Geosite" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:51 +#: htdocs/luci-static/resources/fchomo.js:56 msgid "GitHub" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:370 +#: htdocs/luci-static/resources/view/fchomo/global.js:395 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:14 msgid "Global" msgstr "全域" -#: htdocs/luci-static/resources/view/fchomo/global.js:410 +#: htdocs/luci-static/resources/view/fchomo/global.js:435 msgid "Global Authentication" msgstr "全域認證" -#: htdocs/luci-static/resources/view/fchomo/global.js:504 +#: htdocs/luci-static/resources/view/fchomo/global.js:540 msgid "Global client fingerprint" msgstr "全域客戶端指紋" @@ -925,7 +930,7 @@ msgstr "全域客戶端指紋" msgid "Global padding" msgstr "全域填充" -#: htdocs/luci-static/resources/fchomo.js:50 +#: htdocs/luci-static/resources/fchomo.js:55 msgid "Google" msgstr "Google" @@ -937,8 +942,8 @@ msgstr "授予 fchomo 存取 UCI 配置的權限" msgid "Group" msgstr "組" -#: htdocs/luci-static/resources/fchomo.js:61 -#: htdocs/luci-static/resources/fchomo.js:88 +#: htdocs/luci-static/resources/fchomo.js:66 +#: htdocs/luci-static/resources/fchomo.js:94 #: htdocs/luci-static/resources/view/fchomo/node.js:411 #: htdocs/luci-static/resources/view/fchomo/node.js:583 #: htdocs/luci-static/resources/view/fchomo/node.js:594 @@ -959,7 +964,7 @@ msgstr "HTTP 請求方法" msgid "HTTP/3" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:196 +#: htdocs/luci-static/resources/view/fchomo/server.js:146 msgid "" "HTTP3 server behavior when authentication fails.
A 404 page will be " "returned if empty." @@ -970,7 +975,7 @@ msgstr "身份驗證失敗時的 HTTP3 伺服器回應。預設回傳 404 頁面 msgid "HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:743 +#: htdocs/luci-static/resources/view/fchomo/global.js:779 msgid "Handle domain" msgstr "處理網域" @@ -1020,8 +1025,8 @@ msgstr "主機金鑰演算法" msgid "Hosts" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:67 -#: htdocs/luci-static/resources/fchomo.js:98 +#: htdocs/luci-static/resources/fchomo.js:73 +#: htdocs/luci-static/resources/fchomo.js:104 msgid "Hysteria2" msgstr "" @@ -1043,24 +1048,24 @@ msgstr "IP 覆寫" msgid "IP version" msgstr "IP 版本" -#: htdocs/luci-static/resources/fchomo.js:74 +#: htdocs/luci-static/resources/fchomo.js:80 msgid "IPv4 only" msgstr "僅 IPv4" -#: htdocs/luci-static/resources/fchomo.js:75 +#: htdocs/luci-static/resources/fchomo.js:81 msgid "IPv6 only" msgstr "僅 IPv6" #: htdocs/luci-static/resources/view/fchomo/client.js:899 -#: htdocs/luci-static/resources/view/fchomo/global.js:390 +#: htdocs/luci-static/resources/view/fchomo/global.js:415 msgid "IPv6 support" msgstr "IPv6 支援" -#: htdocs/luci-static/resources/view/fchomo/server.js:241 +#: htdocs/luci-static/resources/view/fchomo/server.js:191 msgid "Idle timeout" msgstr "空閒逾時" -#: htdocs/luci-static/resources/fchomo.js:766 +#: htdocs/luci-static/resources/fchomo.js:911 msgid "If All ports is selected, uncheck others" msgstr "如果選擇了“所有連接埠”,則取消選取“其他”" @@ -1068,7 +1073,7 @@ msgstr "如果選擇了“所有連接埠”,則取消選取“其他”" msgid "If Block is selected, uncheck others" msgstr "如果選擇了“封鎖”,則取消選取“其他”" -#: htdocs/luci-static/resources/view/fchomo/server.js:175 +#: htdocs/luci-static/resources/view/fchomo/server.js:125 msgid "Ignore client bandwidth" msgstr "忽略客戶端頻寬" @@ -1086,8 +1091,8 @@ msgstr "導入 rule-set 連結" #: htdocs/luci-static/resources/view/fchomo/node.js:103 #: htdocs/luci-static/resources/view/fchomo/node.js:947 #: htdocs/luci-static/resources/view/fchomo/node.js:952 -#: htdocs/luci-static/resources/view/fchomo/server.js:164 -#: htdocs/luci-static/resources/view/fchomo/server.js:170 +#: htdocs/luci-static/resources/view/fchomo/server.js:114 +#: htdocs/luci-static/resources/view/fchomo/server.js:120 msgid "In Mbps." msgstr "單位為 Mbps。" @@ -1107,22 +1112,22 @@ msgstr "單位為毫秒。" msgid "In millisecond. %s will be used if empty." msgstr "單位為毫秒。留空則使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/server.js:242 -#: htdocs/luci-static/resources/view/fchomo/server.js:249 +#: htdocs/luci-static/resources/view/fchomo/server.js:192 +#: htdocs/luci-static/resources/view/fchomo/server.js:199 msgid "In seconds." msgstr "單位為秒。" #: htdocs/luci-static/resources/view/fchomo/client.js:730 -#: htdocs/luci-static/resources/view/fchomo/global.js:400 -#: htdocs/luci-static/resources/view/fchomo/global.js:405 -#: htdocs/luci-static/resources/view/fchomo/global.js:488 +#: htdocs/luci-static/resources/view/fchomo/global.js:425 +#: htdocs/luci-static/resources/view/fchomo/global.js:430 +#: htdocs/luci-static/resources/view/fchomo/global.js:524 #: htdocs/luci-static/resources/view/fchomo/node.js:881 #: htdocs/luci-static/resources/view/fchomo/node.js:1003 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:298 msgid "In seconds. %s will be used if empty." msgstr "單位為秒。留空則使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/global.js:424 +#: htdocs/luci-static/resources/view/fchomo/global.js:449 msgid "Inbound" msgstr "入站" @@ -1150,7 +1155,7 @@ msgstr "引入所有代理節點及供應商。" msgid "Includes all Proxy Node." msgstr "引入所有代理節點。" -#: htdocs/luci-static/resources/view/fchomo/global.js:383 +#: htdocs/luci-static/resources/view/fchomo/global.js:408 msgid "Info" msgstr "訊息" @@ -1159,15 +1164,15 @@ msgstr "訊息" msgid "Inline" msgstr "內嵌" -#: htdocs/luci-static/resources/view/fchomo/global.js:645 +#: htdocs/luci-static/resources/view/fchomo/global.js:681 msgid "Interface Control" msgstr "介面控制" -#: htdocs/luci-static/resources/fchomo.js:72 +#: htdocs/luci-static/resources/fchomo.js:78 msgid "Keep default" msgstr "保持預設" -#: htdocs/luci-static/resources/view/fchomo/server.js:312 +#: htdocs/luci-static/resources/view/fchomo/server.js:277 msgid "Key path" msgstr "憑證路徑" @@ -1180,7 +1185,7 @@ msgstr "憑證路徑" #: htdocs/luci-static/resources/view/fchomo/node.js:814 #: htdocs/luci-static/resources/view/fchomo/node.js:1065 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:194 -#: htdocs/luci-static/resources/view/fchomo/server.js:119 +#: htdocs/luci-static/resources/view/fchomo/server.js:69 msgid "Label" msgstr "標籤" @@ -1189,7 +1194,7 @@ msgstr "標籤" msgid "Lazy" msgstr "懶惰狀態" -#: htdocs/luci-static/resources/view/fchomo/server.js:263 +#: htdocs/luci-static/resources/view/fchomo/server.js:219 msgid "" "Legacy protocol support (VMess MD5 Authentication) is provided for " "compatibility purposes only, use of alterId > 1 is not recommended." @@ -1197,33 +1202,34 @@ msgstr "" "提供舊協議支援(VMess MD5 身份認證)僅出於相容性目的,不建議使用 alterId > " "1。" -#: htdocs/luci-static/resources/view/fchomo/global.js:468 +#: htdocs/luci-static/resources/view/fchomo/global.js:494 +#: htdocs/luci-static/resources/view/fchomo/global.js:509 msgid "Less compatibility and sometimes better performance." msgstr "有時效能較好。" #: htdocs/luci-static/resources/view/fchomo/node.js:525 -#: htdocs/luci-static/resources/view/fchomo/server.js:293 +#: htdocs/luci-static/resources/view/fchomo/server.js:258 msgid "List of supported application level protocols, in order of preference." msgstr "支援的應用層協議協商清單,依序排列。" -#: htdocs/luci-static/resources/view/fchomo/server.js:134 +#: htdocs/luci-static/resources/view/fchomo/server.js:84 msgid "Listen address" msgstr "監聽位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:647 +#: htdocs/luci-static/resources/view/fchomo/global.js:683 msgid "Listen interfaces" msgstr "監聽介面" #: htdocs/luci-static/resources/view/fchomo/client.js:894 -#: htdocs/luci-static/resources/view/fchomo/server.js:139 +#: htdocs/luci-static/resources/view/fchomo/server.js:89 msgid "Listen port" msgstr "監聽埠" -#: htdocs/luci-static/resources/view/fchomo/global.js:427 +#: htdocs/luci-static/resources/view/fchomo/global.js:452 msgid "Listen ports" msgstr "監聽埠" -#: htdocs/luci-static/resources/fchomo.js:126 +#: htdocs/luci-static/resources/fchomo.js:132 msgid "Load balance" msgstr "負載均衡" @@ -1252,20 +1258,20 @@ msgstr "日誌檔不存在。" msgid "Log is empty." msgstr "日誌為空。" -#: htdocs/luci-static/resources/view/fchomo/global.js:379 +#: htdocs/luci-static/resources/view/fchomo/global.js:404 msgid "Log level" msgstr "日誌等級" -#: htdocs/luci-static/resources/fchomo.js:637 +#: htdocs/luci-static/resources/fchomo.js:728 msgid "Lowercase only" msgstr "僅限小寫" -#: htdocs/luci-static/resources/view/fchomo/global.js:476 +#: htdocs/luci-static/resources/view/fchomo/global.js:512 #: htdocs/luci-static/resources/view/fchomo/node.js:383 msgid "MTU" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:195 +#: htdocs/luci-static/resources/view/fchomo/server.js:145 msgid "Masquerade" msgstr "偽裝" @@ -1302,7 +1308,7 @@ msgid "Max Early Data" msgstr "前置數據最大值" #: htdocs/luci-static/resources/view/fchomo/node.js:238 -#: htdocs/luci-static/resources/view/fchomo/server.js:235 +#: htdocs/luci-static/resources/view/fchomo/server.js:185 msgid "Max UDP relay packet size" msgstr "UDP 中繼數據包最大尺寸" @@ -1311,12 +1317,12 @@ msgid "Max count of failures" msgstr "最大失敗次數" #: htdocs/luci-static/resources/view/fchomo/node.js:102 -#: htdocs/luci-static/resources/view/fchomo/server.js:169 +#: htdocs/luci-static/resources/view/fchomo/server.js:119 msgid "Max download speed" msgstr "最大下載速度" #: htdocs/luci-static/resources/view/fchomo/node.js:96 -#: htdocs/luci-static/resources/view/fchomo/server.js:163 +#: htdocs/luci-static/resources/view/fchomo/server.js:113 msgid "Max upload speed" msgstr "最大上傳速度" @@ -1337,7 +1343,7 @@ msgstr "" msgid "Maximum streams" msgstr "最大流數量" -#: htdocs/luci-static/resources/fchomo.js:92 +#: htdocs/luci-static/resources/fchomo.js:98 msgid "Mieru" msgstr "" @@ -1349,7 +1355,7 @@ msgstr "Mihomo 客戶端" #: htdocs/luci-static/resources/view/fchomo/log.js:115 #: htdocs/luci-static/resources/view/fchomo/log.js:120 -#: htdocs/luci-static/resources/view/fchomo/server.js:74 +#: htdocs/luci-static/resources/view/fchomo/server.js:24 msgid "Mihomo server" msgstr "Mihomo 服務端" @@ -1363,16 +1369,17 @@ msgstr "在開啟新連線之前,連線中的最小多路復用流數量。" msgid "Minimum streams" msgstr "最小流數量" -#: htdocs/luci-static/resources/fchomo.js:63 -#: htdocs/luci-static/resources/view/fchomo/global.js:471 +#: htdocs/luci-static/resources/fchomo.js:68 +#: htdocs/luci-static/resources/view/fchomo/global.js:497 msgid "Mixed" msgstr "混合" -#: htdocs/luci-static/resources/view/fchomo/global.js:471 +#: htdocs/luci-static/resources/view/fchomo/global.js:497 +#: htdocs/luci-static/resources/view/fchomo/global.js:505 msgid "Mixed system TCP stack and gVisor UDP stack." msgstr "混合 系統 TCP 堆栈和 gVisor UDP 堆栈。" -#: htdocs/luci-static/resources/view/fchomo/global.js:430 +#: htdocs/luci-static/resources/view/fchomo/global.js:455 msgid "Mixed port" msgstr "混合連接埠" @@ -1405,7 +1412,7 @@ msgstr "用於下載規則集訂閱的代理組名稱。" msgid "Native" msgstr "原生" -#: htdocs/luci-static/resources/view/fchomo/global.js:418 +#: htdocs/luci-static/resources/view/fchomo/global.js:443 msgid "No Authentication IP ranges" msgstr "無需認證的 IP 範圍" @@ -1448,14 +1455,15 @@ msgid "Node switch tolerance" msgstr "節點切換容差" #: htdocs/luci-static/resources/view/fchomo/node.js:295 +#: htdocs/luci-static/resources/view/fchomo/server.js:213 msgid "None" msgstr "無" -#: htdocs/luci-static/resources/view/fchomo/global.js:534 +#: htdocs/luci-static/resources/view/fchomo/global.js:570 msgid "Not Installed" msgstr "未安裝" -#: htdocs/luci-static/resources/fchomo.js:571 +#: htdocs/luci-static/resources/fchomo.js:662 msgid "Not Running" msgstr "未在運作" @@ -1464,43 +1472,42 @@ msgid "Obfs Mode" msgstr "Obfs 模式" #: htdocs/luci-static/resources/view/fchomo/node.js:114 -#: htdocs/luci-static/resources/view/fchomo/server.js:187 +#: htdocs/luci-static/resources/view/fchomo/server.js:137 msgid "Obfuscate password" msgstr "混淆密碼" #: htdocs/luci-static/resources/view/fchomo/node.js:108 -#: htdocs/luci-static/resources/view/fchomo/server.js:181 +#: htdocs/luci-static/resources/view/fchomo/server.js:131 msgid "Obfuscate type" msgstr "混淆類型" -#: htdocs/luci-static/resources/view/fchomo/global.js:766 +#: htdocs/luci-static/resources/view/fchomo/global.js:802 msgid "One or more numbers in the range 0-63 separated by commas" msgstr "0-63 範圍內的一個或多個數字,以逗號分隔" -#: htdocs/luci-static/resources/view/fchomo/global.js:648 +#: htdocs/luci-static/resources/view/fchomo/global.js:684 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "只處理來自指定介面的流量。留空表示全部。" -#: htdocs/luci-static/resources/fchomo.js:565 +#: htdocs/luci-static/resources/fchomo.js:656 msgid "Open Dashboard" msgstr "打開面板" -#: htdocs/luci-static/resources/view/fchomo/global.js:367 +#: htdocs/luci-static/resources/view/fchomo/global.js:392 msgid "Operation mode" msgstr "運作模式" #: htdocs/luci-static/resources/view/fchomo/client.js:704 #: htdocs/luci-static/resources/view/fchomo/client.js:713 -msgid "" -"Option will soon be deprecated, please use the same option in proxy node." -msgstr "該選項即將被棄用,請在代理節點中使用相同的選項。" +msgid "Option is deprecated, please use the same option in proxy node." +msgstr "該選項已棄用,請在代理節點中使用相同的選項。" #: htdocs/luci-static/resources/view/fchomo/client.js:1063 msgid "Override ECS in original request." msgstr "覆蓋原始請求中的 ECS。" -#: htdocs/luci-static/resources/view/fchomo/global.js:576 -#: htdocs/luci-static/resources/view/fchomo/global.js:614 +#: htdocs/luci-static/resources/view/fchomo/global.js:612 +#: htdocs/luci-static/resources/view/fchomo/global.js:650 msgid "Override destination" msgstr "覆蓋目標位址" @@ -1517,11 +1524,11 @@ msgstr "覆蓋 DNS 回應的伺服器的 IP 位址。" msgid "Override the Proxy group of DNS server." msgstr "覆蓋 DNS 伺服器所使用的代理組。" -#: htdocs/luci-static/resources/view/fchomo/global.js:577 +#: htdocs/luci-static/resources/view/fchomo/global.js:613 msgid "Override the connection destination address with the sniffed domain." msgstr "使用嗅探到的網域覆寫連線目標。" -#: htdocs/luci-static/resources/view/fchomo/global.js:181 +#: htdocs/luci-static/resources/view/fchomo/global.js:160 msgid "Overview" msgstr "概覽" @@ -1540,8 +1547,8 @@ msgstr "數據包編碼" #: htdocs/luci-static/resources/view/fchomo/node.js:78 #: htdocs/luci-static/resources/view/fchomo/node.js:151 #: htdocs/luci-static/resources/view/fchomo/node.js:424 -#: htdocs/luci-static/resources/view/fchomo/server.js:154 -#: htdocs/luci-static/resources/view/fchomo/server.js:210 +#: htdocs/luci-static/resources/view/fchomo/server.js:104 +#: htdocs/luci-static/resources/view/fchomo/server.js:160 msgid "Password" msgstr "密碼" @@ -1554,7 +1561,7 @@ msgstr "Payload" msgid "Peer pubkic key" msgstr "對端公鑰" -#: htdocs/luci-static/resources/view/fchomo/global.js:493 +#: htdocs/luci-static/resources/view/fchomo/global.js:529 msgid "" "Performance may degrade slightly, so it is not recommended to enable on when " "it is not needed." @@ -1597,7 +1604,7 @@ msgstr "插件:" msgid "Port" msgstr "連接埠" -#: htdocs/luci-static/resources/fchomo.js:775 +#: htdocs/luci-static/resources/fchomo.js:920 msgid "Port %s alrealy exists!" msgstr "連接埠 %s 已存在!" @@ -1605,7 +1612,7 @@ msgstr "連接埠 %s 已存在!" msgid "Port range" msgstr "連接埠範圍" -#: htdocs/luci-static/resources/view/fchomo/global.js:611 +#: htdocs/luci-static/resources/view/fchomo/global.js:647 msgid "Ports" msgstr "連接埠" @@ -1618,24 +1625,24 @@ msgstr "連接埠池" msgid "Pre-shared key" msgstr "預先共用金鑰" -#: htdocs/luci-static/resources/fchomo.js:76 +#: htdocs/luci-static/resources/fchomo.js:82 msgid "Prefer IPv4" msgstr "優先 IPv4" -#: htdocs/luci-static/resources/fchomo.js:77 +#: htdocs/luci-static/resources/fchomo.js:83 msgid "Prefer IPv6" msgstr "優先 IPv6" #: htdocs/luci-static/resources/view/fchomo/client.js:703 #: htdocs/luci-static/resources/view/fchomo/client.js:712 -#: htdocs/luci-static/resources/view/fchomo/global.js:654 -#: htdocs/luci-static/resources/view/fchomo/global.js:671 +#: htdocs/luci-static/resources/view/fchomo/global.js:690 +#: htdocs/luci-static/resources/view/fchomo/global.js:707 #: htdocs/luci-static/resources/view/fchomo/node.js:763 #: htdocs/luci-static/resources/view/fchomo/node.js:769 #: htdocs/luci-static/resources/view/fchomo/node.js:971 #: htdocs/luci-static/resources/view/fchomo/node.js:977 -msgid "Priority: Proxy Node > Proxy Group > Global." -msgstr "優先權: 代理節點 > 代理組 > 全域。" +msgid "Priority: Proxy Node > Global." +msgstr "優先權: 代理節點 > 全域。" #: htdocs/luci-static/resources/view/fchomo/node.js:123 msgid "Priv-key" @@ -1649,11 +1656,11 @@ msgstr "金鑰密碼" msgid "Private key" msgstr "私鑰" -#: htdocs/luci-static/resources/view/fchomo/global.js:373 +#: htdocs/luci-static/resources/view/fchomo/global.js:398 msgid "Process matching mode" msgstr "進程匹配模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:605 +#: htdocs/luci-static/resources/view/fchomo/global.js:641 #: htdocs/luci-static/resources/view/fchomo/node.js:681 msgid "Protocol" msgstr "協議" @@ -1684,15 +1691,15 @@ msgstr "供應商訂閱 URL" msgid "Proxy Group" msgstr "代理組" -#: htdocs/luci-static/resources/view/fchomo/global.js:704 +#: htdocs/luci-static/resources/view/fchomo/global.js:740 msgid "Proxy IPv4 IP-s" msgstr "代理 IPv4 位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:707 +#: htdocs/luci-static/resources/view/fchomo/global.js:743 msgid "Proxy IPv6 IP-s" msgstr "代理 IPv6 位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:710 +#: htdocs/luci-static/resources/view/fchomo/global.js:746 msgid "Proxy MAC-s" msgstr "代理 MAC 位址" @@ -1717,11 +1724,11 @@ msgstr "代理組" msgid "Proxy group override" msgstr "代理組覆蓋" -#: htdocs/luci-static/resources/view/fchomo/global.js:450 +#: htdocs/luci-static/resources/view/fchomo/global.js:476 msgid "Proxy mode" msgstr "代理模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:713 +#: htdocs/luci-static/resources/view/fchomo/global.js:749 msgid "Proxy routerself" msgstr "代理路由器自身" @@ -1730,28 +1737,43 @@ msgid "QUIC" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:211 -#: htdocs/luci-static/resources/view/fchomo/server.js:227 +#: htdocs/luci-static/resources/view/fchomo/server.js:177 msgid "QUIC congestion controller." msgstr "QUIC 壅塞控制器。" #: htdocs/luci-static/resources/view/fchomo/client.js:599 -#: htdocs/luci-static/resources/view/fchomo/server.js:95 +#: htdocs/luci-static/resources/view/fchomo/server.js:45 msgid "Quick Reload" msgstr "快速重載" #: htdocs/luci-static/resources/view/fchomo/node.js:560 +#: htdocs/luci-static/resources/view/fchomo/server.js:293 msgid "REALITY" -msgstr "" +msgstr "REALITY" + +#: htdocs/luci-static/resources/view/fchomo/server.js:329 +msgid "REALITY certificate issued to" +msgstr "REALITY 證書頒發給" + +#: htdocs/luci-static/resources/view/fchomo/server.js:298 +msgid "REALITY handshake server" +msgstr "REALITY 握手伺服器" + +#: htdocs/luci-static/resources/view/fchomo/server.js:305 +msgid "REALITY private key" +msgstr "REALITY 私鑰" #: htdocs/luci-static/resources/view/fchomo/node.js:565 +#: htdocs/luci-static/resources/view/fchomo/server.js:319 msgid "REALITY public key" msgstr "REALITY 公鑰" #: htdocs/luci-static/resources/view/fchomo/node.js:570 +#: htdocs/luci-static/resources/view/fchomo/server.js:323 msgid "REALITY short ID" msgstr "REALITY 標識符" -#: htdocs/luci-static/resources/view/fchomo/global.js:565 +#: htdocs/luci-static/resources/view/fchomo/global.js:601 msgid "Random will be used if empty." msgstr "留空將使用隨機令牌。" @@ -1760,19 +1782,19 @@ msgstr "留空將使用隨機令牌。" msgid "Recommended to use UoT node.
such as %s." msgstr "建議使用 UoT 節點。
例如%s。" -#: htdocs/luci-static/resources/view/fchomo/global.js:435 +#: htdocs/luci-static/resources/view/fchomo/global.js:460 msgid "Redir port" msgstr "Redir 連接埠" -#: htdocs/luci-static/resources/view/fchomo/global.js:451 +#: htdocs/luci-static/resources/view/fchomo/global.js:477 msgid "Redirect TCP" msgstr "Redirect TCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:453 +#: htdocs/luci-static/resources/view/fchomo/global.js:479 msgid "Redirect TCP + TProxy UDP" msgstr "Redirect TCP + TProxy UDP" -#: htdocs/luci-static/resources/view/fchomo/global.js:455 +#: htdocs/luci-static/resources/view/fchomo/global.js:481 msgid "Redirect TCP + Tun UDP" msgstr "Redirect TCP + Tun UDP" @@ -1780,14 +1802,14 @@ msgstr "Redirect TCP + Tun UDP" msgid "Refresh every %s seconds." msgstr "每 %s 秒刷新。" -#: htdocs/luci-static/resources/fchomo.js:558 +#: htdocs/luci-static/resources/fchomo.js:649 #: htdocs/luci-static/resources/view/fchomo/client.js:600 -#: htdocs/luci-static/resources/view/fchomo/global.js:214 -#: htdocs/luci-static/resources/view/fchomo/server.js:96 +#: htdocs/luci-static/resources/view/fchomo/global.js:193 +#: htdocs/luci-static/resources/view/fchomo/server.js:46 msgid "Reload" msgstr "重載" -#: htdocs/luci-static/resources/view/fchomo/global.js:213 +#: htdocs/luci-static/resources/view/fchomo/global.js:192 msgid "Reload All" msgstr "重載所有" @@ -1800,11 +1822,11 @@ msgstr "遠端" msgid "Remote DNS resolve" msgstr "遠端 DNS 解析" -#: htdocs/luci-static/resources/fchomo.js:696 +#: htdocs/luci-static/resources/fchomo.js:841 msgid "Remove" msgstr "移除" -#: htdocs/luci-static/resources/fchomo.js:701 +#: htdocs/luci-static/resources/fchomo.js:846 #: htdocs/luci-static/resources/view/fchomo/node.js:800 #: htdocs/luci-static/resources/view/fchomo/node.js:802 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:185 @@ -1833,7 +1855,7 @@ msgstr "請求逾時" msgid "Reserved field bytes" msgstr "保留字段位元組" -#: htdocs/luci-static/resources/view/fchomo/global.js:273 +#: htdocs/luci-static/resources/view/fchomo/global.js:298 msgid "Resources management" msgstr "資源管理" @@ -1841,40 +1863,40 @@ msgstr "資源管理" msgid "Restls script" msgstr "Restls 劇本" -#: htdocs/luci-static/resources/view/fchomo/global.js:717 +#: htdocs/luci-static/resources/view/fchomo/global.js:753 msgid "Routing Control" msgstr "路由控制" -#: htdocs/luci-static/resources/view/fchomo/global.js:755 -#: htdocs/luci-static/resources/view/fchomo/global.js:758 +#: htdocs/luci-static/resources/view/fchomo/global.js:791 +#: htdocs/luci-static/resources/view/fchomo/global.js:794 msgid "Routing DSCP" msgstr "路由 DSCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:741 +#: htdocs/luci-static/resources/view/fchomo/global.js:777 msgid "Routing GFW" msgstr "路由 GFW 流量" #: htdocs/luci-static/resources/view/fchomo/client.js:711 -#: htdocs/luci-static/resources/view/fchomo/global.js:670 +#: htdocs/luci-static/resources/view/fchomo/global.js:706 #: htdocs/luci-static/resources/view/fchomo/node.js:768 #: htdocs/luci-static/resources/view/fchomo/node.js:976 msgid "Routing mark" msgstr "路由標記" -#: htdocs/luci-static/resources/view/fchomo/global.js:737 +#: htdocs/luci-static/resources/view/fchomo/global.js:773 msgid "Routing mode" msgstr "路由模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:738 +#: htdocs/luci-static/resources/view/fchomo/global.js:774 msgid "Routing mode of the traffic enters mihomo via firewall rules." msgstr "流量經由防火牆規則進入 mihomo 的路由模式。" -#: htdocs/luci-static/resources/view/fchomo/global.js:744 +#: htdocs/luci-static/resources/view/fchomo/global.js:780 msgid "Routing mode will be handle domain." msgstr "路由模式將處理網域。" -#: htdocs/luci-static/resources/view/fchomo/global.js:719 -#: htdocs/luci-static/resources/view/fchomo/global.js:728 +#: htdocs/luci-static/resources/view/fchomo/global.js:755 +#: htdocs/luci-static/resources/view/fchomo/global.js:764 msgid "Routing ports" msgstr "路由連接埠" @@ -1883,15 +1905,15 @@ msgstr "路由連接埠" msgid "Routing rule" msgstr "路由規則" -#: htdocs/luci-static/resources/view/fchomo/global.js:664 +#: htdocs/luci-static/resources/view/fchomo/global.js:700 msgid "Routing rule priority" msgstr "路由規則優先權" -#: htdocs/luci-static/resources/view/fchomo/global.js:658 +#: htdocs/luci-static/resources/view/fchomo/global.js:694 msgid "Routing table ID" msgstr "路由表 ID" -#: htdocs/luci-static/resources/view/fchomo/global.js:369 +#: htdocs/luci-static/resources/view/fchomo/global.js:394 msgid "Rule" msgstr "規則" @@ -1913,24 +1935,23 @@ msgstr "規則集" msgid "Ruleset-URI-Scheme" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:571 +#: htdocs/luci-static/resources/fchomo.js:662 msgid "Running" msgstr "正在運作" -#: htdocs/luci-static/resources/fchomo.js:62 +#: htdocs/luci-static/resources/fchomo.js:67 msgid "SOCKS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:89 +#: htdocs/luci-static/resources/fchomo.js:95 msgid "SOCKS5" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:101 +#: htdocs/luci-static/resources/fchomo.js:107 msgid "SSH" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:724 -#: htdocs/luci-static/resources/view/fchomo/global.js:733 +#: htdocs/luci-static/resources/fchomo.js:140 msgid "STUN ports" msgstr "STUN 連接埠" @@ -1943,31 +1964,31 @@ msgid "SUoT version" msgstr "SUoT 版本" #: htdocs/luci-static/resources/view/fchomo/node.js:110 -#: htdocs/luci-static/resources/view/fchomo/server.js:183 +#: htdocs/luci-static/resources/view/fchomo/server.js:133 msgid "Salamander" msgstr "Salamander" -#: htdocs/luci-static/resources/fchomo.js:82 +#: htdocs/luci-static/resources/fchomo.js:88 msgid "Same dstaddr requests. Same node" msgstr "相同 目標位址 請求。相同節點" -#: htdocs/luci-static/resources/fchomo.js:83 +#: htdocs/luci-static/resources/fchomo.js:89 msgid "Same srcaddr and dstaddr requests. Same node" msgstr "相同 來源位址 和 目標位址 請求。相同節點" -#: htdocs/luci-static/resources/view/fchomo/global.js:483 +#: htdocs/luci-static/resources/view/fchomo/global.js:519 msgid "Segment maximum size" msgstr "分段最大尺寸" -#: htdocs/luci-static/resources/fchomo.js:123 +#: htdocs/luci-static/resources/fchomo.js:129 msgid "Select" msgstr "手動選擇" -#: htdocs/luci-static/resources/view/fchomo/global.js:526 +#: htdocs/luci-static/resources/view/fchomo/global.js:562 msgid "Select Dashboard" msgstr "選擇面板" -#: htdocs/luci-static/resources/view/fchomo/server.js:113 +#: htdocs/luci-static/resources/view/fchomo/server.js:63 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:54 msgid "Server" msgstr "服務端" @@ -1980,16 +2001,16 @@ msgstr "伺服器位址" msgid "Server hostname" msgstr "伺服器主機名稱" -#: htdocs/luci-static/resources/view/fchomo/global.js:205 +#: htdocs/luci-static/resources/view/fchomo/global.js:184 msgid "Server status" msgstr "服務端狀態" -#: htdocs/luci-static/resources/view/fchomo/global.js:184 +#: htdocs/luci-static/resources/view/fchomo/global.js:163 msgid "Service status" msgstr "服務狀態" -#: htdocs/luci-static/resources/fchomo.js:64 -#: htdocs/luci-static/resources/fchomo.js:90 +#: htdocs/luci-static/resources/fchomo.js:69 +#: htdocs/luci-static/resources/fchomo.js:96 msgid "Shadowsocks" msgstr "" @@ -2009,11 +2030,11 @@ msgstr "Shadowsocks 密碼" msgid "Show connections in the dashboard for breaking connections easier." msgstr "在面板中顯示連線以便於打斷連線。" -#: htdocs/luci-static/resources/view/fchomo/global.js:380 +#: htdocs/luci-static/resources/view/fchomo/global.js:405 msgid "Silent" msgstr "靜音" -#: htdocs/luci-static/resources/fchomo.js:81 +#: htdocs/luci-static/resources/fchomo.js:87 msgid "Simple round-robin all nodes" msgstr "簡單輪替所有節點" @@ -2027,42 +2048,42 @@ msgstr "大小限制" msgid "Skip cert verify" msgstr "跳過憑證驗證" -#: htdocs/luci-static/resources/view/fchomo/global.js:583 +#: htdocs/luci-static/resources/view/fchomo/global.js:619 msgid "Skiped sniffing domain" msgstr "跳過嗅探網域" -#: htdocs/luci-static/resources/view/fchomo/global.js:589 +#: htdocs/luci-static/resources/view/fchomo/global.js:625 msgid "Skiped sniffing dst address" msgstr "跳過嗅探目標位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:586 +#: htdocs/luci-static/resources/view/fchomo/global.js:622 msgid "Skiped sniffing src address" msgstr "跳過嗅探來源位址" -#: htdocs/luci-static/resources/fchomo.js:93 +#: htdocs/luci-static/resources/fchomo.js:99 msgid "Snell" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:593 +#: htdocs/luci-static/resources/view/fchomo/global.js:629 msgid "Sniff protocol" msgstr "嗅探協議" -#: htdocs/luci-static/resources/view/fchomo/global.js:570 +#: htdocs/luci-static/resources/view/fchomo/global.js:606 msgid "Sniffer" msgstr "嗅探器" -#: htdocs/luci-static/resources/view/fchomo/global.js:573 +#: htdocs/luci-static/resources/view/fchomo/global.js:609 msgid "Sniffer settings" msgstr "嗅探器設定" -#: htdocs/luci-static/resources/view/fchomo/global.js:720 -#: htdocs/luci-static/resources/view/fchomo/global.js:729 +#: htdocs/luci-static/resources/view/fchomo/global.js:756 +#: htdocs/luci-static/resources/view/fchomo/global.js:765 msgid "" "Specify target ports to be proxied. Multiple ports must be separated by " "commas." msgstr "指定需要被代理的目標連接埠。多個連接埠必須以逗號隔開。" -#: htdocs/luci-static/resources/view/fchomo/global.js:466 +#: htdocs/luci-static/resources/view/fchomo/global.js:492 msgid "Stack" msgstr "堆栈" @@ -2088,7 +2109,7 @@ msgstr "已成功匯入 %s 個規則集 (共 %s 個)。" msgid "Successfully updated." msgstr "更新成功。" -#: htdocs/luci-static/resources/fchomo.js:998 +#: htdocs/luci-static/resources/fchomo.js:1143 msgid "Successfully uploaded." msgstr "已成功上傳。" @@ -2100,7 +2121,7 @@ msgstr "" "支持规则集类型为: %s 并且格式为: %s 的规则集鏈接。" "
" -#: htdocs/luci-static/resources/view/fchomo/global.js:468 +#: htdocs/luci-static/resources/view/fchomo/global.js:494 msgid "System" msgstr "系統" @@ -2113,7 +2134,7 @@ msgstr "系統 DNS" msgid "TCP" msgstr "TCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:396 +#: htdocs/luci-static/resources/view/fchomo/global.js:421 msgid "TCP concurrency" msgstr "TCP 併發" @@ -2121,11 +2142,11 @@ msgstr "TCP 併發" msgid "TCP only" msgstr "僅 TCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:404 +#: htdocs/luci-static/resources/view/fchomo/global.js:429 msgid "TCP-Keep-Alive idle timeout" msgstr "TCP-Keep-Alive 閒置逾時" -#: htdocs/luci-static/resources/view/fchomo/global.js:399 +#: htdocs/luci-static/resources/view/fchomo/global.js:424 msgid "TCP-Keep-Alive interval" msgstr "TCP-Keep-Alive 間隔" @@ -2134,15 +2155,15 @@ msgstr "TCP-Keep-Alive 間隔" msgid "TFO" msgstr "TCP 快速開啟 (TFO)" -#: htdocs/luci-static/resources/view/fchomo/global.js:498 +#: htdocs/luci-static/resources/view/fchomo/global.js:534 #: htdocs/luci-static/resources/view/fchomo/node.js:412 #: htdocs/luci-static/resources/view/fchomo/node.js:470 -#: htdocs/luci-static/resources/view/fchomo/server.js:270 +#: htdocs/luci-static/resources/view/fchomo/server.js:226 msgid "TLS" msgstr "TLS" #: htdocs/luci-static/resources/view/fchomo/node.js:524 -#: htdocs/luci-static/resources/view/fchomo/server.js:292 +#: htdocs/luci-static/resources/view/fchomo/server.js:257 msgid "TLS ALPN" msgstr "TLS ALPN" @@ -2154,17 +2175,16 @@ msgstr "" msgid "TLS fields" msgstr "TLS欄位" -#: htdocs/luci-static/resources/fchomo.js:66 -#: htdocs/luci-static/resources/fchomo.js:99 +#: htdocs/luci-static/resources/fchomo.js:72 +#: htdocs/luci-static/resources/fchomo.js:105 msgid "TUIC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:725 -#: htdocs/luci-static/resources/view/fchomo/global.js:734 +#: htdocs/luci-static/resources/fchomo.js:141 msgid "TURN ports" msgstr "TURN 連接埠" -#: htdocs/luci-static/resources/view/fchomo/server.js:176 +#: htdocs/luci-static/resources/view/fchomo/server.js:126 msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "讓客戶端使用 BBR 流控演算法。" @@ -2174,7 +2194,7 @@ msgstr "讓客戶端使用 BBR 流控演算法。" msgid "The %s address used by local machine in the Wireguard network." msgstr "WireGuard 網路中使用的本機 %s 位址。" -#: htdocs/luci-static/resources/view/fchomo/global.js:297 +#: htdocs/luci-static/resources/view/fchomo/global.js:322 msgid "The default value is 2:00 every day." msgstr "預設值為每天 2:00。" @@ -2188,11 +2208,11 @@ msgstr "匹配 %s 的將被視為未被投毒汙染。" msgid "The matching %s will be deemed as poisoned." msgstr "匹配 %s 的將被視為已被投毒汙染。" -#: htdocs/luci-static/resources/view/fchomo/server.js:313 +#: htdocs/luci-static/resources/view/fchomo/server.js:278 msgid "The server private key, in PEM format." msgstr "服務端私鑰,需要 PEM 格式。" -#: htdocs/luci-static/resources/view/fchomo/server.js:298 +#: htdocs/luci-static/resources/view/fchomo/server.js:263 msgid "The server public key, in PEM format." msgstr "服務端公鑰,需要 PEM 格式。" @@ -2212,29 +2232,29 @@ msgstr "" "這是 TUIC 的 SUoT 協議移植, 旨在提供 TUIC 不提供的基於 QUIC 流的 UDP 中繼模" "式。" -#: htdocs/luci-static/resources/view/fchomo/global.js:256 +#: htdocs/luci-static/resources/view/fchomo/global.js:235 msgid "" "To check NAT Behavior you need to install stuntman-client first" msgstr "" "檢測 NAT 行為需要先安裝 stuntman-client first" -#: htdocs/luci-static/resources/view/fchomo/global.js:458 +#: htdocs/luci-static/resources/view/fchomo/global.js:484 msgid "" "To enable Tun support, you need to install ip-full and " "kmod-tun" msgstr "" "要啟用 Tun 支持,您需要安裝 ip-fullkmod-tun。" -#: htdocs/luci-static/resources/view/fchomo/global.js:747 +#: htdocs/luci-static/resources/view/fchomo/global.js:783 msgid "To enable, you need to install dnsmasq-full." msgstr "要啟用,您需要安裝 dnsmasq-full。" -#: htdocs/luci-static/resources/view/fchomo/global.js:677 +#: htdocs/luci-static/resources/view/fchomo/global.js:713 msgid "Tproxy Fwmark" msgstr "Tproxy 標記" -#: htdocs/luci-static/resources/view/fchomo/global.js:440 +#: htdocs/luci-static/resources/view/fchomo/global.js:465 msgid "Tproxy port" msgstr "Tproxy 連接埠" @@ -2251,23 +2271,23 @@ msgstr "傳輸層欄位" msgid "Transport type" msgstr "傳輸層類型" -#: htdocs/luci-static/resources/fchomo.js:96 +#: htdocs/luci-static/resources/fchomo.js:102 msgid "Trojan" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:682 +#: htdocs/luci-static/resources/view/fchomo/global.js:718 msgid "Tun Fwmark" msgstr "Tun 標記" -#: htdocs/luci-static/resources/view/fchomo/global.js:456 +#: htdocs/luci-static/resources/view/fchomo/global.js:482 msgid "Tun TCP/UDP" msgstr "Tun TCP/UDP" -#: htdocs/luci-static/resources/view/fchomo/global.js:463 +#: htdocs/luci-static/resources/view/fchomo/global.js:489 msgid "Tun settings" msgstr "Tun 設定" -#: htdocs/luci-static/resources/view/fchomo/global.js:467 +#: htdocs/luci-static/resources/view/fchomo/global.js:493 msgid "Tun stack." msgstr "Tun 堆栈" @@ -2280,7 +2300,7 @@ msgstr "Tun 堆栈" #: htdocs/luci-static/resources/view/fchomo/node.js:823 #: htdocs/luci-static/resources/view/fchomo/node.js:1074 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:203 -#: htdocs/luci-static/resources/view/fchomo/server.js:128 +#: htdocs/luci-static/resources/view/fchomo/server.js:78 msgid "Type" msgstr "類型" @@ -2288,11 +2308,11 @@ msgstr "類型" #: htdocs/luci-static/resources/view/fchomo/client.js:404 #: htdocs/luci-static/resources/view/fchomo/node.js:451 #: htdocs/luci-static/resources/view/fchomo/node.js:937 -#: htdocs/luci-static/resources/view/fchomo/server.js:328 +#: htdocs/luci-static/resources/view/fchomo/server.js:337 msgid "UDP" msgstr "UDP" -#: htdocs/luci-static/resources/view/fchomo/global.js:487 +#: htdocs/luci-static/resources/view/fchomo/global.js:523 msgid "UDP NAT expiration time" msgstr "UDP NAT 過期時間" @@ -2312,18 +2332,18 @@ msgstr "UDP 包中繼模式。" msgid "UDP relay mode" msgstr "UDP 中繼模式" -#: htdocs/luci-static/resources/fchomo.js:125 +#: htdocs/luci-static/resources/fchomo.js:131 msgid "URL test" msgstr "自動選擇" #: htdocs/luci-static/resources/view/fchomo/node.js:198 #: htdocs/luci-static/resources/view/fchomo/node.js:288 -#: htdocs/luci-static/resources/view/fchomo/server.js:220 -#: htdocs/luci-static/resources/view/fchomo/server.js:256 +#: htdocs/luci-static/resources/view/fchomo/server.js:170 +#: htdocs/luci-static/resources/view/fchomo/server.js:206 msgid "UUID" msgstr "UUID" -#: htdocs/luci-static/resources/fchomo.js:616 +#: htdocs/luci-static/resources/fchomo.js:707 msgid "Unable to download unsupported type: %s" msgstr "無法下載不支援的類型: %s" @@ -2331,12 +2351,12 @@ msgstr "無法下載不支援的類型: %s" msgid "Unable to save contents: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:393 +#: htdocs/luci-static/resources/view/fchomo/global.js:418 msgid "Unified delay" msgstr "統一延遲" -#: htdocs/luci-static/resources/view/fchomo/global.js:189 -#: htdocs/luci-static/resources/view/fchomo/global.js:194 +#: htdocs/luci-static/resources/view/fchomo/global.js:168 +#: htdocs/luci-static/resources/view/fchomo/global.js:173 msgid "Unknown" msgstr "未知" @@ -2370,21 +2390,21 @@ msgstr "上傳頻寬" msgid "Upload bandwidth in Mbps." msgstr "上傳頻寬(單位:Mbps)。" -#: htdocs/luci-static/resources/view/fchomo/server.js:304 +#: htdocs/luci-static/resources/view/fchomo/server.js:269 msgid "Upload certificate" msgstr "上傳憑證" -#: htdocs/luci-static/resources/view/fchomo/global.js:277 +#: htdocs/luci-static/resources/view/fchomo/global.js:302 msgid "Upload initial package" msgstr "上傳初始資源包" -#: htdocs/luci-static/resources/view/fchomo/server.js:319 +#: htdocs/luci-static/resources/view/fchomo/server.js:284 msgid "Upload key" msgstr "上傳金鑰" -#: htdocs/luci-static/resources/view/fchomo/global.js:279 -#: htdocs/luci-static/resources/view/fchomo/server.js:307 -#: htdocs/luci-static/resources/view/fchomo/server.js:322 +#: htdocs/luci-static/resources/view/fchomo/global.js:304 +#: htdocs/luci-static/resources/view/fchomo/server.js:272 +#: htdocs/luci-static/resources/view/fchomo/server.js:287 msgid "Upload..." msgstr "上傳..." @@ -2400,16 +2420,16 @@ msgstr "用於解析代理節點的網域。" msgid "Used to verify the hostname on the returned certificates." msgstr "用於驗證傳回的憑證上的主機名稱。" -#: htdocs/luci-static/resources/view/fchomo/global.js:413 +#: htdocs/luci-static/resources/view/fchomo/global.js:438 msgid "User Authentication" msgstr "使用者認證" #: htdocs/luci-static/resources/view/fchomo/node.js:73 -#: htdocs/luci-static/resources/view/fchomo/server.js:149 +#: htdocs/luci-static/resources/view/fchomo/server.js:99 msgid "Username" msgstr "使用者名稱" -#: htdocs/luci-static/resources/view/fchomo/global.js:690 +#: htdocs/luci-static/resources/view/fchomo/global.js:726 msgid "Users filter mode" msgstr "使用者過濾模式" @@ -2421,12 +2441,13 @@ msgstr "" msgid "V2ray HTTPUpgrade fast open" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:95 +#: htdocs/luci-static/resources/fchomo.js:71 +#: htdocs/luci-static/resources/fchomo.js:101 msgid "VLESS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:65 -#: htdocs/luci-static/resources/fchomo.js:94 +#: htdocs/luci-static/resources/fchomo.js:70 +#: htdocs/luci-static/resources/fchomo.js:100 msgid "VMess" msgstr "" @@ -2445,7 +2466,7 @@ msgstr "版本" msgid "Version hint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:382 +#: htdocs/luci-static/resources/view/fchomo/global.js:407 msgid "Warning" msgstr "警告" @@ -2455,15 +2476,15 @@ msgstr "警告" msgid "WebSocket" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:75 +#: htdocs/luci-static/resources/view/fchomo/server.js:25 msgid "When used as a server, HomeProxy is a better choice." msgstr "用作服務端時,HomeProxy 是更好的選擇。" -#: htdocs/luci-static/resources/view/fchomo/global.js:692 +#: htdocs/luci-static/resources/view/fchomo/global.js:728 msgid "White list" msgstr "白名單" -#: htdocs/luci-static/resources/fchomo.js:100 +#: htdocs/luci-static/resources/fchomo.js:106 msgid "WireGuard" msgstr "" @@ -2487,25 +2508,25 @@ msgstr "" msgid "Yaml text" msgstr "Yaml 格式文本" -#: htdocs/luci-static/resources/fchomo.js:52 +#: htdocs/luci-static/resources/fchomo.js:57 msgid "YouTube" msgstr "YouTube" -#: htdocs/luci-static/resources/fchomo.js:980 +#: htdocs/luci-static/resources/fchomo.js:1125 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "您的 %s 已成功上傳。大小:%sB。" -#: htdocs/luci-static/resources/fchomo.js:188 +#: htdocs/luci-static/resources/fchomo.js:202 #: htdocs/luci-static/resources/view/fchomo/node.js:272 #: htdocs/luci-static/resources/view/fchomo/node.js:311 msgid "aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:189 +#: htdocs/luci-static/resources/fchomo.js:203 msgid "aes-192-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:190 +#: htdocs/luci-static/resources/fchomo.js:204 #: htdocs/luci-static/resources/view/fchomo/node.js:273 msgid "aes-256-gcm" msgstr "" @@ -2515,15 +2536,15 @@ msgid "auto" msgstr "自動" #: htdocs/luci-static/resources/view/fchomo/node.js:215 -#: htdocs/luci-static/resources/view/fchomo/server.js:231 +#: htdocs/luci-static/resources/view/fchomo/server.js:181 msgid "bbr" msgstr "bbr" -#: htdocs/luci-static/resources/view/fchomo/server.js:309 +#: htdocs/luci-static/resources/view/fchomo/server.js:274 msgid "certificate" msgstr "憑證" -#: htdocs/luci-static/resources/fchomo.js:191 +#: htdocs/luci-static/resources/fchomo.js:205 #: htdocs/luci-static/resources/view/fchomo/node.js:274 msgid "chacha20-ietf-poly1305" msgstr "" @@ -2533,7 +2554,7 @@ msgid "chacha20-poly1305" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:213 -#: htdocs/luci-static/resources/view/fchomo/server.js:229 +#: htdocs/luci-static/resources/view/fchomo/server.js:179 msgid "cubic" msgstr "cubic" @@ -2551,7 +2572,7 @@ msgstr "" msgid "gRPC service name" msgstr "gRPC 服務名稱" -#: htdocs/luci-static/resources/view/fchomo/global.js:470 +#: htdocs/luci-static/resources/view/fchomo/global.js:496 msgid "gVisor" msgstr "gVisor" @@ -2559,7 +2580,7 @@ msgstr "gVisor" msgid "h2mux" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:35 +#: htdocs/luci-static/resources/fchomo.js:40 msgid "metacubexd" msgstr "metacubexd" @@ -2569,7 +2590,7 @@ msgid "mpTCP" msgstr "多路徑 TCP (mpTCP)" #: htdocs/luci-static/resources/view/fchomo/node.js:214 -#: htdocs/luci-static/resources/view/fchomo/server.js:230 +#: htdocs/luci-static/resources/view/fchomo/server.js:180 msgid "new_reno" msgstr "new_reno" @@ -2577,13 +2598,13 @@ msgstr "new_reno" msgid "no-resolve" msgstr "no-resolve" -#: htdocs/luci-static/resources/fchomo.js:763 -#: htdocs/luci-static/resources/fchomo.js:817 -#: htdocs/luci-static/resources/fchomo.js:848 +#: htdocs/luci-static/resources/fchomo.js:908 +#: htdocs/luci-static/resources/fchomo.js:962 +#: htdocs/luci-static/resources/fchomo.js:993 msgid "non-empty value" msgstr "非空值" -#: htdocs/luci-static/resources/fchomo.js:186 +#: htdocs/luci-static/resources/fchomo.js:200 #: htdocs/luci-static/resources/view/fchomo/node.js:309 #: htdocs/luci-static/resources/view/fchomo/node.js:329 #: htdocs/luci-static/resources/view/fchomo/node.js:402 @@ -2599,7 +2620,7 @@ msgstr "未找到" msgid "not included \",\"" msgstr "不包含 \",\"" -#: htdocs/luci-static/resources/fchomo.js:113 +#: htdocs/luci-static/resources/fchomo.js:119 msgid "null" msgstr "" @@ -2615,11 +2636,11 @@ msgstr "" msgid "packet addr (v2ray-core v5+)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/server.js:324 +#: htdocs/luci-static/resources/view/fchomo/server.js:289 msgid "private key" msgstr "私鑰" -#: htdocs/luci-static/resources/fchomo.js:37 +#: htdocs/luci-static/resources/fchomo.js:42 msgid "razord-meta" msgstr "razord-meta" @@ -2639,19 +2660,19 @@ msgstr "" msgid "src" msgstr "src" -#: htdocs/luci-static/resources/view/fchomo/global.js:244 +#: htdocs/luci-static/resources/view/fchomo/global.js:223 msgid "unchecked" msgstr "未檢查" -#: htdocs/luci-static/resources/fchomo.js:640 +#: htdocs/luci-static/resources/fchomo.js:731 msgid "unique UCI identifier" msgstr "獨立 UCI 識別" -#: htdocs/luci-static/resources/fchomo.js:643 +#: htdocs/luci-static/resources/fchomo.js:734 msgid "unique identifier" msgstr "獨立標識" -#: htdocs/luci-static/resources/fchomo.js:857 +#: htdocs/luci-static/resources/fchomo.js:1002 msgid "unique value" msgstr "獨立值" @@ -2677,8 +2698,8 @@ msgstr "" msgid "v3" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:791 -#: htdocs/luci-static/resources/fchomo.js:794 +#: htdocs/luci-static/resources/fchomo.js:936 +#: htdocs/luci-static/resources/fchomo.js:939 msgid "valid JSON format" msgstr "有效的 JSON 格式" @@ -2686,32 +2707,32 @@ msgstr "有效的 JSON 格式" msgid "valid SHA256 string with %d characters" msgstr "包含 %d 個字元的有效 SHA256 字串" -#: htdocs/luci-static/resources/fchomo.js:869 -#: htdocs/luci-static/resources/fchomo.js:872 +#: htdocs/luci-static/resources/fchomo.js:1014 +#: htdocs/luci-static/resources/fchomo.js:1017 msgid "valid URL" msgstr "有效網址" -#: htdocs/luci-static/resources/fchomo.js:804 +#: htdocs/luci-static/resources/fchomo.js:949 msgid "valid base64 key with %d characters" msgstr "包含 %d 個字元的有效 base64 金鑰" -#: htdocs/luci-static/resources/fchomo.js:819 +#: htdocs/luci-static/resources/fchomo.js:964 msgid "valid key length with %d characters" msgstr "包含 %d 個字元的有效金鑰" -#: htdocs/luci-static/resources/fchomo.js:773 +#: htdocs/luci-static/resources/fchomo.js:918 msgid "valid port value" msgstr "有效連接埠值" -#: htdocs/luci-static/resources/fchomo.js:882 +#: htdocs/luci-static/resources/fchomo.js:1027 msgid "valid uuid" msgstr "有效 uuid" -#: htdocs/luci-static/resources/fchomo.js:192 +#: htdocs/luci-static/resources/fchomo.js:206 msgid "xchacha20-ietf-poly1305" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:36 +#: htdocs/luci-static/resources/fchomo.js:41 msgid "yacd-meta" msgstr "yacd-meta" @@ -2719,7 +2740,7 @@ msgstr "yacd-meta" msgid "yamux" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:34 +#: htdocs/luci-static/resources/fchomo.js:39 msgid "zashboard" msgstr "" @@ -2727,6 +2748,6 @@ msgstr "" msgid "zero" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:618 +#: htdocs/luci-static/resources/fchomo.js:709 msgid "🡇" msgstr "" diff --git a/luci-app-fchomo/root/etc/config/fchomo b/luci-app-fchomo/root/etc/config/fchomo index ec854ed91..35909cd8b 100644 --- a/luci-app-fchomo/root/etc/config/fchomo +++ b/luci-app-fchomo/root/etc/config/fchomo @@ -50,7 +50,7 @@ config fchomo 'sniffer' list skip_domain 'Mijia Cloud' config fchomo 'dns' - option port '7853' + option dns_port '7853' option fallback_filter_geoip_code 'cn' config fchomo 'experimental' diff --git a/luci-app-fchomo/root/etc/init.d/fchomo b/luci-app-fchomo/root/etc/init.d/fchomo index 5c281ccd4..dfb4eb623 100755 --- a/luci-app-fchomo/root/etc/init.d/fchomo +++ b/luci-app-fchomo/root/etc/init.d/fchomo @@ -147,9 +147,9 @@ start_service() { local global_ipv6 dns_ipv6 config_get_bool global_ipv6 "global" "ipv6" "1" config_get_bool dns_ipv6 "dns" "ipv6" "1" - local dns_port tcp_dns_port - config_get dns_port "dns" "port" "7853" - config_get tcp_dns_port "inbound" "tunnel_port" "7893" + local dns_port tunnel_port + config_get dns_port "dns" "dns_port" "7853" + config_get tunnel_port "inbound" "tunnel_port" "7893" # Not required for v1.19.2+ local routing_mode routing_domain config_get routing_mode "routing" "routing_mode" "" config_get_bool routing_domain "routing" "routing_domain" "0" diff --git a/luci-app-fchomo/root/etc/uci-defaults/luci-app-fchomo-migration b/luci-app-fchomo/root/etc/uci-defaults/luci-app-fchomo-migration index 122484fb6..93b8f6cf3 100755 --- a/luci-app-fchomo/root/etc/uci-defaults/luci-app-fchomo-migration +++ b/luci-app-fchomo/root/etc/uci-defaults/luci-app-fchomo-migration @@ -8,7 +8,6 @@ if [ -n "$default_proxy" ]; then set fchomo.autogened_final_host="rules" set fchomo.autogened_final_host.label="Auto Generated Final" set fchomo.autogened_final_host.entry="MATCH,$default_proxy" - commit fchomo EOF fi @@ -33,6 +32,14 @@ for option in routing_tcpport routing_udpport; do fi done +dns_port=$(uci -q get fchomo.dns.port) +if [ -n "$dns_port" ]; then + uci -q batch <<-EOF >"/dev/null" + delete fchomo.dns.port + set fchomo.dns.dns_port="$dns_port" + EOF +fi + uci commit fchomo exit 0 diff --git a/luci-app-fchomo/root/usr/share/fchomo/firewall_post.ut b/luci-app-fchomo/root/usr/share/fchomo/firewall_post.ut index 4c81a136f..f84d2ede4 100644 --- a/luci-app-fchomo/root/usr/share/fchomo/firewall_post.ut +++ b/luci-app-fchomo/root/usr/share/fchomo/firewall_post.ut @@ -68,7 +68,7 @@ const redir_port = uci.get(cfgname, 'inbound', 'redir_port') || '7891', tproxy_port = uci.get(cfgname, 'inbound', 'tproxy_port') || '7892', - tunnel_port = uci.get(cfgname, 'inbound', 'tunnel_port') || '7893', + tunnel_port = uci.get(cfgname, 'inbound', 'tunnel_port') || '7893', // Not required for v1.19.2+ proxy_mode = uci.get(cfgname, 'inbound', 'proxy_mode') || 'redir_tproxy'; const global_ipv6 = uci.get(cfgname, 'global', 'ipv6') || '1', @@ -450,7 +450,7 @@ table inet fchomo { {{ render_acl_dport('redir_acl_dport', 'redir_gate', 'tcp') }} chain redir_gate { {#- DNS hijack #} - tcp dport 53 counter redirect to :{{ tunnel_port }} comment "!{{ cfgname }}: DNS hijack (router tcp)" + tcp dport 53 counter redirect to :{{ dns_port }} comment "!{{ cfgname }}: DNS hijack (router tcp)" meta l4proto tcp counter redirect to :{{ redir_port }} } @@ -474,7 +474,7 @@ table inet fchomo { {{ render_acl_dport('tproxy_acl_dport_reroute', 'tproxy_mark', 'udp') }} chain tproxy_mark { {#- DNS hijack (router udp) #} - {# tproxy_mark --> route_table_id --reroute-to--> lo --> prerouting #} + {# tproxy_mark --> route_table_id --reroute-to--> lo --> prerouting --> tproxy_port --> DST-PORT,53,dns-out #} meta l4proto udp meta mark set {{ tproxy_mark }} counter accept } diff --git a/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc b/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc index 6e9e2ba31..6f027db6f 100644 --- a/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc +++ b/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc @@ -346,7 +346,7 @@ push(config.listeners, { listen: '::', network: ['tcp', 'udp'], target: '1.1.1.1:53' -}); +}); // Not required for v1.19.2+ /* Tun settings */ if (match(proxy_mode, /tun/)) push(config.listeners, { @@ -393,7 +393,7 @@ if (match(proxy_mode, /tun/)) config.dns = { enable: true, "prefer-h3": false, - listen: '[::]:' + (uci.get(uciconf, ucidns, 'port') || '7853'), + listen: '[::]:' + (uci.get(uciconf, ucidns, 'dns_port') || '7853'), ipv6: (uci.get(uciconf, ucidns, 'ipv6') === '0') ? false : true, "enhanced-mode": 'redir-host', "use-hosts": true, @@ -650,8 +650,6 @@ uci.foreach(uciconf, ucipgrp, (cfg) => { strategy: cfg.strategy, // Override fields "disable-udp": strToBool(cfg.disable_udp) || false, - "interface-name": cfg.interface_name, // need deprecated - "routing-mark": strToInt(cfg.routing_mark) || null, // need deprecated // Health fields url: cfg.url, interval: cfg.url ? durationToSecond(cfg.interval) ?? 600 : null, @@ -755,7 +753,7 @@ uci.foreach(uciconf, ucirule, (cfg) => { /* Routing rules START */ /* Routing rules */ config.rules = [ - "IN-NAME,dns-in,dns-out", + "IN-NAME,dns-in,dns-out", // Not required for v1.19.2+ "DST-PORT,53,dns-out" ]; uci.foreach(uciconf, ucirout, (cfg) => { diff --git a/luci-app-fchomo/root/usr/share/fchomo/generate_server.uc b/luci-app-fchomo/root/usr/share/fchomo/generate_server.uc index ecea392ab..e16b94526 100644 --- a/luci-app-fchomo/root/usr/share/fchomo/generate_server.uc +++ b/luci-app-fchomo/root/usr/share/fchomo/generate_server.uc @@ -71,15 +71,16 @@ uci.foreach(uciconf, uciserver, (cfg) => { "authentication-timeout": durationToSecond(cfg.tuic_authentication_timeout), "max-udp-relay-packet-size": strToInt(cfg.tuic_max_udp_relay_packet_size), - /* HTTP / SOCKS / VMess / Tuic / Hysteria2 */ - users: (cfg.type in ['http', 'socks', 'mixed', 'vmess']) ? [ + /* HTTP / SOCKS / VMess / VLESS / Tuic / Hysteria2 */ + users: (cfg.type in ['http', 'socks', 'mixed', 'vmess', 'vless']) ? [ { /* HTTP / SOCKS */ username: cfg.username, password: cfg.password, - /* VMess */ + /* VMess / VLESS */ uuid: cfg.vmess_uuid, + flow: cfg.vless_flow, alterId: strToInt(cfg.vmess_alterid) } /*{ @@ -95,8 +96,17 @@ uci.foreach(uciconf, uciserver, (cfg) => { /* TLS */ ...(cfg.tls === '1' ? { alpn: cfg.tls_alpn, - certificate: cfg.tls_cert_path, - "private-key": cfg.tls_key_path + ...(cfg.tls_reality === '1' ? { + "reality-config": { + dest: cfg.tls_reality_dest, + "private-key": cfg.tls_reality_private_key, + "short-id": cfg.tls_reality_short_id, + "server-names": cfg.tls_reality_server_names + } + } : { + certificate: cfg.tls_cert_path, + "private-key": cfg.tls_key_path + }) } : {}) }); }); diff --git a/luci-app-fchomo/root/usr/share/rpcd/ucode/luci.fchomo b/luci-app-fchomo/root/usr/share/rpcd/ucode/luci.fchomo index 8efb6c651..4c07bb7d4 100644 --- a/luci-app-fchomo/root/usr/share/rpcd/ucode/luci.fchomo +++ b/luci-app-fchomo/root/usr/share/rpcd/ucode/luci.fchomo @@ -48,6 +48,37 @@ function wGET(url, header, filepath) { const RES_TYPE = ['certs', 'provider', 'ruleset', 'resources', 'templates']; const methods = { + mihomo_generator: { + args: { type: 'type' }, + call: function(req) { + if (!(req.args?.type in ['uuid', 'reality-keypair', 'wg-keypair'])) + return { result: false, error: 'illegal type' }; + + const type = req.args?.type; + let result = {}; + + const fd = popen('/usr/bin/mihomo generate ' + type); + if (fd) { + for (let line = fd.read('line'); length(line); line = fd.read('line')) { + if (type === 'uuid') + result.uuid = trim(line); + else if (type in ['reality-keypair', 'wg-keypair']) { + let priv = match(trim(line), /PrivateKey: (.*)/); + if (priv) + result.private_key = priv[1]; + let pub = match(trim(line), /PublicKey: (.*)/); + if (pub) + result.public_key = pub[1]; + } + } + + fd.close(); + } + + return { result }; + } + }, + get_features: { call: function() { let features = {}; diff --git a/luci-app-oaf/luasrc/controller/appfilter.lua b/luci-app-oaf/luasrc/controller/appfilter.lua index f0ca71ffc..ab4bdeb56 100755 --- a/luci-app-oaf/luasrc/controller/appfilter.lua +++ b/luci-app-oaf/luasrc/controller/appfilter.lua @@ -22,6 +22,7 @@ function index() entry({"admin", "services", "appfilter", "feature"}, cbi("appfilter/feature", {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true}), _("App Feature"), 26).leaf=true entry({"admin", "services", "appfilter", "user"}, cbi("appfilter/user", {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true}), _("用户配置"), 24).leaf=true + entry({"admin", "services", "appfilter", "advance"}, cbi("appfilter/advance", {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true}), _("高级设置"), 27).leaf=true entry({"admin", "network", "user_status"}, call("user_status"), nil).leaf = true entry({"admin", "network", "get_user_list"}, call("get_user_list"), nil).leaf = true entry({"admin", "network", "dev_visit_list"}, call("get_dev_visit_list"), nil).leaf = true @@ -43,6 +44,8 @@ function index() entry({"admin", "network", "upload_file"}, call("handle_file_upload"), nil).leaf = true entry({"admin", "network", "set_nickname"}, call("set_nickname"), nil).leaf = true entry({"admin", "network", "get_oaf_status"}, call("get_oaf_status"), nil).leaf = true + entry({"admin", "network", "get_app_filter_adv"}, call("get_app_filter_adv"), nil).leaf = true + entry({"admin", "network", "set_app_filter_adv"}, call("set_app_filter_adv"), nil).leaf = true end function get_hostname_by_mac(dst_mac) @@ -251,6 +254,24 @@ function set_app_filter_base() luci.http.write_json(resp_obj); end +function get_app_filter_adv() + local json = require "luci.jsonc" + luci.http.prepare_content("application/json") + local resp_obj=utl.ubus("appfilter", "get_app_filter_adv", {}); + luci.http.write_json(resp_obj); +end +function set_app_filter_adv() + local json = require "luci.jsonc" + llog("set appfilter base"); + luci.http.prepare_content("application/json") + local req_obj = {} + req_obj = json.parse(luci.http.formvalue("data")) + local resp_obj=utl.ubus("appfilter", "set_app_filter_adv", req_obj); + luci.http.write_json(resp_obj); +end + + + -- data: {"mode":1,"weekday_list":[1,2,3,4,5,6,0],"start_time":"22:22","end_time":"12:00","allow_time":30,"deny_time":5} function set_app_filter_time() local json = require "luci.jsonc" diff --git a/luci-app-oaf/luasrc/model/cbi/appfilter/advance.lua b/luci-app-oaf/luasrc/model/cbi/appfilter/advance.lua new file mode 100755 index 000000000..966950b82 --- /dev/null +++ b/luci-app-oaf/luasrc/model/cbi/appfilter/advance.lua @@ -0,0 +1,19 @@ +local ds = require "luci.dispatcher" +local nxo = require "nixio" +local nfs = require "nixio.fs" +local ipc = require "luci.ip" +local sys = require "luci.sys" +local utl = require "luci.util" +local dsp = require "luci.dispatcher" +local uci = require "luci.model.uci" +local lng = require "luci.i18n" +local jsc = require "luci.jsonc" + +local m, s +arg[1] = arg[1] or "" +m = Map("appfilter", translate(""), translate("")) + +local v +v = m:section(SimpleSection) +v.template = "admin_network/advance" +return m diff --git a/luci-app-oaf/luasrc/view/admin_network/advance.htm b/luci-app-oaf/luasrc/view/admin_network/advance.htm new file mode 100755 index 000000000..7ba18abb4 --- /dev/null +++ b/luci-app-oaf/luasrc/view/admin_network/advance.htm @@ -0,0 +1,229 @@ + + + + + + +
+
+ +
+ + +
+ +
+ 如果采用lede或者闭源驱动固件,会包含软硬件加速模块,这些模块会影响过滤功能,如果测试发现没有效果可以关闭后再测试,在防火墙或者网络加速菜单中可查看关闭状态,开启加速后需要重启设备生效。 +
+ +
+ + +
+ +
+ LAN接口的名称,用于探测终端信息,系统默认都是桥接口(br-lan),如果将lan口修改成了物理接口,请修改为对应的名称,比如eth0。 +
+ + +
+ +
+
+
diff --git a/luci-app-oaf/luasrc/view/admin_network/time.htm b/luci-app-oaf/luasrc/view/admin_network/time.htm index 8d443e4e8..9925b2f78 100755 --- a/luci-app-oaf/luasrc/view/admin_network/time.htm +++ b/luci-app-oaf/luasrc/view/admin_network/time.htm @@ -228,17 +228,20 @@ function submitHandle() { const time_data = getTimeFormData(); const maxEntries = 64; + const mode = document.getElementById('timeMode').value; - if (!time_data.time_list || time_data.time_list.length === 0) { - const errorContainer = document.getElementById('errorContainer'); - errorContainer.innerHTML = '至少添加一个时间段'; - return; - } + if (mode === "0") { + if (!time_data.time_list || time_data.time_list.length === 0) { + const errorContainer = document.getElementById('errorContainer'); + errorContainer.innerHTML = '至少添加一个时间段'; + return; + } - if (time_data.time_list.length > maxEntries) { - const errorContainer = document.getElementById('errorContainer'); - errorContainer.innerHTML = '时间段不能超过64条'; - return; + if (time_data.time_list.length > maxEntries) { + const errorContainer = document.getElementById('errorContainer'); + errorContainer.innerHTML = '时间段不能超过64条'; + return; + } } console.log('Time Rules:', time_data); diff --git a/luci-app-oaf/root/etc/uci-defaults/94_feature_3.0 b/luci-app-oaf/root/etc/uci-defaults/94_feature_3.0 index d437fd6a7..d87f33774 100755 --- a/luci-app-oaf/root/etc/uci-defaults/94_feature_3.0 +++ b/luci-app-oaf/root/etc/uci-defaults/94_feature_3.0 @@ -3,5 +3,8 @@ uci -q batch <<-EOF >/dev/null set appfilter.feature.format='v3.0' set appfilter.rule='rule' + set appfilter.global.disable_hnat='1' + set appfilter.global.tcp_rst='1' + set appfilter.global.lan_ifname='br-lan' commit appfilter EOF \ No newline at end of file diff --git a/mihomo/Makefile b/mihomo/Makefile index 6027a000e..b223c18e9 100644 --- a/mihomo/Makefile +++ b/mihomo/Makefile @@ -37,6 +37,7 @@ define Package/mihomo TITLE:=Another Mihomo Kernel. URL:=https://wiki.metacubex.one DEPENDS:=$(GO_ARCH_DEPENDS) + PROVIDES:=mihomo USERID:=mihomo=7890:mihomo=7890 endef diff --git a/oaf/src/af_client.c b/oaf/src/af_client.c index c11f54bbe..4c1f2c683 100755 --- a/oaf/src/af_client.c +++ b/oaf/src/af_client.c @@ -299,7 +299,7 @@ void af_visit_info_report(void) } static inline int get_packet_dir(struct net_device *in) { - if (0 == strncmp(in->name, "br-lan", 6)) + if (strstr(in->name, g_lan_ifname)) { return PKT_DIR_UP; } diff --git a/oaf/src/af_conntrack.c b/oaf/src/af_conntrack.c index 27508951e..130c70444 100644 --- a/oaf/src/af_conntrack.c +++ b/oaf/src/af_conntrack.c @@ -117,15 +117,17 @@ void af_conn_update(af_conn_t *conn, u32 app_id, u8 drop) spin_unlock(&af_conn_lock); } +#define MAX_AF_CONN_CHECK_COUNT 5 void af_conn_clean_timeout(void) { int i; af_conn_t *conn; struct hlist_node *n; unsigned long timeout = AF_CONN_TIMEOUT * HZ; - + static int last_bucket = 0; + int count = 0; spin_lock(&af_conn_lock); - for (i = 0; i < AF_CONN_HASH_SIZE; i++) + for (i = last_bucket; i < AF_CONN_HASH_SIZE; i++) { hlist_for_each_entry_safe(conn, n, &af_conn_table[i], node) { @@ -136,6 +138,14 @@ void af_conn_clean_timeout(void) kfree(conn); } } + last_bucket = i; + count++; + if (count > MAX_AF_CONN_CHECK_COUNT) + break; + } + if (last_bucket == AF_CONN_HASH_SIZE - 1) + { + last_bucket = 0; } spin_unlock(&af_conn_lock); } diff --git a/oaf/src/af_log.c b/oaf/src/af_log.c index 01fb0ca55..a7b65c9ca 100755 --- a/oaf/src/af_log.c +++ b/oaf/src/af_log.c @@ -15,6 +15,9 @@ int g_by_pass_accl = 1; int af_work_mode = AF_MODE_GATEWAY; unsigned int af_lan_ip = 0; unsigned int af_lan_mask = 0; +char g_lan_ifname[64] = "br-lan"; +int g_tcp_rst = 1; +char g_oaf_version[64] = AF_VERSION; /* cat /proc/sys/oaf/debug */ @@ -26,6 +29,13 @@ static struct ctl_table oaf_table[] = { .mode = 0666, .proc_handler = proc_dointvec, }, + { + .procname = "version", + .data = g_oaf_version, + .maxlen = 64, + .mode = 0444, + .proc_handler = proc_dostring, + }, { .procname = "test_mode", .data = &af_test_mode, @@ -47,6 +57,20 @@ static struct ctl_table oaf_table[] = { .mode = 0666, .proc_handler = proc_dointvec, }, + { + .procname = "tcp_rst", + .data = &g_tcp_rst, + .maxlen = sizeof(int), + .mode = 0666, + .proc_handler = proc_dointvec, + }, + { + .procname = "lan_ifname", + .data = g_lan_ifname, + .maxlen = 64, + .mode = 0666, + .proc_handler = proc_dostring, + }, { .procname = "record_enable", .data = &g_oaf_record_enable, diff --git a/oaf/src/af_log.h b/oaf/src/af_log.h index d692a4388..286a50fcf 100755 --- a/oaf/src/af_log.h +++ b/oaf/src/af_log.h @@ -9,6 +9,8 @@ extern int g_by_pass_accl; extern unsigned int af_lan_ip; extern unsigned int af_lan_mask; +extern char g_lan_ifname[64]; +extern int g_tcp_rst; #define LOG(level, fmt, ...) do { \ if ((level) <= af_log_lvl) { \ printk(fmt, ##__VA_ARGS__); \ diff --git a/oaf/src/app_filter.c b/oaf/src/app_filter.c index b17082a52..668c62bfc 100755 --- a/oaf/src/app_filter.c +++ b/oaf/src/app_filter.c @@ -17,6 +17,9 @@ #include #include #include +#include +#include +#include #include "app_filter.h" #include "af_utils.h" #include "af_log.h" @@ -28,7 +31,7 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("destan19@126.com"); MODULE_DESCRIPTION("app filter module"); -MODULE_VERSION("5.0"); +MODULE_VERSION(AF_VERSION); struct list_head af_feature_head = LIST_HEAD_INIT(af_feature_head); DEFINE_RWLOCK(af_feature_lock); @@ -45,6 +48,13 @@ DEFINE_RWLOCK(af_feature_lock); #define MAX_HOST_LEN 64 #define MIN_HOST_LEN 4 +#if LINUX_VERSION_CODE > KERNEL_VERSION(5,10,197) +extern void nf_send_reset(struct net *net, struct sock *sk, struct sk_buff *oldskb, int hook); +#elif LINUX_VERSION_CODE > KERNEL_VERSION(4,4,1) +extern void nf_send_reset(struct net *net, struct sk_buff *oldskb, int hook); +#else +extern void nf_send_reset(sk_buff *oldskb, int hook); +#endif int __add_app_feature(char *feature, int appid, char *name, int proto, int src_port, port_info_t dport_info, char *host_url, char *request_url, char *dict, char *search_str, int ignore) @@ -1164,6 +1174,17 @@ u_int32_t app_filter_hook_bypass_handle(struct sk_buff *skb, struct net_device * if (g_oaf_filter_enable){ if (match_app_filter_rule(flow.app_id, client)){ flow.drop = 1; + AF_LMT_INFO("##Drop appid %d\n",flow.app_id); + if (skb->protocol == htons(ETH_P_IP) && g_tcp_rst){ + #if LINUX_VERSION_CODE > KERNEL_VERSION(5,10,197) + nf_send_reset(&init_net, skb->sk, skb, NF_INET_PRE_ROUTING); + #elif LINUX_VERSION_CODE > KERNEL_VERSION(4,4,1) + nf_send_reset(&init_net, skb, NF_INET_PRE_ROUTING); + #else + nf_send_reset(skb, NF_INET_PRE_ROUTING); + #endif + } + } } conn->drop = flow.drop; @@ -1192,8 +1213,6 @@ EXIT: return ret; } - - u_int32_t app_filter_hook_gateway_handle(struct sk_buff *skb, struct net_device *dev) { unsigned long long total_packets = 0; @@ -1208,7 +1227,7 @@ u_int32_t app_filter_hook_gateway_handle(struct sk_buff *skb, struct net_device u_int8_t drop = 0; u_int8_t malloc_data = 0; - if (!strstr(dev->name, "lan")) + if (!strstr(dev->name, g_lan_ifname)) return NF_ACCEPT; memset((char *)&flow, 0x0, sizeof(flow_info_t)); @@ -1285,6 +1304,26 @@ u_int32_t app_filter_hook_gateway_handle(struct sk_buff *skb, struct net_device } } ct->mark = flow.app_id; + if (g_oaf_filter_enable){ + if (match_app_filter_rule(flow.app_id, client)) + { + ct->mark |= NF_DROP_BIT; + flow.drop = 1; + AF_LMT_INFO("##Drop app %s flow, appid is %d\n", flow.app_name, flow.app_id); + if (skb->protocol == htons(ETH_P_IP) && g_tcp_rst){ + #if LINUX_VERSION_CODE > KERNEL_VERSION(5,10,197) + nf_send_reset(&init_net, skb->sk, skb, NF_INET_PRE_ROUTING); + #elif LINUX_VERSION_CODE > KERNEL_VERSION(4,4,1) + nf_send_reset(&init_net, skb, NF_INET_PRE_ROUTING); + #else + nf_send_reset(skb, NF_INET_PRE_ROUTING); + #endif + } + ret = NF_DROP; + } + } + + if (g_oaf_record_enable){ AF_CLIENT_LOCK_W(); af_update_client_app_info(client, flow.app_id, flow.drop); @@ -1292,15 +1331,7 @@ u_int32_t app_filter_hook_gateway_handle(struct sk_buff *skb, struct net_device AF_LMT_INFO("match %s %pI4(%d)--> %pI4(%d) len = %d, %d\n ", IPPROTO_TCP == flow.l4_protocol ? "tcp" : "udp", &flow.src, flow.sport, &flow.dst, flow.dport, skb->len, flow.app_id); } - - if (g_oaf_filter_enable){ - if (match_app_filter_rule(flow.app_id, client)) - { - ct->mark |= NF_DROP_BIT; - AF_LMT_INFO("##Drop app %s flow, appid is %d\n", flow.app_name, flow.app_id); - ret = NF_DROP; - } - } + EXIT: if (malloc_data) { diff --git a/open-app-filter/Makefile b/open-app-filter/Makefile index 0c1aca30a..3d154afdb 100755 --- a/open-app-filter/Makefile +++ b/open-app-filter/Makefile @@ -49,6 +49,7 @@ define Package/appfilter/install $(INSTALL_BIN) ./files/appfilter.config $(1)/etc/config/appfilter $(INSTALL_BIN) ./files/user_info.config $(1)/etc/config/user_info $(INSTALL_BIN) $(PKG_BUILD_DIR)/oafd $(1)/usr/bin + $(INSTALL_BIN) ./files/hnat.sh $(1)/usr/bin endef diff --git a/open-app-filter/files/appfilter.config b/open-app-filter/files/appfilter.config index e431f8220..df3b3051f 100755 --- a/open-app-filter/files/appfilter.config +++ b/open-app-filter/files/appfilter.config @@ -2,6 +2,9 @@ config global global option enable '0' option work_mode '0' option record_enable '1' + option disable_hnat '1' + option tcp_rst '1' + option lan_ifname 'br-lan' config appfilter appfilter diff --git a/open-app-filter/files/hnat.sh b/open-app-filter/files/hnat.sh new file mode 100644 index 000000000..286c8165d --- /dev/null +++ b/open-app-filter/files/hnat.sh @@ -0,0 +1,33 @@ +. /usr/share/libubox/jshn.sh +. /lib/functions.sh + +disable_hnat=`uci get appfilter.global.disable_hnat` + +if [ x"1" != x"$disable_hnat" ];then + return +fi + +# mt798x +test -d /sys/kernel/debug/hnat && { + echo 0 >/sys/kernel/debug/hnat/hook_toggle +} +# qca ecm +test -d /sys/kernel/debug/ecm/ && { + echo "1000000" > /sys/kernel/debug/ecm/ecm_classifier_default/accel_delay_pkts +} + +# turbo acc +test -f /etc/config/turboacc && { + uci -q set "turboacc.config.fastpath_fo_hw"="0" + uci -q set "turboacc.config.fastpath_fc_ipv6"="0" + uci -q set "turboacc.config.fastpath"="none" + uci -q set "turboacc.config.fullcone"="0" + /etc/init.d/turboacc restart & +} + +uci -q set "firewall.@defaults[0].flow_offloading_hw"='0' +uci -q set "firewall.@defaults[0].flow_offloading"='0' +uci -q set "firewall.@defaults[0].fullcone"='0' + +fw3 reload & + diff --git a/open-app-filter/files/oaf_rule b/open-app-filter/files/oaf_rule index 14f0f6797..1e39b6ae5 100755 --- a/open-app-filter/files/oaf_rule +++ b/open-app-filter/files/oaf_rule @@ -73,11 +73,16 @@ reload_rule(){ load_mac_list } -reload_base_config(){ - config_load appfilter +reload_base_config(){ + config_load appfilter config_get work_mode "global" "work_mode" + config_get lan_ifname "global" "lan_ifname" echo "$work_mode" >/proc/sys/oaf/work_mode -} + + if [ x"" != x"$lan_ifname" ];then + echo "$lan_ifname" >/proc/sys/oaf/lan_ifname + fi +} case $1 in "reload") diff --git a/open-app-filter/src/appfilter.h b/open-app-filter/src/appfilter.h index 45f679c76..109316aa8 100755 --- a/open-app-filter/src/appfilter.h +++ b/open-app-filter/src/appfilter.h @@ -72,6 +72,9 @@ typedef struct af_global_config_t{ int user_mode; int work_mode; int record_enable; + int disable_hnat; + int tcp_rst; + char lan_ifname[16]; }af_global_config_t; typedef struct time_config{ diff --git a/open-app-filter/src/appfilter_ubus.c b/open-app-filter/src/appfilter_ubus.c index f00cab470..9dba0c339 100755 --- a/open-app-filter/src/appfilter_ubus.c +++ b/open-app-filter/src/appfilter_ubus.c @@ -820,6 +820,81 @@ static int handle_set_app_filter_base(struct ubus_context *ctx, struct ubus_obje } +static int handle_get_app_filter_adv(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) { + struct json_object *response = json_object_new_object(); + struct json_object *data_obj = json_object_new_object(); + int i; + struct uci_context *uci_ctx = uci_alloc_context(); + if (!uci_ctx) { + printf("Failed to allocate UCI context\n"); + return 0; + } + char lan_ifname[16]; + + int tcp_rst = af_uci_get_int_value(uci_ctx, "appfilter.global.tcp_rst"); + af_uci_get_value(uci_ctx, "appfilter.global.lan_ifname", lan_ifname, sizeof(lan_ifname)); + int disable_hnat = af_uci_get_int_value(uci_ctx, "appfilter.global.disable_hnat"); + + json_object_object_add(data_obj, "tcp_rst", json_object_new_int(tcp_rst)); + json_object_object_add(data_obj, "lan_ifname", json_object_new_string(lan_ifname)); + json_object_object_add(data_obj, "disable_hnat", json_object_new_int(disable_hnat)); + + json_object_object_add(response, "data", data_obj); + uci_free_context(uci_ctx); + struct blob_buf b = {}; + blob_buf_init(&b, 0); + blobmsg_add_object(&b, response); + ubus_send_reply(ctx, req, b.head); + blob_buf_free(&b); + json_object_put(response); + return 0; +} +static int handle_set_app_filter_adv(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) { + struct json_object *response = json_object_new_object(); + int i; + char *msg_obj_str = blobmsg_format_json(msg, true); + if (!msg_obj_str) { + printf("format json failed\n"); + return 0; + } + printf("msg_obj_str: %s\n", msg_obj_str); + struct json_object *req_obj = json_tokener_parse(msg_obj_str); + struct json_object *tcp_rst_obj = json_object_object_get(req_obj, "tcp_rst"); + struct json_object *lan_ifname_obj = json_object_object_get(req_obj, "lan_ifname"); + struct json_object *disable_hnat_obj = json_object_object_get(req_obj, "disable_hnat"); + + struct uci_context *uci_ctx = uci_alloc_context(); + if (!uci_ctx) { + printf("Failed to allocate UCI context\n"); + return 0; + } + + if (tcp_rst_obj) + af_uci_set_int_value(uci_ctx, "appfilter.global.tcp_rst", json_object_get_int(tcp_rst_obj)); + if (lan_ifname_obj) + af_uci_set_value(uci_ctx, "appfilter.global.lan_ifname", json_object_get_string(lan_ifname_obj)); + if (disable_hnat_obj) + af_uci_set_int_value(uci_ctx, "appfilter.global.disable_hnat", json_object_get_int(disable_hnat_obj)); + + af_uci_commit(uci_ctx, "appfilter"); + g_oaf_config_change = 1; + reload_oaf_rule(); + system("/usr/bin/hnat.sh &"); + uci_free_context(uci_ctx); + struct blob_buf b = {}; + blob_buf_init(&b, 0); + blobmsg_add_object(&b, response); + ubus_send_reply(ctx, req, b.head); + blob_buf_free(&b); + json_object_put(response); + return 0; +} + + static int handle_get_app_filter_time(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) { @@ -1463,9 +1538,10 @@ static struct ubus_method appfilter_object_methods[] = { UBUS_METHOD("class_list", handle_get_class_list, empty_policy), UBUS_METHOD("set_app_filter", handle_set_app_filter, empty_policy), UBUS_METHOD("get_app_filter", handle_get_app_filter, empty_policy), - UBUS_METHOD("set_app_filter_base", handle_set_app_filter_base, empty_policy), UBUS_METHOD("get_app_filter_base", handle_get_app_filter_base, empty_policy), + UBUS_METHOD("set_app_filter_adv", handle_set_app_filter_adv, empty_policy), + UBUS_METHOD("get_app_filter_adv", handle_get_app_filter_adv, empty_policy), UBUS_METHOD("set_app_filter_time", handle_set_app_filter_time, empty_policy), UBUS_METHOD("get_app_filter_time", handle_get_app_filter_time, empty_policy), UBUS_METHOD("get_all_users", handle_get_all_users, empty_policy), diff --git a/open-app-filter/src/main.c b/open-app-filter/src/main.c index 5d5aa4f46..0c9dbb426 100755 --- a/open-app-filter/src/main.c +++ b/open-app-filter/src/main.c @@ -38,6 +38,7 @@ int current_log_level = LOG_LEVEL_INFO; af_run_time_status_t g_af_status; int g_oaf_config_change = 1; af_config_t g_af_config; +int g_hnat_init = 0; void af_init_time_status(void){ g_af_status.filter = 0; @@ -117,6 +118,7 @@ EXIT: void af_load_global_config(af_global_config_t *config){ int ret = 0; + char lan_ifname[32] = {0}; struct uci_context *ctx = uci_alloc_context(); if (!ctx) return; @@ -143,6 +145,24 @@ void af_load_global_config(af_global_config_t *config){ config->work_mode = 0; else config->work_mode = ret; + ret = af_uci_get_int_value(ctx, "appfilter.global.tcp_rst"); + if (ret < 0) + config->tcp_rst = 1; + else + config->tcp_rst = ret; + + ret = af_uci_get_int_value(ctx, "appfilter.global.disable_hnat"); + if (ret < 0) + config->disable_hnat = 1; + else + config->disable_hnat = ret; + + ret = af_uci_get_value(ctx, "appfilter.global.disable_hnat", lan_ifname, sizeof(lan_ifname)); + if (ret < 0) + strncpy(config->lan_ifname, "br-lan", sizeof(config->lan_ifname) - 1); + else + strncpy(config->lan_ifname, lan_ifname, sizeof(config->lan_ifname) - 1); + uci_free_context(ctx); LOG_INFO("enable=%d, user_mode=%d, work_mode=%d", config->enable, config->user_mode, config->work_mode); } @@ -290,6 +310,13 @@ void update_oaf_record_status(void){ } } +void af_hnat_init(void){ + if (g_hnat_init == 0){ + system("/usr/bin/hnat.sh"); + g_hnat_init = 1; + } +} + void dev_list_timeout_handler(struct uloop_timeout *t) { @@ -315,6 +342,9 @@ void dev_list_timeout_handler(struct uloop_timeout *t) update_oaf_record_status(); g_oaf_config_change = 0; } + if (count > 60){ // delay init + af_hnat_init(); + } uloop_timeout_set(t, 1000); }