From be5cee9ad28001c1c860a63931fb71efb31fa6b0 Mon Sep 17 00:00:00 2001 From: kenzok8 Date: Sun, 1 Dec 2024 20:38:03 +0800 Subject: [PATCH] update 2024-12-01 20:38:03 --- .../htdocs/luci-static/resources/fchomo.js | 11 + .../luci-static/resources/view/fchomo/node.js | 130 +++++++- luci-app-fchomo/po/templates/fchomo.pot | 300 ++++++++++-------- luci-app-fchomo/po/zh_Hans/fchomo.po | 300 ++++++++++-------- .../etc/fchomo/scripts/generate_client.uc | 29 +- 5 files changed, 498 insertions(+), 272 deletions(-) diff --git a/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js b/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js index dc348871a..609a244d2 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js @@ -219,6 +219,17 @@ return baseclass.extend({ ['random'] ], + // thanks to homeproxy + CBIStaticList: form.DynamicList.extend({ + __name__: 'CBI.StaticList', + + renderWidget: function(/* ... */) { + var dl = form.DynamicList.prototype.renderWidget.apply(this, arguments); + dl.querySelector('.add-item ul > li[data-value="-"]').remove(); + return dl; + } + }), + // thanks to homeproxy calcStringMD5: function(e) { /* Thanks to https://stackoverflow.com/a/41602636 */ 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 f8cde9780..4d3dc24e6 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 @@ -745,10 +745,11 @@ return view.extend({ so.default = so.disabled; so.modalonly = true; - // dev: Features under development + /* Features are implemented in proxy chain so = ss.taboption('field_dial', form.Value, 'dialer_proxy', _('dialer-proxy')); so.readonly = true; so.modalonly = true; + */ so = ss.taboption('field_dial', widgets.DeviceSelect, 'interface_name', _('Bind interface'), _('Bind outbound interface.
') + @@ -949,10 +950,11 @@ return view.extend({ so.default = so.disabled; so.modalonly = true; - // dev: Features under development + /* Features are implemented in proxy chain so = ss.taboption('field_override', form.Value, 'override_dialer_proxy', _('dialer-proxy')); so.readonly = true; so.modalonly = true; + */ so = ss.taboption('field_override', widgets.DeviceSelect, 'override_interface_name', _('Bind interface'), _('Bind outbound interface.
') + @@ -1034,6 +1036,130 @@ return view.extend({ so.modalonly = false; /* Provider END */ + /* Proxy chain START */ + s.tab('dialer_proxy', _('Proxy chain')); + + /* Proxy chain */ + o = s.taboption('dialer_proxy', form.SectionValue, '_dialer_proxy', form.GridSection, 'dialer_proxy', null); + ss = o.subsection; + var prefmt = { 'prefix': 'chain_', 'suffix': '' }; + ss.addremove = true; + ss.rowcolors = true; + ss.sortable = true; + ss.nodescriptions = true; + ss.modaltitle = L.bind(hm.loadModalTitle, ss, _('Proxy chain'), _('Add a proxy chain')); + ss.sectiontitle = L.bind(hm.loadDefaultLabel, ss); + ss.renderSectionAdd = L.bind(hm.renderSectionAdd, ss, prefmt, true); + ss.handleAdd = L.bind(hm.handleAdd, ss, prefmt); + + so = ss.option(form.Value, 'label', _('Label')); + so.load = L.bind(hm.loadDefaultLabel, so); + so.validate = L.bind(hm.validateUniqueValue, so); + so.modalonly = true; + + so = ss.option(form.Flag, 'enabled', _('Enable')); + so.default = so.enabled; + so.editable = true; + + so = ss.option(form.ListValue, 'type', _('Type')); + so.value('node', _('Proxy Node')); + so.value('provider', _('Provider')); + so.default = 'node'; + so.textvalue = L.bind(hm.textvalue2Value, so); + + so = ss.option(form.DummyValue, '_value', _('Value')); + so.load = function(section_id) { + var type = uci.get(data[0], section_id, 'type'); + var detour = uci.get(data[0], section_id, 'chain_tail_group') || uci.get(data[0], section_id, 'chain_tail'); + + switch (type) { + case 'node': + return '%s » %s'.format( + uci.get(data[0], section_id, 'chain_head'), + detour + ); + case 'provider': + return '%s » %s'.format( + uci.get(data[0], section_id, 'chain_head_sub'), + detour + ); + default: + return null; + } + } + so.modalonly = false; + + so = ss.option(form.ListValue, 'chain_head_sub', _('Chain head')); + so.load = L.bind(hm.loadProviderLabel, so); + so.rmempty = false; + so.depends('type', 'provider'); + so.modalonly = true; + + so = ss.option(form.ListValue, 'chain_head', _('Chain head'), + _('Recommended to use UoT node.
such as %s.') + .format('ss|ssr|vmess|vless|trojan|tuic')); + so.load = L.bind(hm.loadNodeLabel, so); + so.rmempty = false; + so.validate = function(section_id, value) { + var chain_tail = this.section.getUIElement(section_id, 'chain_tail').getValue(); + + if (value === chain_tail) + return _('Expecting: %s').format(_('Different chain head/tail')); + + return true; + } + so.depends('type', 'node'); + so.modalonly = true; + + /* + so = ss.option(hm.CBIStaticList, 'chain_body', _('Chain body')); + so.value('', _('-- Please choose --')); + so.load = L.bind(hm.loadNodeLabel, so); + so.validate = function(section_id, value) { + var chain_head = this.section.getUIElement(section_id, 'chain_head').getValue(); + var chain_tail = this.section.getUIElement(section_id, 'chain_tail').getValue(); + var value = this.getUIElement(section_id).getValue(); + + if (value.includes(chain_head) || value.includes(chain_tail)) + return _('Expecting: %s').format(_('Different with chain head/tail')); + + return true; + } + so.textvalue = function(section_id) { + var cvals = this.cfgvalue(section_id); + //alert(Array.prototype.join.call(cvals, ':')); + return cvals ? '» ' + cvals.map((cval) => { + var i = this.keylist.indexOf(cval); + + return this.vallist[i]; + }).join(' » ') + ' »' : '»'; + } + */ + + so = ss.option(form.ListValue, 'chain_tail_group', _('Chain tail')); + so.value('', _('-- Please choose --')); + so.load = L.bind(hm.loadProxyGroupLabel, so, [['', _('-- Please choose --')]]); + so.rmempty = false; + so.depends({chain_tail: /.+/, '!reverse': true}); + so.modalonly = true; + + so = ss.option(form.ListValue, 'chain_tail', _('Chain tail'), + _('Recommended to use UoT node.
such as %s.') + .format('ss|ssr|vmess|vless|trojan|tuic')); + so.load = L.bind(hm.loadNodeLabel, so); + so.rmempty = false; + so.validate = function(section_id, value) { + var chain_head = this.section.getUIElement(section_id, 'chain_head').getValue(); + + if (value === chain_head) + return _('Expecting: %s').format(_('Different chain head/tail')); + + return true; + } + so.depends({chain_tail_group: /.+/, '!reverse': true}); + so.modalonly = true; + /* Proxy chain END */ + return m.render(); } }); diff --git a/luci-app-fchomo/po/templates/fchomo.pot b/luci-app-fchomo/po/templates/fchomo.pot index 68867c9fa..23508e514 100644 --- a/luci-app-fchomo/po/templates/fchomo.pot +++ b/luci-app-fchomo/po/templates/fchomo.pot @@ -5,19 +5,21 @@ msgstr "Content-Type: text/plain; charset=UTF-8" msgid "%s log" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:419 -#: htdocs/luci-static/resources/fchomo.js:432 -#: htdocs/luci-static/resources/fchomo.js:445 -#: htdocs/luci-static/resources/fchomo.js:459 +#: htdocs/luci-static/resources/fchomo.js:430 +#: htdocs/luci-static/resources/fchomo.js:443 +#: htdocs/luci-static/resources/fchomo.js:456 +#: htdocs/luci-static/resources/fchomo.js:470 #: htdocs/luci-static/resources/view/fchomo/client.js:282 #: htdocs/luci-static/resources/view/fchomo/client.js:496 #: htdocs/luci-static/resources/view/fchomo/client.js:510 #: htdocs/luci-static/resources/view/fchomo/client.js:979 #: htdocs/luci-static/resources/view/fchomo/global.js:470 +#: htdocs/luci-static/resources/view/fchomo/node.js:1140 +#: htdocs/luci-static/resources/view/fchomo/node.js:1141 msgid "-- Please choose --" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:743 +#: htdocs/luci-static/resources/fchomo.js:754 msgid "/^(\\d+)(s|m|h|d)?$/" msgstr "" @@ -91,10 +93,14 @@ msgstr "" msgid "Add a Node" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:784 +#: htdocs/luci-static/resources/view/fchomo/node.js:785 msgid "Add a provider" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1050 +msgid "Add a proxy chain" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/client.js:458 msgid "Add a proxy group" msgstr "" @@ -115,11 +121,11 @@ msgstr "" msgid "Add a sub rule" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:896 +#: htdocs/luci-static/resources/view/fchomo/node.js:897 msgid "Add prefix" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:899 +#: htdocs/luci-static/resources/view/fchomo/node.js:900 msgid "Add suffix" msgstr "" @@ -212,14 +218,14 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:543 #: htdocs/luci-static/resources/view/fchomo/global.js:591 -#: htdocs/luci-static/resources/view/fchomo/node.js:753 -#: htdocs/luci-static/resources/view/fchomo/node.js:957 +#: htdocs/luci-static/resources/view/fchomo/node.js:754 +#: htdocs/luci-static/resources/view/fchomo/node.js:959 msgid "Bind interface" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:544 -#: htdocs/luci-static/resources/view/fchomo/node.js:754 -#: htdocs/luci-static/resources/view/fchomo/node.js:958 +#: htdocs/luci-static/resources/view/fchomo/node.js:755 +#: htdocs/luci-static/resources/view/fchomo/node.js:960 msgid "Bind outbound interface.
" msgstr "" @@ -277,6 +283,16 @@ msgstr "" msgid "Certificate path" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1092 +#: htdocs/luci-static/resources/view/fchomo/node.js:1098 +msgid "Chain head" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1139 +#: htdocs/luci-static/resources/view/fchomo/node.js:1146 +msgid "Chain tail" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/global.js:194 msgid "Check" msgstr "" @@ -333,11 +349,11 @@ msgstr "" msgid "Common ports only (bypass P2P traffic)" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:628 +#: htdocs/luci-static/resources/fchomo.js:639 msgid "Complete" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:913 +#: htdocs/luci-static/resources/view/fchomo/node.js:914 msgid "Configuration Items" msgstr "" @@ -350,12 +366,12 @@ msgstr "" msgid "Connection check" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:845 +#: htdocs/luci-static/resources/view/fchomo/node.js:846 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:243 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:837 +#: htdocs/luci-static/resources/view/fchomo/node.js:838 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:235 msgid "Contents" msgstr "" @@ -376,7 +392,7 @@ msgstr "" msgid "Custom Direct List" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:880 +#: htdocs/luci-static/resources/view/fchomo/node.js:881 msgid "Custom HTTP header." msgstr "" @@ -441,6 +457,11 @@ msgstr "" msgid "Dial fields" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1107 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 +msgid "Different chain head/tail" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/global.js:297 msgid "Direct" msgstr "" @@ -492,7 +513,7 @@ msgid "Donot send server name in ClientHello." msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:529 -#: htdocs/luci-static/resources/view/fchomo/node.js:946 +#: htdocs/luci-static/resources/view/fchomo/node.js:947 msgid "Donot verifying server certificate." msgstr "" @@ -504,11 +525,11 @@ msgstr "" msgid "Download bandwidth in Mbps." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:534 +#: htdocs/luci-static/resources/fchomo.js:545 msgid "Download failed: %s" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:532 +#: htdocs/luci-static/resources/fchomo.js:543 msgid "Download successful." msgstr "" @@ -544,7 +565,7 @@ msgstr "" msgid "Edit ruleset" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:835 +#: htdocs/luci-static/resources/view/fchomo/node.js:836 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:233 msgid "Editer" msgstr "" @@ -558,8 +579,9 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:303 #: htdocs/luci-static/resources/view/fchomo/global.js:540 #: htdocs/luci-static/resources/view/fchomo/node.js:51 -#: htdocs/luci-static/resources/view/fchomo/node.js:811 -#: htdocs/luci-static/resources/view/fchomo/node.js:977 +#: htdocs/luci-static/resources/view/fchomo/node.js:812 +#: htdocs/luci-static/resources/view/fchomo/node.js:979 +#: htdocs/luci-static/resources/view/fchomo/node.js:1060 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:181 #: htdocs/luci-static/resources/view/fchomo/server.js:84 #: htdocs/luci-static/resources/view/fchomo/server.js:108 @@ -604,7 +626,7 @@ msgid "Enable statistic" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:443 -#: htdocs/luci-static/resources/view/fchomo/node.js:931 +#: htdocs/luci-static/resources/view/fchomo/node.js:932 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "" @@ -635,7 +657,7 @@ msgid "" "if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1027 +#: htdocs/luci-static/resources/view/fchomo/node.js:1029 msgid "Exclude matched node types." msgstr "" @@ -646,42 +668,44 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:627 -#: htdocs/luci-static/resources/view/fchomo/node.js:1021 +#: htdocs/luci-static/resources/view/fchomo/node.js:1023 msgid "Exclude nodes that meet keywords or regexps." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:587 -#: htdocs/luci-static/resources/view/fchomo/node.js:1008 +#: htdocs/luci-static/resources/view/fchomo/node.js:1010 msgid "Expected HTTP code. 204 will be used if empty." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:589 -#: htdocs/luci-static/resources/view/fchomo/node.js:1010 +#: htdocs/luci-static/resources/view/fchomo/node.js:1012 msgid "Expected status" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:558 -#: htdocs/luci-static/resources/fchomo.js:561 -#: htdocs/luci-static/resources/fchomo.js:564 -#: htdocs/luci-static/resources/fchomo.js:645 -#: htdocs/luci-static/resources/fchomo.js:653 -#: htdocs/luci-static/resources/fchomo.js:661 -#: htdocs/luci-static/resources/fchomo.js:685 -#: htdocs/luci-static/resources/fchomo.js:702 -#: htdocs/luci-static/resources/fchomo.js:705 -#: htdocs/luci-static/resources/fchomo.js:715 -#: htdocs/luci-static/resources/fchomo.js:728 -#: htdocs/luci-static/resources/fchomo.js:730 -#: htdocs/luci-static/resources/fchomo.js:743 -#: htdocs/luci-static/resources/fchomo.js:750 -#: htdocs/luci-static/resources/fchomo.js:759 -#: htdocs/luci-static/resources/fchomo.js:771 -#: htdocs/luci-static/resources/fchomo.js:774 -#: htdocs/luci-static/resources/fchomo.js:784 +#: htdocs/luci-static/resources/fchomo.js:569 +#: htdocs/luci-static/resources/fchomo.js:572 +#: htdocs/luci-static/resources/fchomo.js:575 +#: htdocs/luci-static/resources/fchomo.js:656 +#: htdocs/luci-static/resources/fchomo.js:664 +#: htdocs/luci-static/resources/fchomo.js:672 +#: htdocs/luci-static/resources/fchomo.js:696 +#: htdocs/luci-static/resources/fchomo.js:713 +#: htdocs/luci-static/resources/fchomo.js:716 +#: htdocs/luci-static/resources/fchomo.js:726 +#: htdocs/luci-static/resources/fchomo.js:739 +#: htdocs/luci-static/resources/fchomo.js:741 +#: htdocs/luci-static/resources/fchomo.js:754 +#: htdocs/luci-static/resources/fchomo.js:761 +#: htdocs/luci-static/resources/fchomo.js:770 +#: htdocs/luci-static/resources/fchomo.js:782 +#: htdocs/luci-static/resources/fchomo.js:785 +#: htdocs/luci-static/resources/fchomo.js:795 #: htdocs/luci-static/resources/view/fchomo/client.js:27 #: htdocs/luci-static/resources/view/fchomo/client.js:472 #: htdocs/luci-static/resources/view/fchomo/client.js:831 #: htdocs/luci-static/resources/view/fchomo/node.js:521 +#: htdocs/luci-static/resources/view/fchomo/node.js:1107 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:199 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:213 msgid "Expecting: %s" @@ -704,15 +728,15 @@ msgstr "" msgid "Factor" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:586 +#: htdocs/luci-static/resources/fchomo.js:597 msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:884 +#: htdocs/luci-static/resources/fchomo.js:895 msgid "Failed to upload %s, error: %s." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:903 +#: htdocs/luci-static/resources/fchomo.js:914 msgid "Failed to upload, error: %s." msgstr "" @@ -731,7 +755,7 @@ msgid "Fallback filter" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:622 -#: htdocs/luci-static/resources/view/fchomo/node.js:1016 +#: htdocs/luci-static/resources/view/fchomo/node.js:1018 msgid "Filter nodes that meet keywords or regexps." msgstr "" @@ -761,8 +785,8 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:588 -#: htdocs/luci-static/resources/view/fchomo/node.js:904 -#: htdocs/luci-static/resources/view/fchomo/node.js:1009 +#: htdocs/luci-static/resources/view/fchomo/node.js:905 +#: htdocs/luci-static/resources/view/fchomo/node.js:1011 msgid "" "For format see %s." @@ -800,7 +824,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:463 #: htdocs/luci-static/resources/view/fchomo/node.js:40 -#: htdocs/luci-static/resources/view/fchomo/node.js:801 +#: htdocs/luci-static/resources/view/fchomo/node.js:802 msgid "General fields" msgstr "" @@ -890,7 +914,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:84 #: htdocs/luci-static/resources/view/fchomo/node.js:628 -#: htdocs/luci-static/resources/view/fchomo/node.js:879 +#: htdocs/luci-static/resources/view/fchomo/node.js:880 msgid "HTTP header" msgstr "" @@ -918,27 +942,27 @@ msgid "Handle domain" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:557 -#: htdocs/luci-static/resources/view/fchomo/node.js:981 +#: htdocs/luci-static/resources/view/fchomo/node.js:983 msgid "Health check URL" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:586 -#: htdocs/luci-static/resources/view/fchomo/node.js:1007 +#: htdocs/luci-static/resources/view/fchomo/node.js:1009 msgid "Health check expected status" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:566 -#: htdocs/luci-static/resources/view/fchomo/node.js:990 +#: htdocs/luci-static/resources/view/fchomo/node.js:992 msgid "Health check interval" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:573 -#: htdocs/luci-static/resources/view/fchomo/node.js:996 +#: htdocs/luci-static/resources/view/fchomo/node.js:998 msgid "Health check timeout" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:465 -#: htdocs/luci-static/resources/view/fchomo/node.js:803 +#: htdocs/luci-static/resources/view/fchomo/node.js:804 msgid "Health fields" msgstr "" @@ -981,8 +1005,8 @@ msgstr "" msgid "IP override" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:765 -#: htdocs/luci-static/resources/view/fchomo/node.js:969 +#: htdocs/luci-static/resources/view/fchomo/node.js:766 +#: htdocs/luci-static/resources/view/fchomo/node.js:971 msgid "IP version" msgstr "" @@ -1023,8 +1047,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:104 #: htdocs/luci-static/resources/view/fchomo/node.js:110 -#: htdocs/luci-static/resources/view/fchomo/node.js:936 -#: htdocs/luci-static/resources/view/fchomo/node.js:941 +#: htdocs/luci-static/resources/view/fchomo/node.js:937 +#: htdocs/luci-static/resources/view/fchomo/node.js:942 #: htdocs/luci-static/resources/view/fchomo/server.js:159 #: htdocs/luci-static/resources/view/fchomo/server.js:165 msgid "In Mbps." @@ -1037,7 +1061,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:574 #: htdocs/luci-static/resources/view/fchomo/client.js:603 -#: htdocs/luci-static/resources/view/fchomo/node.js:997 +#: htdocs/luci-static/resources/view/fchomo/node.js:999 msgid "In millisecond. %s will be used if empty." msgstr "" @@ -1050,8 +1074,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:329 #: htdocs/luci-static/resources/view/fchomo/global.js:334 #: htdocs/luci-static/resources/view/fchomo/global.js:426 -#: htdocs/luci-static/resources/view/fchomo/node.js:863 -#: htdocs/luci-static/resources/view/fchomo/node.js:991 +#: htdocs/luci-static/resources/view/fchomo/node.js:864 +#: htdocs/luci-static/resources/view/fchomo/node.js:993 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:261 msgid "In seconds. %s will be used if empty." msgstr "" @@ -1106,14 +1130,15 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:811 #: htdocs/luci-static/resources/view/fchomo/client.js:952 #: htdocs/luci-static/resources/view/fchomo/node.js:46 -#: htdocs/luci-static/resources/view/fchomo/node.js:806 +#: htdocs/luci-static/resources/view/fchomo/node.js:807 +#: htdocs/luci-static/resources/view/fchomo/node.js:1055 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:176 #: htdocs/luci-static/resources/view/fchomo/server.js:103 msgid "Label" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:580 -#: htdocs/luci-static/resources/view/fchomo/node.js:1002 +#: htdocs/luci-static/resources/view/fchomo/node.js:1004 msgid "Lazy" msgstr "" @@ -1153,7 +1178,7 @@ msgstr "" msgid "Load balance" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:816 +#: htdocs/luci-static/resources/view/fchomo/node.js:817 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:186 msgid "Local" msgstr "" @@ -1182,7 +1207,7 @@ msgstr "" msgid "Log level" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:558 +#: htdocs/luci-static/resources/fchomo.js:569 msgid "Lowercase only" msgstr "" @@ -1302,7 +1327,7 @@ msgstr "" msgid "Multiplex fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:869 +#: htdocs/luci-static/resources/view/fchomo/node.js:870 msgid "Name of the Proxy group to download provider." msgstr "" @@ -1323,7 +1348,7 @@ msgid "No add'l params" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:581 -#: htdocs/luci-static/resources/view/fchomo/node.js:1003 +#: htdocs/luci-static/resources/view/fchomo/node.js:1005 msgid "No testing is performed when this provider node is not in use." msgstr "" @@ -1338,17 +1363,17 @@ msgid "Node" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:626 -#: htdocs/luci-static/resources/view/fchomo/node.js:1020 +#: htdocs/luci-static/resources/view/fchomo/node.js:1022 msgid "Node exclude filter" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:631 -#: htdocs/luci-static/resources/view/fchomo/node.js:1026 +#: htdocs/luci-static/resources/view/fchomo/node.js:1028 msgid "Node exclude type" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:621 -#: htdocs/luci-static/resources/view/fchomo/node.js:1015 +#: htdocs/luci-static/resources/view/fchomo/node.js:1017 msgid "Node filter" msgstr "" @@ -1364,7 +1389,7 @@ msgstr "" msgid "Not Installed" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:492 +#: htdocs/luci-static/resources/fchomo.js:503 msgid "Not Running" msgstr "" @@ -1386,7 +1411,7 @@ msgstr "" msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:486 +#: htdocs/luci-static/resources/fchomo.js:497 msgid "Open Dashboard" msgstr "" @@ -1404,7 +1429,7 @@ msgid "Override destination" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:464 -#: htdocs/luci-static/resources/view/fchomo/node.js:802 +#: htdocs/luci-static/resources/view/fchomo/node.js:803 msgid "Override fields" msgstr "" @@ -1464,7 +1489,7 @@ msgid "" "standards." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:836 +#: htdocs/luci-static/resources/view/fchomo/node.js:837 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:234 msgid "" "Please type %s Proxy Group > Global." msgstr "" @@ -1556,12 +1581,13 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:509 -#: htdocs/luci-static/resources/view/fchomo/node.js:774 -#: htdocs/luci-static/resources/view/fchomo/node.js:784 +#: htdocs/luci-static/resources/view/fchomo/node.js:775 +#: htdocs/luci-static/resources/view/fchomo/node.js:785 +#: htdocs/luci-static/resources/view/fchomo/node.js:1066 msgid "Provider" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:856 +#: htdocs/luci-static/resources/view/fchomo/node.js:857 msgid "Provider URL" msgstr "" @@ -1583,13 +1609,19 @@ msgid "Proxy MAC-s" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:25 +#: htdocs/luci-static/resources/view/fchomo/node.js:1065 msgid "Proxy Node" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1040 +#: htdocs/luci-static/resources/view/fchomo/node.js:1050 +msgid "Proxy chain" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/client.js:354 #: htdocs/luci-static/resources/view/fchomo/client.js:868 #: htdocs/luci-static/resources/view/fchomo/client.js:1000 -#: htdocs/luci-static/resources/view/fchomo/node.js:868 +#: htdocs/luci-static/resources/view/fchomo/node.js:869 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:266 msgid "Proxy group" msgstr "" @@ -1632,6 +1664,11 @@ msgstr "" msgid "Random will be used if empty." msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1099 +#: htdocs/luci-static/resources/view/fchomo/node.js:1147 +msgid "Recommended to use UoT node.
such as %s." +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/global.js:364 msgid "Redir port" msgstr "" @@ -1652,7 +1689,7 @@ msgstr "" msgid "Refresh every %s seconds." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:479 +#: htdocs/luci-static/resources/fchomo.js:490 #: htdocs/luci-static/resources/view/fchomo/client.js:443 #: htdocs/luci-static/resources/view/fchomo/global.js:166 #: htdocs/luci-static/resources/view/fchomo/server.js:80 @@ -1663,7 +1700,7 @@ msgstr "" msgid "Reload All" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:817 +#: htdocs/luci-static/resources/view/fchomo/node.js:818 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:187 msgid "Remote" msgstr "" @@ -1672,23 +1709,23 @@ msgstr "" msgid "Remote DNS resolve" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:617 +#: htdocs/luci-static/resources/fchomo.js:628 msgid "Remove" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:622 -#: htdocs/luci-static/resources/view/fchomo/node.js:792 -#: htdocs/luci-static/resources/view/fchomo/node.js:794 +#: htdocs/luci-static/resources/fchomo.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:793 +#: htdocs/luci-static/resources/view/fchomo/node.js:795 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:167 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:169 msgid "Remove idles" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:902 +#: htdocs/luci-static/resources/view/fchomo/node.js:903 msgid "Replace name" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:903 +#: htdocs/luci-static/resources/view/fchomo/node.js:904 msgid "Replace node name." msgstr "" @@ -1723,8 +1760,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:550 #: htdocs/luci-static/resources/view/fchomo/global.js:609 -#: htdocs/luci-static/resources/view/fchomo/node.js:760 -#: htdocs/luci-static/resources/view/fchomo/node.js:964 +#: htdocs/luci-static/resources/view/fchomo/node.js:761 +#: htdocs/luci-static/resources/view/fchomo/node.js:966 msgid "Routing mark" msgstr "" @@ -1780,7 +1817,7 @@ msgstr "" msgid "Ruleset-URI-Scheme" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:492 +#: htdocs/luci-static/resources/fchomo.js:503 msgid "Running" msgstr "" @@ -1880,7 +1917,7 @@ msgid "Simple round-robin all nodes" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:528 -#: htdocs/luci-static/resources/view/fchomo/node.js:945 +#: htdocs/luci-static/resources/view/fchomo/node.js:946 msgid "Skip cert verify" msgstr "" @@ -1946,7 +1983,7 @@ msgstr "" msgid "Successfully updated." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:900 +#: htdocs/luci-static/resources/fchomo.js:911 msgid "Successfully uploaded." msgstr "" @@ -1985,7 +2022,7 @@ msgid "TCP-Keep-Alive interval" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:740 -#: htdocs/luci-static/resources/view/fchomo/node.js:918 +#: htdocs/luci-static/resources/view/fchomo/node.js:919 msgid "TFO" msgstr "" @@ -2047,7 +2084,7 @@ msgid "The server public key, in PEM format." msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:531 -#: htdocs/luci-static/resources/view/fchomo/node.js:948 +#: htdocs/luci-static/resources/view/fchomo/node.js:949 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" @@ -2114,7 +2151,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:482 #: htdocs/luci-static/resources/view/fchomo/client.js:961 #: htdocs/luci-static/resources/view/fchomo/node.js:55 -#: htdocs/luci-static/resources/view/fchomo/node.js:815 +#: htdocs/luci-static/resources/view/fchomo/node.js:816 +#: htdocs/luci-static/resources/view/fchomo/node.js:1064 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:185 #: htdocs/luci-static/resources/view/fchomo/server.js:112 msgid "Type" @@ -2122,7 +2160,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:274 #: htdocs/luci-static/resources/view/fchomo/node.js:437 -#: htdocs/luci-static/resources/view/fchomo/node.js:926 +#: htdocs/luci-static/resources/view/fchomo/node.js:927 #: htdocs/luci-static/resources/view/fchomo/server.js:367 msgid "UDP" msgstr "" @@ -2158,7 +2196,7 @@ msgstr "" msgid "UUID" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:537 +#: htdocs/luci-static/resources/fchomo.js:548 msgid "Unable to download unsupported type: %s" msgstr "" @@ -2184,7 +2222,7 @@ msgid "Unknown error: %s" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:442 -#: htdocs/luci-static/resources/view/fchomo/node.js:930 +#: htdocs/luci-static/resources/view/fchomo/node.js:931 msgid "UoT" msgstr "" @@ -2192,7 +2230,7 @@ msgstr "" msgid "Update failed." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:862 +#: htdocs/luci-static/resources/view/fchomo/node.js:863 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:260 msgid "Update interval" msgstr "" @@ -2265,7 +2303,8 @@ msgstr "" msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:820 +#: htdocs/luci-static/resources/view/fchomo/node.js:821 +#: htdocs/luci-static/resources/view/fchomo/node.js:1070 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:218 msgid "Value" msgstr "" @@ -2325,7 +2364,7 @@ msgstr "" msgid "YouTube" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:882 +#: htdocs/luci-static/resources/fchomo.js:893 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "" @@ -2371,12 +2410,7 @@ msgstr "" msgid "cubic" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:749 -#: htdocs/luci-static/resources/view/fchomo/node.js:953 -msgid "dialer-proxy" -msgstr "" - -#: htdocs/luci-static/resources/view/fchomo/node.js:940 +#: htdocs/luci-static/resources/view/fchomo/node.js:941 msgid "down" msgstr "" @@ -2403,7 +2437,7 @@ msgid "metacubexd" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:744 -#: htdocs/luci-static/resources/view/fchomo/node.js:922 +#: htdocs/luci-static/resources/view/fchomo/node.js:923 msgid "mpTCP" msgstr "" @@ -2416,8 +2450,8 @@ msgstr "" msgid "no-resolve" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:728 -#: htdocs/luci-static/resources/fchomo.js:750 +#: htdocs/luci-static/resources/fchomo.js:739 +#: htdocs/luci-static/resources/fchomo.js:761 msgid "non-empty value" msgstr "" @@ -2444,7 +2478,7 @@ msgstr "" msgid "obfs-simple" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:905 +#: htdocs/luci-static/resources/view/fchomo/node.js:906 msgid "override.proxy-name" msgstr "" @@ -2480,19 +2514,19 @@ msgstr "" msgid "unchecked" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:561 +#: htdocs/luci-static/resources/fchomo.js:572 msgid "unique UCI identifier" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:564 +#: htdocs/luci-static/resources/fchomo.js:575 msgid "unique identifier" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:759 +#: htdocs/luci-static/resources/fchomo.js:770 msgid "unique value" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:935 +#: htdocs/luci-static/resources/view/fchomo/node.js:936 msgid "up" msgstr "" @@ -2514,8 +2548,8 @@ msgstr "" msgid "v3" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:702 -#: htdocs/luci-static/resources/fchomo.js:705 +#: htdocs/luci-static/resources/fchomo.js:713 +#: htdocs/luci-static/resources/fchomo.js:716 msgid "valid JSON format" msgstr "" @@ -2523,24 +2557,24 @@ msgstr "" msgid "valid SHA256 string with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:771 -#: htdocs/luci-static/resources/fchomo.js:774 +#: htdocs/luci-static/resources/fchomo.js:782 +#: htdocs/luci-static/resources/fchomo.js:785 msgid "valid URL" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:715 +#: htdocs/luci-static/resources/fchomo.js:726 msgid "valid base64 key with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:730 +#: htdocs/luci-static/resources/fchomo.js:741 msgid "valid key length with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:685 +#: htdocs/luci-static/resources/fchomo.js:696 msgid "valid port value" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:784 +#: htdocs/luci-static/resources/fchomo.js:795 msgid "valid uuid" msgstr "" @@ -2564,6 +2598,6 @@ msgstr "" msgid "zero" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:539 +#: htdocs/luci-static/resources/fchomo.js:550 msgid "🡇" msgstr "" diff --git a/luci-app-fchomo/po/zh_Hans/fchomo.po b/luci-app-fchomo/po/zh_Hans/fchomo.po index 98d61122d..4aba3eca0 100644 --- a/luci-app-fchomo/po/zh_Hans/fchomo.po +++ b/luci-app-fchomo/po/zh_Hans/fchomo.po @@ -12,19 +12,21 @@ msgstr "" msgid "%s log" msgstr "%s 日志" -#: htdocs/luci-static/resources/fchomo.js:419 -#: htdocs/luci-static/resources/fchomo.js:432 -#: htdocs/luci-static/resources/fchomo.js:445 -#: htdocs/luci-static/resources/fchomo.js:459 +#: htdocs/luci-static/resources/fchomo.js:430 +#: htdocs/luci-static/resources/fchomo.js:443 +#: htdocs/luci-static/resources/fchomo.js:456 +#: htdocs/luci-static/resources/fchomo.js:470 #: htdocs/luci-static/resources/view/fchomo/client.js:282 #: htdocs/luci-static/resources/view/fchomo/client.js:496 #: htdocs/luci-static/resources/view/fchomo/client.js:510 #: htdocs/luci-static/resources/view/fchomo/client.js:979 #: htdocs/luci-static/resources/view/fchomo/global.js:470 +#: htdocs/luci-static/resources/view/fchomo/node.js:1140 +#: htdocs/luci-static/resources/view/fchomo/node.js:1141 msgid "-- Please choose --" msgstr "-- 请选择 --" -#: htdocs/luci-static/resources/fchomo.js:743 +#: htdocs/luci-static/resources/fchomo.js:754 msgid "/^(\\d+)(s|m|h|d)?$/" msgstr "" @@ -98,10 +100,14 @@ msgstr "新增 DNS 服务器" msgid "Add a Node" msgstr "新增 节点" -#: htdocs/luci-static/resources/view/fchomo/node.js:784 +#: htdocs/luci-static/resources/view/fchomo/node.js:785 msgid "Add a provider" msgstr "新增 供应商" +#: htdocs/luci-static/resources/view/fchomo/node.js:1050 +msgid "Add a proxy chain" +msgstr "新增 代理链" + #: htdocs/luci-static/resources/view/fchomo/client.js:458 msgid "Add a proxy group" msgstr "新增 代理组" @@ -122,11 +128,11 @@ msgstr "新增 服务器" msgid "Add a sub rule" msgstr "新增 子规则" -#: htdocs/luci-static/resources/view/fchomo/node.js:896 +#: htdocs/luci-static/resources/view/fchomo/node.js:897 msgid "Add prefix" msgstr "添加前缀" -#: htdocs/luci-static/resources/view/fchomo/node.js:899 +#: htdocs/luci-static/resources/view/fchomo/node.js:900 msgid "Add suffix" msgstr "添加后缀" @@ -220,14 +226,14 @@ msgstr "二进制格式仅支持 domain/ipcidr" #: htdocs/luci-static/resources/view/fchomo/client.js:543 #: htdocs/luci-static/resources/view/fchomo/global.js:591 -#: htdocs/luci-static/resources/view/fchomo/node.js:753 -#: htdocs/luci-static/resources/view/fchomo/node.js:957 +#: htdocs/luci-static/resources/view/fchomo/node.js:754 +#: htdocs/luci-static/resources/view/fchomo/node.js:959 msgid "Bind interface" msgstr "绑定接口" #: htdocs/luci-static/resources/view/fchomo/client.js:544 -#: htdocs/luci-static/resources/view/fchomo/node.js:754 -#: htdocs/luci-static/resources/view/fchomo/node.js:958 +#: htdocs/luci-static/resources/view/fchomo/node.js:755 +#: htdocs/luci-static/resources/view/fchomo/node.js:960 msgid "Bind outbound interface.
" msgstr "绑定出站接口。
" @@ -285,6 +291,16 @@ msgstr "证书指纹。用于实现 SSL证书固定 并防止 MitM。" msgid "Certificate path" msgstr "证书路径" +#: htdocs/luci-static/resources/view/fchomo/node.js:1092 +#: htdocs/luci-static/resources/view/fchomo/node.js:1098 +msgid "Chain head" +msgstr "链头" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1139 +#: htdocs/luci-static/resources/view/fchomo/node.js:1146 +msgid "Chain tail" +msgstr "链尾" + #: htdocs/luci-static/resources/view/fchomo/global.js:194 msgid "Check" msgstr "检查" @@ -341,11 +357,11 @@ msgstr "常用端口和 STUN 端口" msgid "Common ports only (bypass P2P traffic)" msgstr "仅常用端口(绕过 P2P 流量)" -#: htdocs/luci-static/resources/fchomo.js:628 +#: htdocs/luci-static/resources/fchomo.js:639 msgid "Complete" msgstr "完成" -#: htdocs/luci-static/resources/view/fchomo/node.js:913 +#: htdocs/luci-static/resources/view/fchomo/node.js:914 msgid "Configuration Items" msgstr "配置项" @@ -358,12 +374,12 @@ msgstr "拥塞控制器" msgid "Connection check" msgstr "连接检查" -#: htdocs/luci-static/resources/view/fchomo/node.js:845 +#: htdocs/luci-static/resources/view/fchomo/node.js:846 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:243 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "内容将不会被验证,请确保输入正确。" -#: htdocs/luci-static/resources/view/fchomo/node.js:837 +#: htdocs/luci-static/resources/view/fchomo/node.js:838 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:235 msgid "Contents" msgstr "内容" @@ -384,7 +400,7 @@ msgstr "Cron 表达式" msgid "Custom Direct List" msgstr "自定义直连列表" -#: htdocs/luci-static/resources/view/fchomo/node.js:880 +#: htdocs/luci-static/resources/view/fchomo/node.js:881 msgid "Custom HTTP header." msgstr "自定义 HTTP header。" @@ -449,6 +465,11 @@ msgstr "允许通过 WireGuard 转发的目的地址" msgid "Dial fields" msgstr "拨号字段" +#: htdocs/luci-static/resources/view/fchomo/node.js:1107 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 +msgid "Different chain head/tail" +msgstr "不同的链头/链尾" + #: htdocs/luci-static/resources/view/fchomo/global.js:297 msgid "Direct" msgstr "直连" @@ -500,7 +521,7 @@ msgid "Donot send server name in ClientHello." msgstr "不要在 ClientHello 中发送服务器名称。" #: htdocs/luci-static/resources/view/fchomo/node.js:529 -#: htdocs/luci-static/resources/view/fchomo/node.js:946 +#: htdocs/luci-static/resources/view/fchomo/node.js:947 msgid "Donot verifying server certificate." msgstr "不验证服务器证书。" @@ -512,11 +533,11 @@ msgstr "下载带宽" msgid "Download bandwidth in Mbps." msgstr "下载带宽(单位:Mbps)。" -#: htdocs/luci-static/resources/fchomo.js:534 +#: htdocs/luci-static/resources/fchomo.js:545 msgid "Download failed: %s" msgstr "下载失败: %s" -#: htdocs/luci-static/resources/fchomo.js:532 +#: htdocs/luci-static/resources/fchomo.js:543 msgid "Download successful." msgstr "下载成功。" @@ -552,7 +573,7 @@ msgstr "编辑节点" msgid "Edit ruleset" msgstr "编辑规则集" -#: htdocs/luci-static/resources/view/fchomo/node.js:835 +#: htdocs/luci-static/resources/view/fchomo/node.js:836 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:233 msgid "Editer" msgstr "编辑器" @@ -566,8 +587,9 @@ msgstr "编辑器" #: htdocs/luci-static/resources/view/fchomo/global.js:303 #: htdocs/luci-static/resources/view/fchomo/global.js:540 #: htdocs/luci-static/resources/view/fchomo/node.js:51 -#: htdocs/luci-static/resources/view/fchomo/node.js:811 -#: htdocs/luci-static/resources/view/fchomo/node.js:977 +#: htdocs/luci-static/resources/view/fchomo/node.js:812 +#: htdocs/luci-static/resources/view/fchomo/node.js:979 +#: htdocs/luci-static/resources/view/fchomo/node.js:1060 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:181 #: htdocs/luci-static/resources/view/fchomo/server.js:84 #: htdocs/luci-static/resources/view/fchomo/server.js:108 @@ -616,7 +638,7 @@ msgid "Enable statistic" msgstr "启用统计" #: htdocs/luci-static/resources/view/fchomo/node.js:443 -#: htdocs/luci-static/resources/view/fchomo/node.js:931 +#: htdocs/luci-static/resources/view/fchomo/node.js:932 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "启用 SUoT 协议,需要服务端支持。与多路复用冲突。" @@ -647,7 +669,7 @@ msgid "" "if empty." msgstr "超过此限制将会触发强制健康检查。留空则使用 5。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1027 +#: htdocs/luci-static/resources/view/fchomo/node.js:1029 msgid "Exclude matched node types." msgstr "排除匹配的节点类型。" @@ -660,42 +682,44 @@ msgstr "" "rel=\"noreferrer noopener\">此处
。" #: htdocs/luci-static/resources/view/fchomo/client.js:627 -#: htdocs/luci-static/resources/view/fchomo/node.js:1021 +#: htdocs/luci-static/resources/view/fchomo/node.js:1023 msgid "Exclude nodes that meet keywords or regexps." msgstr "排除匹配关键词或表达式的节点。" #: htdocs/luci-static/resources/view/fchomo/client.js:587 -#: htdocs/luci-static/resources/view/fchomo/node.js:1008 +#: htdocs/luci-static/resources/view/fchomo/node.js:1010 msgid "Expected HTTP code. 204 will be used if empty." msgstr "预期的 HTTP code。留空则使用 204。" #: htdocs/luci-static/resources/view/fchomo/client.js:589 -#: htdocs/luci-static/resources/view/fchomo/node.js:1010 +#: htdocs/luci-static/resources/view/fchomo/node.js:1012 msgid "Expected status" msgstr "预期状态" -#: htdocs/luci-static/resources/fchomo.js:558 -#: htdocs/luci-static/resources/fchomo.js:561 -#: htdocs/luci-static/resources/fchomo.js:564 -#: htdocs/luci-static/resources/fchomo.js:645 -#: htdocs/luci-static/resources/fchomo.js:653 -#: htdocs/luci-static/resources/fchomo.js:661 -#: htdocs/luci-static/resources/fchomo.js:685 -#: htdocs/luci-static/resources/fchomo.js:702 -#: htdocs/luci-static/resources/fchomo.js:705 -#: htdocs/luci-static/resources/fchomo.js:715 -#: htdocs/luci-static/resources/fchomo.js:728 -#: htdocs/luci-static/resources/fchomo.js:730 -#: htdocs/luci-static/resources/fchomo.js:743 -#: htdocs/luci-static/resources/fchomo.js:750 -#: htdocs/luci-static/resources/fchomo.js:759 -#: htdocs/luci-static/resources/fchomo.js:771 -#: htdocs/luci-static/resources/fchomo.js:774 -#: htdocs/luci-static/resources/fchomo.js:784 +#: htdocs/luci-static/resources/fchomo.js:569 +#: htdocs/luci-static/resources/fchomo.js:572 +#: htdocs/luci-static/resources/fchomo.js:575 +#: htdocs/luci-static/resources/fchomo.js:656 +#: htdocs/luci-static/resources/fchomo.js:664 +#: htdocs/luci-static/resources/fchomo.js:672 +#: htdocs/luci-static/resources/fchomo.js:696 +#: htdocs/luci-static/resources/fchomo.js:713 +#: htdocs/luci-static/resources/fchomo.js:716 +#: htdocs/luci-static/resources/fchomo.js:726 +#: htdocs/luci-static/resources/fchomo.js:739 +#: htdocs/luci-static/resources/fchomo.js:741 +#: htdocs/luci-static/resources/fchomo.js:754 +#: htdocs/luci-static/resources/fchomo.js:761 +#: htdocs/luci-static/resources/fchomo.js:770 +#: htdocs/luci-static/resources/fchomo.js:782 +#: htdocs/luci-static/resources/fchomo.js:785 +#: htdocs/luci-static/resources/fchomo.js:795 #: htdocs/luci-static/resources/view/fchomo/client.js:27 #: htdocs/luci-static/resources/view/fchomo/client.js:472 #: htdocs/luci-static/resources/view/fchomo/client.js:831 #: htdocs/luci-static/resources/view/fchomo/node.js:521 +#: htdocs/luci-static/resources/view/fchomo/node.js:1107 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:199 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:213 msgid "Expecting: %s" @@ -718,15 +742,15 @@ msgstr "实验性" msgid "Factor" msgstr "条件" -#: htdocs/luci-static/resources/fchomo.js:586 +#: htdocs/luci-static/resources/fchomo.js:597 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:884 +#: htdocs/luci-static/resources/fchomo.js:895 msgid "Failed to upload %s, error: %s." msgstr "上传 %s 失败,错误:%s。" -#: htdocs/luci-static/resources/fchomo.js:903 +#: htdocs/luci-static/resources/fchomo.js:914 msgid "Failed to upload, error: %s." msgstr "上传失败,错误:%s。" @@ -745,7 +769,7 @@ msgid "Fallback filter" msgstr "後備过滤器" #: htdocs/luci-static/resources/view/fchomo/client.js:622 -#: htdocs/luci-static/resources/view/fchomo/node.js:1016 +#: htdocs/luci-static/resources/view/fchomo/node.js:1018 msgid "Filter nodes that meet keywords or regexps." msgstr "过滤匹配关键字或表达式的节点。" @@ -777,8 +801,8 @@ msgstr "" "noopener\">%s." #: htdocs/luci-static/resources/view/fchomo/client.js:588 -#: htdocs/luci-static/resources/view/fchomo/node.js:904 -#: htdocs/luci-static/resources/view/fchomo/node.js:1009 +#: htdocs/luci-static/resources/view/fchomo/node.js:905 +#: htdocs/luci-static/resources/view/fchomo/node.js:1011 msgid "" "For format see %s." @@ -818,7 +842,7 @@ msgstr "常规" #: htdocs/luci-static/resources/view/fchomo/client.js:463 #: htdocs/luci-static/resources/view/fchomo/node.js:40 -#: htdocs/luci-static/resources/view/fchomo/node.js:801 +#: htdocs/luci-static/resources/view/fchomo/node.js:802 msgid "General fields" msgstr "常规字段" @@ -908,7 +932,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:84 #: htdocs/luci-static/resources/view/fchomo/node.js:628 -#: htdocs/luci-static/resources/view/fchomo/node.js:879 +#: htdocs/luci-static/resources/view/fchomo/node.js:880 msgid "HTTP header" msgstr "HTTP header" @@ -936,27 +960,27 @@ msgid "Handle domain" msgstr "处理域名" #: htdocs/luci-static/resources/view/fchomo/client.js:557 -#: htdocs/luci-static/resources/view/fchomo/node.js:981 +#: htdocs/luci-static/resources/view/fchomo/node.js:983 msgid "Health check URL" msgstr "健康检查 URL" #: htdocs/luci-static/resources/view/fchomo/client.js:586 -#: htdocs/luci-static/resources/view/fchomo/node.js:1007 +#: htdocs/luci-static/resources/view/fchomo/node.js:1009 msgid "Health check expected status" msgstr "健康检查预期状态" #: htdocs/luci-static/resources/view/fchomo/client.js:566 -#: htdocs/luci-static/resources/view/fchomo/node.js:990 +#: htdocs/luci-static/resources/view/fchomo/node.js:992 msgid "Health check interval" msgstr "健康检查间隔" #: htdocs/luci-static/resources/view/fchomo/client.js:573 -#: htdocs/luci-static/resources/view/fchomo/node.js:996 +#: htdocs/luci-static/resources/view/fchomo/node.js:998 msgid "Health check timeout" msgstr "健康检查超时" #: htdocs/luci-static/resources/view/fchomo/client.js:465 -#: htdocs/luci-static/resources/view/fchomo/node.js:803 +#: htdocs/luci-static/resources/view/fchomo/node.js:804 msgid "Health fields" msgstr "健康字段" @@ -999,8 +1023,8 @@ msgstr "" msgid "IP override" msgstr "IP 覆写" -#: htdocs/luci-static/resources/view/fchomo/node.js:765 -#: htdocs/luci-static/resources/view/fchomo/node.js:969 +#: htdocs/luci-static/resources/view/fchomo/node.js:766 +#: htdocs/luci-static/resources/view/fchomo/node.js:971 msgid "IP version" msgstr "IP 版本" @@ -1041,8 +1065,8 @@ msgstr "导入 rule-set 链接" #: htdocs/luci-static/resources/view/fchomo/node.js:104 #: htdocs/luci-static/resources/view/fchomo/node.js:110 -#: htdocs/luci-static/resources/view/fchomo/node.js:936 -#: htdocs/luci-static/resources/view/fchomo/node.js:941 +#: htdocs/luci-static/resources/view/fchomo/node.js:937 +#: htdocs/luci-static/resources/view/fchomo/node.js:942 #: htdocs/luci-static/resources/view/fchomo/server.js:159 #: htdocs/luci-static/resources/view/fchomo/server.js:165 msgid "In Mbps." @@ -1055,7 +1079,7 @@ msgstr "单位为毫秒。" #: htdocs/luci-static/resources/view/fchomo/client.js:574 #: htdocs/luci-static/resources/view/fchomo/client.js:603 -#: htdocs/luci-static/resources/view/fchomo/node.js:997 +#: htdocs/luci-static/resources/view/fchomo/node.js:999 msgid "In millisecond. %s will be used if empty." msgstr "单位为毫秒。留空则使用 %s。" @@ -1068,8 +1092,8 @@ msgstr "单位为秒。" #: htdocs/luci-static/resources/view/fchomo/global.js:329 #: htdocs/luci-static/resources/view/fchomo/global.js:334 #: htdocs/luci-static/resources/view/fchomo/global.js:426 -#: htdocs/luci-static/resources/view/fchomo/node.js:863 -#: htdocs/luci-static/resources/view/fchomo/node.js:991 +#: htdocs/luci-static/resources/view/fchomo/node.js:864 +#: htdocs/luci-static/resources/view/fchomo/node.js:993 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:261 msgid "In seconds. %s will be used if empty." msgstr "单位为秒。留空则使用 %s。" @@ -1124,14 +1148,15 @@ msgstr "证书路径" #: htdocs/luci-static/resources/view/fchomo/client.js:811 #: htdocs/luci-static/resources/view/fchomo/client.js:952 #: htdocs/luci-static/resources/view/fchomo/node.js:46 -#: htdocs/luci-static/resources/view/fchomo/node.js:806 +#: htdocs/luci-static/resources/view/fchomo/node.js:807 +#: htdocs/luci-static/resources/view/fchomo/node.js:1055 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:176 #: htdocs/luci-static/resources/view/fchomo/server.js:103 msgid "Label" msgstr "标签" #: htdocs/luci-static/resources/view/fchomo/client.js:580 -#: htdocs/luci-static/resources/view/fchomo/node.js:1002 +#: htdocs/luci-static/resources/view/fchomo/node.js:1004 msgid "Lazy" msgstr "懒惰状态" @@ -1173,7 +1198,7 @@ msgstr "监听端口" msgid "Load balance" msgstr "负载均衡" -#: htdocs/luci-static/resources/view/fchomo/node.js:816 +#: htdocs/luci-static/resources/view/fchomo/node.js:817 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:186 msgid "Local" msgstr "本地" @@ -1202,7 +1227,7 @@ msgstr "日志为空。" msgid "Log level" msgstr "日志等级" -#: htdocs/luci-static/resources/fchomo.js:558 +#: htdocs/luci-static/resources/fchomo.js:569 msgid "Lowercase only" msgstr "仅限小写" @@ -1324,7 +1349,7 @@ msgstr "多路复用" msgid "Multiplex fields" msgstr "多路复用字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:869 +#: htdocs/luci-static/resources/view/fchomo/node.js:870 msgid "Name of the Proxy group to download provider." msgstr "用于下载供应商订阅的代理组名称。" @@ -1345,7 +1370,7 @@ msgid "No add'l params" msgstr "无附加参数" #: htdocs/luci-static/resources/view/fchomo/client.js:581 -#: htdocs/luci-static/resources/view/fchomo/node.js:1003 +#: htdocs/luci-static/resources/view/fchomo/node.js:1005 msgid "No testing is performed when this provider node is not in use." msgstr "当此供应商的节点未使用时,不执行任何测试。" @@ -1360,17 +1385,17 @@ msgid "Node" msgstr "节点" #: htdocs/luci-static/resources/view/fchomo/client.js:626 -#: htdocs/luci-static/resources/view/fchomo/node.js:1020 +#: htdocs/luci-static/resources/view/fchomo/node.js:1022 msgid "Node exclude filter" msgstr "排除节点" #: htdocs/luci-static/resources/view/fchomo/client.js:631 -#: htdocs/luci-static/resources/view/fchomo/node.js:1026 +#: htdocs/luci-static/resources/view/fchomo/node.js:1028 msgid "Node exclude type" msgstr "排除节点类型" #: htdocs/luci-static/resources/view/fchomo/client.js:621 -#: htdocs/luci-static/resources/view/fchomo/node.js:1015 +#: htdocs/luci-static/resources/view/fchomo/node.js:1017 msgid "Node filter" msgstr "过滤节点" @@ -1386,7 +1411,7 @@ msgstr "无" msgid "Not Installed" msgstr "未安装" -#: htdocs/luci-static/resources/fchomo.js:492 +#: htdocs/luci-static/resources/fchomo.js:503 msgid "Not Running" msgstr "未在运行" @@ -1408,7 +1433,7 @@ msgstr "混淆类型" msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "只处理来自指定接口的流量。留空表示全部。" -#: htdocs/luci-static/resources/fchomo.js:486 +#: htdocs/luci-static/resources/fchomo.js:497 msgid "Open Dashboard" msgstr "打开面板" @@ -1426,7 +1451,7 @@ msgid "Override destination" msgstr "覆盖目标地址" #: htdocs/luci-static/resources/view/fchomo/client.js:464 -#: htdocs/luci-static/resources/view/fchomo/node.js:802 +#: htdocs/luci-static/resources/view/fchomo/node.js:803 msgid "Override fields" msgstr "覆盖字段" @@ -1486,7 +1511,7 @@ msgid "" "standards." msgstr "链接格式标准请参考 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:836 +#: htdocs/luci-static/resources/view/fchomo/node.js:837 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:234 msgid "" "Please type %s Proxy Group > Global." msgstr "优先级: 代理节点 > 代理组 > 全局。" @@ -1579,12 +1604,13 @@ msgid "" msgstr "协议参数。 如启用会随机浪费流量(在 v2ray 中默认启用并且无法禁用)。" #: htdocs/luci-static/resources/view/fchomo/client.js:509 -#: htdocs/luci-static/resources/view/fchomo/node.js:774 -#: htdocs/luci-static/resources/view/fchomo/node.js:784 +#: htdocs/luci-static/resources/view/fchomo/node.js:775 +#: htdocs/luci-static/resources/view/fchomo/node.js:785 +#: htdocs/luci-static/resources/view/fchomo/node.js:1066 msgid "Provider" msgstr "供应商" -#: htdocs/luci-static/resources/view/fchomo/node.js:856 +#: htdocs/luci-static/resources/view/fchomo/node.js:857 msgid "Provider URL" msgstr "供应商订阅 URL" @@ -1606,13 +1632,19 @@ msgid "Proxy MAC-s" msgstr "代理 MAC 地址" #: htdocs/luci-static/resources/view/fchomo/node.js:25 +#: htdocs/luci-static/resources/view/fchomo/node.js:1065 msgid "Proxy Node" msgstr "代理节点" +#: htdocs/luci-static/resources/view/fchomo/node.js:1040 +#: htdocs/luci-static/resources/view/fchomo/node.js:1050 +msgid "Proxy chain" +msgstr "代理链" + #: htdocs/luci-static/resources/view/fchomo/client.js:354 #: htdocs/luci-static/resources/view/fchomo/client.js:868 #: htdocs/luci-static/resources/view/fchomo/client.js:1000 -#: htdocs/luci-static/resources/view/fchomo/node.js:868 +#: htdocs/luci-static/resources/view/fchomo/node.js:869 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:266 msgid "Proxy group" msgstr "代理组" @@ -1655,6 +1687,11 @@ msgstr "REALITY 标识符" msgid "Random will be used if empty." msgstr "留空将使用随机令牌。" +#: htdocs/luci-static/resources/view/fchomo/node.js:1099 +#: htdocs/luci-static/resources/view/fchomo/node.js:1147 +msgid "Recommended to use UoT node.
such as %s." +msgstr "建议使用 UoT 节点。
例如%s。" + #: htdocs/luci-static/resources/view/fchomo/global.js:364 msgid "Redir port" msgstr "Redir 端口" @@ -1675,7 +1712,7 @@ msgstr "Redirect TCP + Tun UDP" msgid "Refresh every %s seconds." msgstr "每 %s 秒刷新。" -#: htdocs/luci-static/resources/fchomo.js:479 +#: htdocs/luci-static/resources/fchomo.js:490 #: htdocs/luci-static/resources/view/fchomo/client.js:443 #: htdocs/luci-static/resources/view/fchomo/global.js:166 #: htdocs/luci-static/resources/view/fchomo/server.js:80 @@ -1686,7 +1723,7 @@ msgstr "重载" msgid "Reload All" msgstr "重载所有" -#: htdocs/luci-static/resources/view/fchomo/node.js:817 +#: htdocs/luci-static/resources/view/fchomo/node.js:818 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:187 msgid "Remote" msgstr "远程" @@ -1695,23 +1732,23 @@ msgstr "远程" msgid "Remote DNS resolve" msgstr "远程 DNS 解析" -#: htdocs/luci-static/resources/fchomo.js:617 +#: htdocs/luci-static/resources/fchomo.js:628 msgid "Remove" msgstr "移除" -#: htdocs/luci-static/resources/fchomo.js:622 -#: htdocs/luci-static/resources/view/fchomo/node.js:792 -#: htdocs/luci-static/resources/view/fchomo/node.js:794 +#: htdocs/luci-static/resources/fchomo.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:793 +#: htdocs/luci-static/resources/view/fchomo/node.js:795 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:167 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:169 msgid "Remove idles" msgstr "移除闲置" -#: htdocs/luci-static/resources/view/fchomo/node.js:902 +#: htdocs/luci-static/resources/view/fchomo/node.js:903 msgid "Replace name" msgstr "名称替换" -#: htdocs/luci-static/resources/view/fchomo/node.js:903 +#: htdocs/luci-static/resources/view/fchomo/node.js:904 msgid "Replace node name." msgstr "替换节点名称" @@ -1746,8 +1783,8 @@ msgstr "路由 GFW 流量" #: htdocs/luci-static/resources/view/fchomo/client.js:550 #: htdocs/luci-static/resources/view/fchomo/global.js:609 -#: htdocs/luci-static/resources/view/fchomo/node.js:760 -#: htdocs/luci-static/resources/view/fchomo/node.js:964 +#: htdocs/luci-static/resources/view/fchomo/node.js:761 +#: htdocs/luci-static/resources/view/fchomo/node.js:966 msgid "Routing mark" msgstr "路由标记" @@ -1803,7 +1840,7 @@ msgstr "规则集" msgid "Ruleset-URI-Scheme" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:492 +#: htdocs/luci-static/resources/fchomo.js:503 msgid "Running" msgstr "正在运行" @@ -1903,7 +1940,7 @@ msgid "Simple round-robin all nodes" msgstr "简单轮替所有节点" #: htdocs/luci-static/resources/view/fchomo/node.js:528 -#: htdocs/luci-static/resources/view/fchomo/node.js:945 +#: htdocs/luci-static/resources/view/fchomo/node.js:946 msgid "Skip cert verify" msgstr "跳过证书验证" @@ -1969,7 +2006,7 @@ msgstr "已成功导入 %s 个规则集 (共 %s 个)。" msgid "Successfully updated." msgstr "更新成功。" -#: htdocs/luci-static/resources/fchomo.js:900 +#: htdocs/luci-static/resources/fchomo.js:911 msgid "Successfully uploaded." msgstr "已成功上传。" @@ -2010,7 +2047,7 @@ msgid "TCP-Keep-Alive interval" msgstr "TCP-Keep-Alive 间隔" #: htdocs/luci-static/resources/view/fchomo/node.js:740 -#: htdocs/luci-static/resources/view/fchomo/node.js:918 +#: htdocs/luci-static/resources/view/fchomo/node.js:919 msgid "TFO" msgstr "TCP 快速打开 (TFO)" @@ -2072,7 +2109,7 @@ msgid "The server public key, in PEM format." msgstr "服务端公钥,需要 PEM 格式。" #: htdocs/luci-static/resources/view/fchomo/node.js:531 -#: htdocs/luci-static/resources/view/fchomo/node.js:948 +#: htdocs/luci-static/resources/view/fchomo/node.js:949 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" @@ -2143,7 +2180,8 @@ msgstr "Tun 堆栈" #: htdocs/luci-static/resources/view/fchomo/client.js:482 #: htdocs/luci-static/resources/view/fchomo/client.js:961 #: htdocs/luci-static/resources/view/fchomo/node.js:55 -#: htdocs/luci-static/resources/view/fchomo/node.js:815 +#: htdocs/luci-static/resources/view/fchomo/node.js:816 +#: htdocs/luci-static/resources/view/fchomo/node.js:1064 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:185 #: htdocs/luci-static/resources/view/fchomo/server.js:112 msgid "Type" @@ -2151,7 +2189,7 @@ msgstr "类型" #: htdocs/luci-static/resources/view/fchomo/client.js:274 #: htdocs/luci-static/resources/view/fchomo/node.js:437 -#: htdocs/luci-static/resources/view/fchomo/node.js:926 +#: htdocs/luci-static/resources/view/fchomo/node.js:927 #: htdocs/luci-static/resources/view/fchomo/server.js:367 msgid "UDP" msgstr "UDP" @@ -2187,7 +2225,7 @@ msgstr "自动选择" msgid "UUID" msgstr "UUID" -#: htdocs/luci-static/resources/fchomo.js:537 +#: htdocs/luci-static/resources/fchomo.js:548 msgid "Unable to download unsupported type: %s" msgstr "无法下载不支持的类型: %s" @@ -2213,7 +2251,7 @@ msgid "Unknown error: %s" msgstr "未知错误:%s" #: htdocs/luci-static/resources/view/fchomo/node.js:442 -#: htdocs/luci-static/resources/view/fchomo/node.js:930 +#: htdocs/luci-static/resources/view/fchomo/node.js:931 msgid "UoT" msgstr "UDP over TCP (UoT)" @@ -2221,7 +2259,7 @@ msgstr "UDP over TCP (UoT)" msgid "Update failed." msgstr "更新失败。" -#: htdocs/luci-static/resources/view/fchomo/node.js:862 +#: htdocs/luci-static/resources/view/fchomo/node.js:863 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:260 msgid "Update interval" msgstr "更新间隔" @@ -2294,7 +2332,8 @@ msgstr "" msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:820 +#: htdocs/luci-static/resources/view/fchomo/node.js:821 +#: htdocs/luci-static/resources/view/fchomo/node.js:1070 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:218 msgid "Value" msgstr "可视化值" @@ -2354,7 +2393,7 @@ msgstr "Yaml 格式文本" msgid "YouTube" msgstr "油管" -#: htdocs/luci-static/resources/fchomo.js:882 +#: htdocs/luci-static/resources/fchomo.js:893 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "您的 %s 已成功上传。大小:%sB。" @@ -2400,12 +2439,7 @@ msgstr "" msgid "cubic" msgstr "cubic" -#: htdocs/luci-static/resources/view/fchomo/node.js:749 -#: htdocs/luci-static/resources/view/fchomo/node.js:953 -msgid "dialer-proxy" -msgstr "" - -#: htdocs/luci-static/resources/view/fchomo/node.js:940 +#: htdocs/luci-static/resources/view/fchomo/node.js:941 msgid "down" msgstr "Hysteria 下载速率" @@ -2432,7 +2466,7 @@ msgid "metacubexd" msgstr "metacubexd" #: htdocs/luci-static/resources/view/fchomo/node.js:744 -#: htdocs/luci-static/resources/view/fchomo/node.js:922 +#: htdocs/luci-static/resources/view/fchomo/node.js:923 msgid "mpTCP" msgstr "多路径 TCP (mpTCP)" @@ -2445,8 +2479,8 @@ msgstr "new_reno" msgid "no-resolve" msgstr "no-resolve" -#: htdocs/luci-static/resources/fchomo.js:728 -#: htdocs/luci-static/resources/fchomo.js:750 +#: htdocs/luci-static/resources/fchomo.js:739 +#: htdocs/luci-static/resources/fchomo.js:761 msgid "non-empty value" msgstr "非空值" @@ -2473,7 +2507,7 @@ msgstr "" msgid "obfs-simple" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:905 +#: htdocs/luci-static/resources/view/fchomo/node.js:906 msgid "override.proxy-name" msgstr "" @@ -2509,19 +2543,19 @@ msgstr "src" msgid "unchecked" msgstr "未检查" -#: htdocs/luci-static/resources/fchomo.js:561 +#: htdocs/luci-static/resources/fchomo.js:572 msgid "unique UCI identifier" msgstr "独立 UCI 标识" -#: htdocs/luci-static/resources/fchomo.js:564 +#: htdocs/luci-static/resources/fchomo.js:575 msgid "unique identifier" msgstr "独立标识" -#: htdocs/luci-static/resources/fchomo.js:759 +#: htdocs/luci-static/resources/fchomo.js:770 msgid "unique value" msgstr "独立值" -#: htdocs/luci-static/resources/view/fchomo/node.js:935 +#: htdocs/luci-static/resources/view/fchomo/node.js:936 msgid "up" msgstr "Hysteria 上传速率" @@ -2543,8 +2577,8 @@ msgstr "" msgid "v3" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:702 -#: htdocs/luci-static/resources/fchomo.js:705 +#: htdocs/luci-static/resources/fchomo.js:713 +#: htdocs/luci-static/resources/fchomo.js:716 msgid "valid JSON format" msgstr "有效的 JSON 格式" @@ -2552,24 +2586,24 @@ msgstr "有效的 JSON 格式" msgid "valid SHA256 string with %d characters" msgstr "包含 %d 个字符的有效 SHA256 字符串" -#: htdocs/luci-static/resources/fchomo.js:771 -#: htdocs/luci-static/resources/fchomo.js:774 +#: htdocs/luci-static/resources/fchomo.js:782 +#: htdocs/luci-static/resources/fchomo.js:785 msgid "valid URL" msgstr "有效网址" -#: htdocs/luci-static/resources/fchomo.js:715 +#: htdocs/luci-static/resources/fchomo.js:726 msgid "valid base64 key with %d characters" msgstr "包含 %d 个字符的有效 base64 密钥" -#: htdocs/luci-static/resources/fchomo.js:730 +#: htdocs/luci-static/resources/fchomo.js:741 msgid "valid key length with %d characters" msgstr "包含 %d 个字符的有效密钥" -#: htdocs/luci-static/resources/fchomo.js:685 +#: htdocs/luci-static/resources/fchomo.js:696 msgid "valid port value" msgstr "有效端口值" -#: htdocs/luci-static/resources/fchomo.js:784 +#: htdocs/luci-static/resources/fchomo.js:795 msgid "valid uuid" msgstr "有效 uuid" @@ -2593,7 +2627,7 @@ msgstr "" msgid "zero" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:539 +#: htdocs/luci-static/resources/fchomo.js:550 msgid "🡇" msgstr "" diff --git a/luci-app-fchomo/root/etc/fchomo/scripts/generate_client.uc b/luci-app-fchomo/root/etc/fchomo/scripts/generate_client.uc index 7602f21bb..38d171b6c 100755 --- a/luci-app-fchomo/root/etc/fchomo/scripts/generate_client.uc +++ b/luci-app-fchomo/root/etc/fchomo/scripts/generate_client.uc @@ -40,6 +40,7 @@ const ucisniff = 'sniff', ucipgrp = 'proxy_group', ucinode = 'node', uciprov = 'provider', + ucichain = 'dialer_proxy', ucirule = 'ruleset', ucirout = 'rules', ucisubro = 'subrules'; @@ -179,6 +180,25 @@ function parse_entry(cfg) { /* Main */ const config = {}; +/* All Proxy chain object */ +const dialerproxy = {}; +uci.foreach(uciconf, ucichain, (cfg) => { + if (cfg.enabled === '0') + return; + + let identifier = ''; + if (cfg.type === 'provider') + identifier = cfg.chain_head_sub; + else if (cfg.type === 'node') + identifier = cfg.chain_head; + else + return; + + dialerproxy[identifier] = { + detour: get_proxygroup(cfg.chain_tail_group) || get_proxynode(cfg.chain_tail) + }; +}); + /* General START */ /* General settings */ config["global-ua"] = 'clash.meta'; @@ -434,8 +454,7 @@ uci.foreach(uciconf, ucinode, (cfg) => { /* Dial fields */ tfo: strToBool(cfg.tfo), mptcp: strToBool(cfg.mptcp), - // dev: Features under development - ["dialer-proxy"]: null, //cfg.dialer_proxy, + ["dialer-proxy"]: dialerproxy[cfg['.name']]?.detour, ["interface-name"]: cfg.interface_name, ["routing-mark"]: strToInt(cfg.routing_mark), ["ip-version"]: cfg.ip_version, @@ -658,8 +677,7 @@ uci.foreach(uciconf, uciprov, (cfg) => { up: cfg.override_up ? cfg.override_up + ' Mbps' : null, down: cfg.override_down ? cfg.override_down + ' Mbps' : null, ["skip-cert-verify"]: strToBool(cfg.override_skip_cert_verify) || false, - // dev: Features under development - ["dialer-proxy"]: null, //cfg.override_dialer_proxy, + ["dialer-proxy"]: dialerproxy[cfg['.name']]?.detour, ["interface-name"]: cfg.override_interface_name, ["routing-mark"]: strToInt(cfg.override_routing_mark), ["ip-version"]: cfg.override_ip_version @@ -727,4 +745,7 @@ uci.foreach(uciconf, ucisubro, (cfg) => { }); /* Sub rules END */ +/* Debug dialer-proxy */ +//config.dialerproxy = dialerproxy; + printf('%.J\n', removeBlankAttrs(config));