- {m.profile_pending_mask_message()} -
-+ {m.profile_pending_mask_message()} +
+ )} - distortion={0.5} - swirl={0.1} - grainMixer={0} - grainOverlay={0} - speed={1 / 3} - /> - )} - -Padding-Length and one Padding-Interval, infinite concatenation.') + '' +
+ _('The first padding must have a probability of 100% and at least 35 bytes.'));
+ hm.vless_encryption.paddings.forEach((res) => {
+ o.value.apply(o, res);
+ })
+ initVlessEncryptionOption(o, 'paddings');
+ o.validate = function(section_id, value) {
+ if (!value)
+ return true;
+
+ if (!value.match(/^\d+(-\d+){2}$/))
+ return _('Expecting: %s').format('^\\d+(-\\d+){2}$');
+
+ return true;
+ }
+ o.allowduplicates = true;
+ o.depends('vless_decryption', '1');
+ o.modalonly = true;
+
+ o = s.taboption('field_vless_encryption', hm.GenText, 'vless_encryption_keypairs', _('Keypairs'));
+ o.placeholder = '[\n {\n "type": "vless-x25519",\n "server": "cP5Oy9MOpTaBKKE17Pfd56mbb1CIfp5EMpyBYqr2EG8",\n "client": "khEcQMT8j41xWmGYKpZtQ4vd8_9VWyFVmmCDIhRJ-Uk"\n },\n {\n "type": "vless-mlkem768",\n "server": "UHPx3nf-FVxF95byAw0YG025aQNw9HxKej-MiG5AhTcdW_WFpHlTVYQU5NHmXP6tmljSnB2iPmSQ29fisGxEog",\n "client": "h4sdZgCc5-ZefvQ8mZmReOWQdxYb0mwngMdl7pKhYEZZpGWHUPKAmxug87Bgj3GqSHs195QeVpxfrMLNB5J..."\n },\n ...\n]';
+ o.rows = 10;
+ o.hm_options = {
+ type: hm.vless_encryption.keypairs.types[0][0],
+ params: '',
+ callback: function(result) {
+ const section_id = this.section.section;
+ const key_type = this.hm_options.type;
+
+ let keypair = {"type": key_type, "server": "", "client": ""};
+ switch (key_type) {
+ case 'vless-x25519':
+ keypair.server = result.private_key;
+ keypair.client = result.password;
+ break;
+ case 'vless-mlkem768':
+ keypair.server = result.seed;
+ keypair.client = result.client;
+ break;
+ default:
+ break;
+ }
+
+ let keypairs = [];
+ try {
+ keypairs = JSON.parse(this.formvalue(section_id).trim());
+ } catch {}
+ if (!Array.isArray(keypairs))
+ keypairs = [];
+
+ keypairs.push(keypair);
+
+ return [
+ [this.option, JSON.stringify(keypairs, null, 2)]
+ ]
+ }
+ }
+ o.renderWidget = function(section_id, option_index, cfgvalue) {
+ let node = hm.TextValue.prototype.renderWidget.call(this, section_id, option_index, cfgvalue);
+ const cbid = this.cbid(section_id) + '._keytype_select';
+ const selected = this.hm_options.type;
+
+ let selectEl = E('select', {
+ id: cbid,
+ class: 'cbi-input-select',
+ style: 'width: 10em',
+ });
+
+ hm.vless_encryption.keypairs.types.forEach(([k, v]) => {
+ selectEl.appendChild(E('option', {
+ 'value': k,
+ 'selected': (k === selected) ? '' : null
+ }, [ v ]));
+ });
+
+ node.appendChild(E('div', { 'class': 'control-group' }, [
+ selectEl,
+ E('button', {
+ class: 'cbi-button cbi-button-add',
+ click: ui.createHandlerFn(this, () => {
+ this.hm_options.type = document.getElementById(cbid).value;
+
+ return hm.handleGenKey.call(this, this.hm_options);
+ })
+ }, [ _('Generate') ])
+ ]));
+
+ return node;
+ }
+ o.load = function(section_id) {
+ return JSON.stringify(new VlessEncryption(uci.get(uciconfig, section_id, 'vless_encryption_hmpayload'))['keypairs'], null, 2);
+ }
+ o.validate = function(section_id, value) {
+ let result = hm.validateJson.call(this, section_id, value);
+
+ if (result === true) {
+ let keypairs = JSON.parse(value.trim());
+
+ if (Array.isArray(keypairs) && keypairs.length >= 1) {
+ let UIEl = this.section.getUIElement(section_id, 'vless_encryption_hmpayload');
+ let newpayload = new VlessEncryption(UIEl.getValue()).setKey('keypairs', keypairs);
+
+ UIEl.setValue(newpayload.toString());
+
+ [
+ ['server', '_vless_encryption_decryption'],
+ ['client', '_vless_encryption_encryption']
+ ].forEach(([side, option]) => {
+ UIEl = this.section.getUIElement(section_id, option);
+ UIEl.setValue(newpayload.toString('mihomo', side));
+ });
+ } else
+ return _('Expecting: %s').format(_('least one keypair required'));
+
+ return true;
+ } else
+ return result;
+ }
+ o.rmempty = false;
+ o.depends('vless_decryption', '1');
+ o.modalonly = true;
+
+ /* TLS fields */
+ o = s.taboption('field_general', form.Flag, 'tls', _('TLS'));
+ o.default = o.disabled;
+ o.validate = function(section_id, value) {
+ 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 (['trojan', 'anytls', 'tuic', 'hysteria2', 'trusttunnel'].includes(type)) {
+ tls.checked = true;
+ tls.disabled = true;
+ if (['tuic', 'hysteria2'].includes(type) && !`${tls_alpn.getValue()}`)
+ tls_alpn.setValue('h3');
+ } else {
+ tls.removeAttribute('disabled');
+ }
+
+ // Force disabled
+ if (['trusttunnel'].includes(type)) {
+ tls_alpn.node.querySelector('input').disabled = true;
+ tls_alpn.setValue('');
+ } else {
+ tls_alpn.node.querySelector('input').removeAttribute('disabled');
+ }
+ if (!['vmess', 'vless', 'trojan'].includes(type)) {
+ tls_reality.checked = false;
+ tls_reality.disabled = true;
+ } else {
+ tls_reality.removeAttribute('disabled');
+ }
+
+ return true;
+ }
+ o.depends({type: /^(http|socks|mixed|vmess|vless|trojan|anytls|tuic|hysteria2|trusttunnel)$/});
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', form.DynamicList, 'tls_alpn', _('TLS ALPN'),
+ _('List of supported application level protocols, in order of preference.'));
+ o.depends('tls', '1');
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', form.Value, 'tls_cert_path', _('Certificate path'),
+ _('The %s public key, in PEM format.').format(_('Server')));
+ o.value('/etc/fchomo/certs/server_publickey.pem');
+ o.depends({tls: '1', tls_reality: '0'});
+ o.rmempty = false;
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', form.Button, '_upload_cert', _('Upload certificate'),
+ _('Save your configuration before uploading files!'));
+ o.inputstyle = 'action';
+ o.inputtitle = _('Upload...');
+ o.depends({tls: '1', tls_cert_path: '/etc/fchomo/certs/server_publickey.pem'});
+ o.onclick = L.bind(hm.uploadCertificate, o, _('certificate'), 'server_publickey');
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', form.Value, 'tls_key_path', _('Key path'),
+ _('The %s private key, in PEM format.').format(_('Server')));
+ o.value('/etc/fchomo/certs/server_privatekey.pem');
+ o.rmempty = false;
+ o.depends({tls: '1', tls_cert_path: /.+/});
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', form.Button, '_upload_key', _('Upload key'),
+ _('Save your configuration before uploading files!'));
+ o.inputstyle = 'action';
+ o.inputtitle = _('Upload...');
+ o.depends({tls: '1', tls_key_path: '/etc/fchomo/certs/server_privatekey.pem'});
+ o.onclick = L.bind(hm.uploadCertificate, o, _('private key'), 'server_privatekey');
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', form.ListValue, 'tls_client_auth_type', _('Client Auth type') + _(' (mTLS)'));
+ o.default = hm.tls_client_auth_types[0][0];
+ hm.tls_client_auth_types.forEach((res) => {
+ o.value.apply(o, res);
+ })
+ o.depends({tls: '1', type: /^(http|socks|mixed|vmess|vless|trojan|anytls|hysteria2|tuic|trusttunnel)$/});
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', form.Value, 'tls_client_auth_cert_path', _('Client Auth Certificate path') + _(' (mTLS)'),
+ _('The %s public key, in PEM format.').format(_('Client')));
+ o.value('/etc/fchomo/certs/client_publickey.pem');
+ o.validate = function(/* ... */) {
+ return hm.validateMTLSClientAuth.call(this, 'tls_client_auth_type', ...arguments);
+ }
+ o.depends({tls: '1', type: /^(http|socks|mixed|vmess|vless|trojan|anytls|hysteria2|tuic|trusttunnel)$/});
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', form.Button, '_upload_client_auth_cert', _('Upload certificate') + _(' (mTLS)'),
+ _('Save your configuration before uploading files!'));
+ o.inputstyle = 'action';
+ o.inputtitle = _('Upload...');
+ o.depends({tls: '1', tls_client_auth_cert_path: '/etc/fchomo/certs/client_publickey.pem'});
+ o.onclick = L.bind(hm.uploadCertificate, o, _('certificate'), 'client_publickey');
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', hm.GenText, 'tls_ech_key', _('ECH key'));
+ o.placeholder = '-----BEGIN ECH KEYS-----\nACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK\nmadSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz\ndC5jb20AAA==\n-----END ECH KEYS-----';
+ o.hm_placeholder = 'outer-sni.any.domain';
+ o.cols = 30;
+ o.rows = 2;
+ o.hm_options = {
+ type: 'ech-keypair',
+ params: '',
+ callback: function(result) {
+ return [
+ [this.option, result.ech_key],
+ ['tls_ech_config', result.ech_cfg]
+ ]
+ }
+ }
+ o.renderWidget = function(section_id, option_index, cfgvalue) {
+ let node = hm.TextValue.prototype.renderWidget.call(this, section_id, option_index, cfgvalue);
+ const cbid = this.cbid(section_id) + '._outer_sni';
+
+ node.appendChild(E('div', { 'class': 'control-group' }, [
+ E('input', {
+ id: cbid,
+ class: 'cbi-input-text',
+ style: 'width: 10em',
+ placeholder: this.hm_placeholder
+ }),
+ E('button', {
+ class: 'cbi-button cbi-button-add',
+ click: ui.createHandlerFn(this, () => {
+ this.hm_options.params = document.getElementById(cbid).value;
+
+ return hm.handleGenKey.call(this, this.hm_options);
+ })
+ }, [ _('Generate') ])
+ ]));
+
+ return node;
+ }
+ o.depends({tls: '1', type: /^(http|socks|mixed|vmess|vless|trojan|anytls|hysteria2|tuic|trusttunnel)$/});
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', hm.CopyValue, 'tls_ech_config', _('ECH config'),
+ _('This ECH parameter needs to be added to the HTTPS record of the domain.'));
+ o.placeholder = 'AEn+DQBFKwAgACABWIHUGj4u+PIggYXcR5JF0gYk3dCRioBW8uJq9H4mKAAIAAEAAQABAANAEnB1YmxpYy50bHMtZWNoLmRldgAA';
+ o.depends({tls: '1', type: /^(http|socks|mixed|vmess|vless|trojan|anytls|hysteria2|tuic|trusttunnel)$/});
+ o.modalonly = true;
+
+ // uTLS fields
+ o = s.taboption('field_tls', form.Flag, 'tls_reality', _('REALITY'));
+ o.default = o.disabled;
+ o.depends('tls', '1');
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', form.Value, 'tls_reality_dest', _('REALITY handshake server'));
+ o.datatype = 'hostport';
+ o.placeholder = 'cloud.tencent.com:443';
+ o.rmempty = false;
+ o.depends('tls_reality', '1');
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', hm.GenValue, 'tls_reality_private_key', _('REALITY private key'));
+ o.hm_options = {
+ type: 'reality-keypair',
+ callback: function(result) {
+ return [
+ [this.option, result.private_key],
+ ['tls_reality_public_key', result.public_key]
+ ]
+ }
+ }
+ o.password = true;
+ o.rmempty = false;
+ o.depends('tls_reality', '1');
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', hm.CopyValue, 'tls_reality_public_key', _('REALITY public key'));
+ o.depends('tls_reality', '1');
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', form.DynamicList, 'tls_reality_short_id', _('REALITY short ID'));
+ //o.value('', '""');
+ o.rmempty = false;
+ o.depends('tls_reality', '1');
+ o.modalonly = true;
+
+ o = s.taboption('field_tls', 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;
+
+ /* Transport fields */
+ o = s.taboption('field_general', form.Flag, 'transport_enabled', _('Transport'));
+ o.default = o.disabled;
+ o.depends({type: /^(vmess|vless|trojan)$/});
+ o.modalonly = true;
+
+ o = s.taboption('field_transport', form.ListValue, 'transport_type', _('Transport type'));
+ o.value('grpc', _('gRPC'));
+ o.value('ws', _('WebSocket'));
+ o.validate = function(section_id, value) {
+ const type = this.section.getOption('type').formvalue(section_id);
+
+ switch (type) {
+ case 'vmess':
+ case 'vless':
+ if (!['http', 'h2', 'grpc', 'ws'].includes(value))
+ return _('Expecting: only support %s.').format(_('HTTP') +
+ ' / ' + _('HTTPUpgrade') +
+ ' / ' + _('gRPC') +
+ ' / ' + _('WebSocket'));
+ break;
+ case 'trojan':
+ if (!['grpc', 'ws'].includes(value))
+ return _('Expecting: only support %s.').format(_('gRPC') +
+ ' / ' + _('WebSocket'));
+ break;
+ default:
+ break;
+ }
+
+ return true;
+ }
+ o.depends('transport_enabled', '1');
+ o.modalonly = true;
+
+ o = s.taboption('field_transport', form.Value, 'transport_path', _('Request path'));
+ o.placeholder = '/';
+ o.default = '/';
+ o.rmempty = false;
+ o.depends({transport_enabled: '1', transport_type: 'ws'});
+ o.modalonly = true;
+
+ o = s.taboption('field_transport', form.Value, 'transport_grpc_servicename', _('gRPC service name'));
+ o.placeholder = 'GunService';
+ o.rmempty = false;
+ o.depends({transport_enabled: '1', transport_type: 'grpc'});
+ o.modalonly = true;
+}
+
+return baseclass.extend({
+ /* Method */
+ // render
+ renderListeners,
+});
diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js
index 2d55c9c3ee..0cf77708fc 100644
--- a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js
+++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js
@@ -795,7 +795,7 @@ function renderRules(s, uciconfig) {
UIEl.setValue(rule.toString('json'));
}
o.write = function() {};
- //o.depends('SUB-RULE', '');
+ //o.depends('SUB-RULE', ''); // work on subrules not rules
o.editable = true;
o = s.option(form.Flag, 'src', _('src'),
diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/inbound.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/inbound.js
new file mode 100644
index 0000000000..1dd4d770ae
--- /dev/null
+++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/inbound.js
@@ -0,0 +1,38 @@
+'use strict';
+'require form';
+'require uci';
+'require ui';
+'require view';
+
+'require fchomo as hm';
+'require fchomo.listeners as lsnr'
+
+return view.extend({
+ load() {
+ return Promise.all([
+ uci.load('fchomo')
+ ]);
+ },
+
+ render(data) {
+ let m, s, o;
+
+ m = new form.Map('fchomo', _('Edit inbound'));
+
+ /* Inbound settings START */
+ s = m.section(hm.GridSection, 'inbound', null);
+ s.addremove = true;
+ s.rowcolors = true;
+ s.sortable = true;
+ s.nodescriptions = true;
+ s.hm_modaltitle = [ _('Inbound'), _('Add a inbound') ];
+ s.hm_prefmt = hm.glossary[s.sectiontype].prefmt;
+ s.hm_field = hm.glossary[s.sectiontype].field;
+ s.hm_lowcase_only = false;
+
+ lsnr.renderListeners(s, data[0], true);
+ /* Inbound settings END */
+
+ return m.render();
+ }
+});
diff --git a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js
index 54b6f262af..f0e1f6cb33 100644
--- a/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js
+++ b/small/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js
@@ -255,13 +255,13 @@ return view.extend({
/* hm.validateAuth */
so = ss.taboption('field_general', form.Value, 'username', _('Username'));
so.validate = hm.validateAuthUsername;
- so.depends({type: /^(http|socks5|mieru|ssh)$/});
+ so.depends({type: /^(http|socks5|mieru|trusttunnel|ssh)$/});
so.modalonly = true;
so = ss.taboption('field_general', form.Value, 'password', _('Password'));
so.password = true;
so.validate = hm.validateAuthPassword;
- so.depends({type: /^(http|socks5|mieru|trojan|anytls|hysteria2|tuic|ssh)$/});
+ so.depends({type: /^(http|socks5|mieru|trojan|anytls|hysteria2|tuic|trusttunnel|ssh)$/});
so.modalonly = true;
so = ss.taboption('field_general', hm.TextValue, 'headers', _('HTTP header'));
@@ -375,6 +375,12 @@ return view.extend({
so.depends('type', 'mieru');
so.modalonly = true;
+ so = ss.taboption('field_general', form.Value, 'mieru_traffic_pattern', _('Traffic pattern'),
+ _('A base64 string is used to fine-tune network behavior.Padding-Length and one Padding-Interval, infinite concatenation.') + '' +
- _('The first padding must have a probability of 100% and at least 35 bytes.'));
- hm.vless_encryption.paddings.forEach((res) => {
- o.value.apply(o, res);
- })
- initVlessEncryptionOption(o, 'paddings');
- o.validate = function(section_id, value) {
- if (!value)
- return true;
-
- if (!value.match(/^\d+(-\d+){2}$/))
- return _('Expecting: %s').format('^\\d+(-\\d+){2}$');
-
- return true;
- }
- o.allowduplicates = true;
- o.depends('vless_decryption', '1');
- o.modalonly = true;
-
- o = s.taboption('field_vless_encryption', hm.GenText, 'vless_encryption_keypairs', _('Keypairs'));
- o.placeholder = '[\n {\n "type": "vless-x25519",\n "server": "cP5Oy9MOpTaBKKE17Pfd56mbb1CIfp5EMpyBYqr2EG8",\n "client": "khEcQMT8j41xWmGYKpZtQ4vd8_9VWyFVmmCDIhRJ-Uk"\n },\n {\n "type": "vless-mlkem768",\n "server": "UHPx3nf-FVxF95byAw0YG025aQNw9HxKej-MiG5AhTcdW_WFpHlTVYQU5NHmXP6tmljSnB2iPmSQ29fisGxEog",\n "client": "h4sdZgCc5-ZefvQ8mZmReOWQdxYb0mwngMdl7pKhYEZZpGWHUPKAmxug87Bgj3GqSHs195QeVpxfrMLNB5J..."\n },\n ...\n]';
- o.rows = 10;
- o.hm_options = {
- type: hm.vless_encryption.keypairs.types[0][0],
- params: '',
- callback: function(result) {
- const section_id = this.section.section;
- const key_type = this.hm_options.type;
-
- let keypair = {"type": key_type, "server": "", "client": ""};
- switch (key_type) {
- case 'vless-x25519':
- keypair.server = result.private_key;
- keypair.client = result.password;
- break;
- case 'vless-mlkem768':
- keypair.server = result.seed;
- keypair.client = result.client;
- break;
- default:
- break;
- }
-
- let keypairs = [];
- try {
- keypairs = JSON.parse(this.formvalue(section_id).trim());
- } catch {}
- if (!Array.isArray(keypairs))
- keypairs = [];
-
- keypairs.push(keypair);
-
- return [
- [this.option, JSON.stringify(keypairs, null, 2)]
- ]
- }
- }
- o.renderWidget = function(section_id, option_index, cfgvalue) {
- let node = hm.TextValue.prototype.renderWidget.call(this, section_id, option_index, cfgvalue);
- const cbid = this.cbid(section_id) + '._keytype_select';
- const selected = this.hm_options.type;
-
- let selectEl = E('select', {
- id: cbid,
- class: 'cbi-input-select',
- style: 'width: 10em',
- });
-
- hm.vless_encryption.keypairs.types.forEach(([k, v]) => {
- selectEl.appendChild(E('option', {
- 'value': k,
- 'selected': (k === selected) ? '' : null
- }, [ v ]));
- });
-
- node.appendChild(E('div', { 'class': 'control-group' }, [
- selectEl,
- E('button', {
- class: 'cbi-button cbi-button-add',
- click: ui.createHandlerFn(this, () => {
- this.hm_options.type = document.getElementById(cbid).value;
-
- return hm.handleGenKey.call(this, this.hm_options);
- })
- }, [ _('Generate') ])
- ]));
-
- return node;
- }
- o.load = function(section_id) {
- return JSON.stringify(new VlessEncryption(uci.get(data[0], section_id, 'vless_encryption_hmpayload'))['keypairs'], null, 2);
- }
- o.validate = function(section_id, value) {
- let result = hm.validateJson.call(this, section_id, value);
-
- if (result === true) {
- let keypairs = JSON.parse(value.trim());
-
- if (Array.isArray(keypairs) && keypairs.length >= 1) {
- let UIEl = this.section.getUIElement(section_id, 'vless_encryption_hmpayload');
- let newpayload = new VlessEncryption(UIEl.getValue()).setKey('keypairs', keypairs);
-
- UIEl.setValue(newpayload.toString());
-
- [
- ['server', '_vless_encryption_decryption'],
- ['client', '_vless_encryption_encryption']
- ].forEach(([side, option]) => {
- UIEl = this.section.getUIElement(section_id, option);
- UIEl.setValue(newpayload.toString('mihomo', side));
- });
- } else
- return _('Expecting: %s').format(_('least one keypair required'));
-
- return true;
- } else
- return result;
- }
- o.rmempty = false;
- o.depends('vless_decryption', '1');
- o.modalonly = true;
-
- /* TLS fields */
- o = s.taboption('field_general', form.Flag, 'tls', _('TLS'));
- o.default = o.disabled;
- o.validate = function(section_id, value) {
- 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 (['trojan', 'anytls', 'tuic', 'hysteria2'].includes(type)) {
- tls.checked = true;
- tls.disabled = true;
- if (['tuic', 'hysteria2'].includes(type) && !`${tls_alpn.getValue()}`)
- tls_alpn.setValue('h3');
- } else {
- tls.removeAttribute('disabled');
- }
-
- // Force disabled
- if (!['vmess', 'vless', 'trojan'].includes(type)) {
- tls_reality.checked = false;
- tls_reality.disabled = true;
- } else {
- tls_reality.removeAttribute('disabled');
- }
-
- return true;
- }
- o.depends({type: /^(http|socks|mixed|vmess|vless|trojan|anytls|tuic|hysteria2)$/});
- o.modalonly = true;
-
- o = s.taboption('field_tls', form.DynamicList, 'tls_alpn', _('TLS ALPN'),
- _('List of supported application level protocols, in order of preference.'));
- o.depends('tls', '1');
- o.modalonly = true;
-
- o = s.taboption('field_tls', form.Value, 'tls_cert_path', _('Certificate path'),
- _('The %s public key, in PEM format.').format(_('Server')));
- o.value('/etc/fchomo/certs/server_publickey.pem');
- o.depends({tls: '1', tls_reality: '0'});
- o.rmempty = false;
- o.modalonly = true;
-
- o = s.taboption('field_tls', form.Button, '_upload_cert', _('Upload certificate'),
- _('Save your configuration before uploading files!'));
- o.inputstyle = 'action';
- o.inputtitle = _('Upload...');
- o.depends({tls: '1', tls_cert_path: '/etc/fchomo/certs/server_publickey.pem'});
- o.onclick = L.bind(hm.uploadCertificate, o, _('certificate'), 'server_publickey');
- o.modalonly = true;
-
- o = s.taboption('field_tls', form.Value, 'tls_key_path', _('Key path'),
- _('The %s private key, in PEM format.').format(_('Server')));
- o.value('/etc/fchomo/certs/server_privatekey.pem');
- o.rmempty = false;
- o.depends({tls: '1', tls_cert_path: /.+/});
- o.modalonly = true;
-
- o = s.taboption('field_tls', form.Button, '_upload_key', _('Upload key'),
- _('Save your configuration before uploading files!'));
- o.inputstyle = 'action';
- o.inputtitle = _('Upload...');
- o.depends({tls: '1', tls_key_path: '/etc/fchomo/certs/server_privatekey.pem'});
- o.onclick = L.bind(hm.uploadCertificate, o, _('private key'), 'server_privatekey');
- o.modalonly = true;
-
- o = s.taboption('field_tls', form.ListValue, 'tls_client_auth_type', _('Client Auth type') + _(' (mTLS)'));
- o.default = hm.tls_client_auth_types[0][0];
- hm.tls_client_auth_types.forEach((res) => {
- o.value.apply(o, res);
- })
- o.depends({tls: '1', type: /^(http|socks|mixed|vmess|vless|trojan|anytls|hysteria2|tuic)$/});
- o.modalonly = true;
-
- o = s.taboption('field_tls', form.Value, 'tls_client_auth_cert_path', _('Client Auth Certificate path') + _(' (mTLS)'),
- _('The %s public key, in PEM format.').format(_('Client')));
- o.value('/etc/fchomo/certs/client_publickey.pem');
- o.validate = function(/* ... */) {
- return hm.validateMTLSClientAuth.call(this, 'tls_client_auth_type', ...arguments);
- }
- o.depends({tls: '1', type: /^(http|socks|mixed|vmess|vless|trojan|anytls|hysteria2|tuic)$/});
- o.modalonly = true;
-
- o = s.taboption('field_tls', form.Button, '_upload_client_auth_cert', _('Upload certificate') + _(' (mTLS)'),
- _('Save your configuration before uploading files!'));
- o.inputstyle = 'action';
- o.inputtitle = _('Upload...');
- o.depends({tls: '1', tls_client_auth_cert_path: '/etc/fchomo/certs/client_publickey.pem'});
- o.onclick = L.bind(hm.uploadCertificate, o, _('certificate'), 'client_publickey');
- o.modalonly = true;
-
- o = s.taboption('field_tls', hm.GenText, 'tls_ech_key', _('ECH key'));
- o.placeholder = '-----BEGIN ECH KEYS-----\nACATwY30o/RKgD6hgeQxwrSiApLaCgU+HKh7B6SUrAHaDwBD/g0APwAAIAAgHjzK\nmadSJjYQIf9o1N5GXjkW4DEEeb17qMxHdwMdNnwADAABAAEAAQACAAEAAwAIdGVz\ndC5jb20AAA==\n-----END ECH KEYS-----';
- o.hm_placeholder = 'outer-sni.any.domain';
- o.cols = 30;
- o.rows = 2;
- o.hm_options = {
- type: 'ech-keypair',
- params: '',
- callback: function(result) {
- return [
- [this.option, result.ech_key],
- ['tls_ech_config', result.ech_cfg]
- ]
- }
- }
- o.renderWidget = function(section_id, option_index, cfgvalue) {
- let node = hm.TextValue.prototype.renderWidget.call(this, section_id, option_index, cfgvalue);
- const cbid = this.cbid(section_id) + '._outer_sni';
-
- node.appendChild(E('div', { 'class': 'control-group' }, [
- E('input', {
- id: cbid,
- class: 'cbi-input-text',
- style: 'width: 10em',
- placeholder: this.hm_placeholder
- }),
- E('button', {
- class: 'cbi-button cbi-button-add',
- click: ui.createHandlerFn(this, () => {
- this.hm_options.params = document.getElementById(cbid).value;
-
- return hm.handleGenKey.call(this, this.hm_options);
- })
- }, [ _('Generate') ])
- ]));
-
- return node;
- }
- o.depends({tls: '1', type: /^(http|socks|mixed|vmess|vless|trojan|anytls|hysteria2|tuic)$/});
- o.modalonly = true;
-
- o = s.taboption('field_tls', hm.CopyValue, 'tls_ech_config', _('ECH config'),
- _('This ECH parameter needs to be added to the HTTPS record of the domain.'));
- o.placeholder = 'AEn+DQBFKwAgACABWIHUGj4u+PIggYXcR5JF0gYk3dCRioBW8uJq9H4mKAAIAAEAAQABAANAEnB1YmxpYy50bHMtZWNoLmRldgAA';
- o.depends({tls: '1', type: /^(http|socks|mixed|vmess|vless|trojan|anytls|hysteria2|tuic)$/});
- o.modalonly = true;
-
- // uTLS fields
- o = s.taboption('field_tls', form.Flag, 'tls_reality', _('REALITY'));
- o.default = o.disabled;
- o.depends('tls', '1');
- o.modalonly = true;
-
- o = s.taboption('field_tls', form.Value, 'tls_reality_dest', _('REALITY handshake server'));
- o.datatype = 'hostport';
- o.placeholder = 'cloud.tencent.com:443';
- o.rmempty = false;
- o.depends('tls_reality', '1');
- o.modalonly = true;
-
- o = s.taboption('field_tls', hm.GenValue, 'tls_reality_private_key', _('REALITY private key'));
- o.hm_options = {
- type: 'reality-keypair',
- callback: function(result) {
- return [
- [this.option, result.private_key],
- ['tls_reality_public_key', result.public_key]
- ]
- }
- }
- o.password = true;
- o.rmempty = false;
- o.depends('tls_reality', '1');
- o.modalonly = true;
-
- o = s.taboption('field_tls', hm.CopyValue, 'tls_reality_public_key', _('REALITY public key'));
- o.depends('tls_reality', '1');
- o.modalonly = true;
-
- o = s.taboption('field_tls', form.DynamicList, 'tls_reality_short_id', _('REALITY short ID'));
- //o.value('', '""');
- o.rmempty = false;
- o.depends('tls_reality', '1');
- o.modalonly = true;
-
- o = s.taboption('field_tls', 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;
-
- /* Transport fields */
- o = s.taboption('field_general', form.Flag, 'transport_enabled', _('Transport'));
- o.default = o.disabled;
- o.depends({type: /^(vmess|vless|trojan)$/});
- o.modalonly = true;
-
- o = s.taboption('field_transport', form.ListValue, 'transport_type', _('Transport type'));
- o.value('grpc', _('gRPC'));
- o.value('ws', _('WebSocket'));
- o.validate = function(section_id, value) {
- const type = this.section.getOption('type').formvalue(section_id);
-
- switch (type) {
- case 'vmess':
- case 'vless':
- if (!['http', 'h2', 'grpc', 'ws'].includes(value))
- return _('Expecting: only support %s.').format(_('HTTP') +
- ' / ' + _('HTTPUpgrade') +
- ' / ' + _('gRPC') +
- ' / ' + _('WebSocket'));
- break;
- case 'trojan':
- if (!['grpc', 'ws'].includes(value))
- return _('Expecting: only support %s.').format(_('gRPC') +
- ' / ' + _('WebSocket'));
- break;
- default:
- break;
- }
-
- return true;
- }
- o.depends('transport_enabled', '1');
- o.modalonly = true;
-
- o = s.taboption('field_transport', form.Value, 'transport_path', _('Request path'));
- o.placeholder = '/';
- o.default = '/';
- o.rmempty = false;
- o.depends({transport_enabled: '1', transport_type: 'ws'});
- o.modalonly = true;
-
- o = s.taboption('field_transport', form.Value, 'transport_grpc_servicename', _('gRPC service name'));
- o.placeholder = 'GunService';
- o.rmempty = false;
- o.depends({transport_enabled: '1', transport_type: 'grpc'});
- o.modalonly = true;
+ lsnr.renderListeners(s, data[0], false);
/* Server settings END */
return m.render();
diff --git a/small/luci-app-fchomo/po/templates/fchomo.pot b/small/luci-app-fchomo/po/templates/fchomo.pot
index 76959ec5d4..861bc01a2d 100644
--- a/small/luci-app-fchomo/po/templates/fchomo.pot
+++ b/small/luci-app-fchomo/po/templates/fchomo.pot
@@ -5,30 +5,30 @@ msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "%s log"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:223
-#: htdocs/luci-static/resources/fchomo.js:224
-#: htdocs/luci-static/resources/fchomo.js:225
-#: htdocs/luci-static/resources/fchomo.js:226
-#: htdocs/luci-static/resources/fchomo.js:227
-#: htdocs/luci-static/resources/fchomo.js:228
+#: htdocs/luci-static/resources/fchomo.js:229
+#: htdocs/luci-static/resources/fchomo.js:230
+#: htdocs/luci-static/resources/fchomo.js:231
+#: htdocs/luci-static/resources/fchomo.js:232
+#: htdocs/luci-static/resources/fchomo.js:233
+#: htdocs/luci-static/resources/fchomo.js:234
msgid "%s ports"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:588
-#: htdocs/luci-static/resources/fchomo.js:591
+#: htdocs/luci-static/resources/fchomo.js:594
+#: htdocs/luci-static/resources/fchomo.js:597
#: htdocs/luci-static/resources/view/fchomo/client.js:315
msgid "(Imported)"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:840
+#: htdocs/luci-static/resources/fchomo/listeners.js:848
+#: htdocs/luci-static/resources/fchomo/listeners.js:857
#: htdocs/luci-static/resources/view/fchomo/global.js:543
#: htdocs/luci-static/resources/view/fchomo/global.js:549
-#: htdocs/luci-static/resources/view/fchomo/node.js:1028
-#: htdocs/luci-static/resources/view/fchomo/node.js:1034
#: htdocs/luci-static/resources/view/fchomo/node.js:1042
#: htdocs/luci-static/resources/view/fchomo/node.js:1048
-#: htdocs/luci-static/resources/view/fchomo/server.js:846
-#: htdocs/luci-static/resources/view/fchomo/server.js:854
-#: htdocs/luci-static/resources/view/fchomo/server.js:863
+#: htdocs/luci-static/resources/view/fchomo/node.js:1056
+#: htdocs/luci-static/resources/view/fchomo/node.js:1062
msgid "(mTLS)"
msgstr ""
@@ -39,19 +39,19 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1056
#: htdocs/luci-static/resources/view/fchomo/client.js:1057
#: htdocs/luci-static/resources/view/fchomo/client.js:1278
-#: htdocs/luci-static/resources/view/fchomo/node.js:1734
-#: htdocs/luci-static/resources/view/fchomo/node.js:1740
+#: htdocs/luci-static/resources/view/fchomo/node.js:1748
#: htdocs/luci-static/resources/view/fchomo/node.js:1754
-#: htdocs/luci-static/resources/view/fchomo/node.js:1760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1768
+#: htdocs/luci-static/resources/view/fchomo/node.js:1774
msgid "-- Please choose --"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:375
+#: htdocs/luci-static/resources/fchomo.js:381
msgid "0-RTT reuse."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:372
-#: htdocs/luci-static/resources/fchomo.js:376
+#: htdocs/luci-static/resources/fchomo.js:378
+#: htdocs/luci-static/resources/fchomo.js:382
msgid "1-RTT only."
msgstr ""
@@ -59,15 +59,15 @@ msgstr ""
msgid "163Music"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:322
+#: htdocs/luci-static/resources/fchomo.js:328
msgid "2022-blake3-aes-128-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:323
+#: htdocs/luci-static/resources/fchomo.js:329
msgid "2022-blake3-aes-256-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:324
+#: htdocs/luci-static/resources/fchomo.js:330
msgid "2022-blake3-chacha20-poly1305"
msgstr ""
@@ -75,14 +75,22 @@ msgstr ""
msgid "0 or 1 only."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1035
+#: htdocs/luci-static/resources/fchomo/listeners.js:818
+#: htdocs/luci-static/resources/fchomo/listeners.js:833
+#: htdocs/luci-static/resources/fchomo/listeners.js:858
#: htdocs/luci-static/resources/view/fchomo/node.js:1049
-#: htdocs/luci-static/resources/view/fchomo/server.js:824
-#: htdocs/luci-static/resources/view/fchomo/server.js:839
-#: htdocs/luci-static/resources/view/fchomo/server.js:864
+#: htdocs/luci-static/resources/view/fchomo/node.js:1063
msgid "Save your configuration before uploading files!"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:239
+#: htdocs/luci-static/resources/view/fchomo/node.js:379
+msgid ""
+"A base64 string is used to fine-tune network behavior.* will be used if empty."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:704
+#: htdocs/luci-static/resources/fchomo.js:710
msgid "Cancel"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1007
+#: htdocs/luci-static/resources/view/fchomo/node.js:1021
msgid "Cert fingerprint"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1008
+#: htdocs/luci-static/resources/view/fchomo/node.js:1022
msgid ""
"Certificate fingerprint. Used to implement SSL Pinning and prevent MitM."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1028
-#: htdocs/luci-static/resources/view/fchomo/server.js:816
+#: htdocs/luci-static/resources/fchomo/listeners.js:810
+#: htdocs/luci-static/resources/view/fchomo/node.js:1042
msgid "Certificate path"
msgstr ""
@@ -419,16 +433,16 @@ msgstr ""
msgid "China list version"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:213
+#: htdocs/luci-static/resources/fchomo/listeners.js:306
#: htdocs/luci-static/resources/view/fchomo/node.js:332
-#: htdocs/luci-static/resources/view/fchomo/node.js:385
+#: htdocs/luci-static/resources/view/fchomo/node.js:391
#: htdocs/luci-static/resources/view/fchomo/node.js:641
-#: htdocs/luci-static/resources/view/fchomo/server.js:269
-#: htdocs/luci-static/resources/view/fchomo/server.js:356
msgid "Chipher"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:394
-#: htdocs/luci-static/resources/view/fchomo/server.js:365
+#: htdocs/luci-static/resources/fchomo/listeners.js:315
+#: htdocs/luci-static/resources/view/fchomo/node.js:400
msgid "Chipher must be enabled if obfuscate downlink is disabled."
msgstr ""
@@ -442,29 +456,29 @@ msgid ""
"to download the latest initial package."
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:633
+#: htdocs/luci-static/resources/fchomo/listeners.js:849
#: htdocs/luci-static/resources/view/fchomo/global.js:550
-#: htdocs/luci-static/resources/view/fchomo/node.js:905
-#: htdocs/luci-static/resources/view/fchomo/node.js:1029
+#: htdocs/luci-static/resources/view/fchomo/node.js:916
#: htdocs/luci-static/resources/view/fchomo/node.js:1043
-#: htdocs/luci-static/resources/view/fchomo/server.js:645
-#: htdocs/luci-static/resources/view/fchomo/server.js:855
+#: htdocs/luci-static/resources/view/fchomo/node.js:1057
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:22
msgid "Client"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:854
+#: htdocs/luci-static/resources/fchomo/listeners.js:848
msgid "Client Auth Certificate path"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:846
+#: htdocs/luci-static/resources/fchomo/listeners.js:840
msgid "Client Auth type"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1074
+#: htdocs/luci-static/resources/view/fchomo/node.js:1088
msgid "Client fingerprint"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:352
+#: htdocs/luci-static/resources/fchomo/listeners.js:302
msgid "Client key"
msgstr ""
@@ -476,22 +490,21 @@ msgstr ""
msgid "Collecting data..."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:221
-#: htdocs/luci-static/resources/fchomo.js:222
+#: htdocs/luci-static/resources/fchomo.js:227
+#: htdocs/luci-static/resources/fchomo.js:228
msgid "Common ports (bypass P2P traffic)"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1303
+#: htdocs/luci-static/resources/fchomo.js:1309
msgid "Complete"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1555
+#: htdocs/luci-static/resources/view/fchomo/node.js:1569
msgid "Configuration Items"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:515
-#: htdocs/luci-static/resources/view/fchomo/node.js:717
-#: htdocs/luci-static/resources/view/fchomo/server.js:454
+#: htdocs/luci-static/resources/fchomo/listeners.js:537
+#: htdocs/luci-static/resources/view/fchomo/node.js:854
msgid "Congestion controller"
msgstr ""
@@ -499,19 +512,19 @@ msgstr ""
msgid "Connection check"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:573
+#: htdocs/luci-static/resources/fchomo.js:579
msgid "Content copied to clipboard!"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:670
-#: htdocs/luci-static/resources/view/fchomo/node.js:1465
-#: htdocs/luci-static/resources/view/fchomo/node.js:1491
+#: htdocs/luci-static/resources/view/fchomo/node.js:1479
+#: htdocs/luci-static/resources/view/fchomo/node.js:1505
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:332
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:358
msgid "Content will not be verified, Please make sure you enter it correctly."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1464
+#: htdocs/luci-static/resources/view/fchomo/node.js:1478
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:331
msgid "Contents"
msgstr ""
@@ -520,7 +533,7 @@ msgstr ""
msgid "Contents have been saved."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:575
+#: htdocs/luci-static/resources/fchomo.js:581
msgid "Copy"
msgstr ""
@@ -536,7 +549,7 @@ msgstr ""
msgid "Custom Direct List"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1526
+#: htdocs/luci-static/resources/view/fchomo/node.js:1540
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:393
msgid "Custom HTTP header."
msgstr ""
@@ -545,8 +558,8 @@ msgstr ""
msgid "Custom Proxy List"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:407
-#: htdocs/luci-static/resources/view/fchomo/server.js:378
+#: htdocs/luci-static/resources/fchomo/listeners.js:328
+#: htdocs/luci-static/resources/view/fchomo/node.js:413
msgid "Custom byte layout"
msgstr ""
@@ -555,7 +568,7 @@ msgid ""
"Custom internal hosts. Support yaml or json format."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:170
+#: htdocs/luci-static/resources/fchomo.js:175
msgid "DIRECT"
msgstr ""
@@ -572,7 +585,7 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1428
#: htdocs/luci-static/resources/view/fchomo/client.js:1437
#: htdocs/luci-static/resources/view/fchomo/node.js:712
-#: htdocs/luci-static/resources/view/fchomo/node.js:792
+#: htdocs/luci-static/resources/view/fchomo/node.js:795
msgid "DNS server"
msgstr ""
@@ -600,15 +613,15 @@ msgstr ""
msgid "Default DNS server"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:763
+#: htdocs/luci-static/resources/view/fchomo/node.js:766
msgid "Destination addresses allowed to be forwarded via Wireguard."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1733
+#: htdocs/luci-static/resources/view/fchomo/node.js:1747
msgid "Destination provider"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1739
+#: htdocs/luci-static/resources/view/fchomo/node.js:1753
msgid "Destination proxy node"
msgstr ""
@@ -616,8 +629,8 @@ msgstr ""
msgid "Dial fields"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1746
-#: htdocs/luci-static/resources/view/fchomo/node.js:1766
+#: htdocs/luci-static/resources/view/fchomo/node.js:1760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1780
msgid "Different chain head/tail"
msgstr ""
@@ -637,9 +650,9 @@ msgstr ""
msgid "Direct MAC-s"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:193
#: htdocs/luci-static/resources/view/fchomo/global.js:403
#: htdocs/luci-static/resources/view/fchomo/node.js:298
-#: htdocs/luci-static/resources/view/fchomo/server.js:249
msgid "Disable"
msgstr ""
@@ -655,7 +668,7 @@ msgstr ""
msgid "Disable ICMP Forwarding"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:956
+#: htdocs/luci-static/resources/view/fchomo/node.js:967
msgid "Disable SNI"
msgstr ""
@@ -681,46 +694,46 @@ msgstr ""
msgid "Domain"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:957
+#: htdocs/luci-static/resources/view/fchomo/node.js:968
msgid "Donot send server name in ClientHello."
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1577
-#: htdocs/luci-static/resources/view/fchomo/node.js:1021
-#: htdocs/luci-static/resources/view/fchomo/node.js:1595
+#: htdocs/luci-static/resources/view/fchomo/node.js:1035
+#: htdocs/luci-static/resources/view/fchomo/node.js:1609
msgid "Donot verifying server certificate."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1274
+#: htdocs/luci-static/resources/view/fchomo/node.js:1288
msgid "Download bandwidth"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1275
+#: htdocs/luci-static/resources/view/fchomo/node.js:1289
msgid "Download bandwidth in Mbps."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1182
+#: htdocs/luci-static/resources/fchomo.js:1188
msgid "Download failed: %s"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1180
+#: htdocs/luci-static/resources/fchomo.js:1186
msgid "Download successful."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:156
+#: htdocs/luci-static/resources/fchomo.js:161
msgid "Dual stack"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1068
+#: htdocs/luci-static/resources/view/fchomo/node.js:1082
msgid "ECH HTTPS record query servername"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1062
-#: htdocs/luci-static/resources/view/fchomo/server.js:912
+#: htdocs/luci-static/resources/fchomo/listeners.js:906
+#: htdocs/luci-static/resources/view/fchomo/node.js:1076
msgid "ECH config"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:871
+#: htdocs/luci-static/resources/fchomo/listeners.js:865
msgid "ECH key"
msgstr ""
@@ -736,14 +749,18 @@ msgstr ""
msgid "ETag support"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1187
+#: htdocs/luci-static/resources/view/fchomo/node.js:1201
msgid "Early Data first packet length limit."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1193
+#: htdocs/luci-static/resources/view/fchomo/node.js:1207
msgid "Early Data header name"
msgstr ""
+#: htdocs/luci-static/resources/view/fchomo/inbound.js:20
+msgid "Edit inbound"
+msgstr ""
+
#: htdocs/luci-static/resources/view/fchomo/node.js:203
msgid "Edit node"
msgstr ""
@@ -752,15 +769,16 @@ msgstr ""
msgid "Edit ruleset"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1462
+#: htdocs/luci-static/resources/view/fchomo/node.js:1476
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:329
msgid "Editer"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:366
+#: htdocs/luci-static/resources/fchomo.js:372
msgid "Eliminate encryption header characteristics"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:132
#: htdocs/luci-static/resources/view/fchomo/client.js:931
#: htdocs/luci-static/resources/view/fchomo/client.js:1024
#: htdocs/luci-static/resources/view/fchomo/client.js:1262
@@ -771,12 +789,11 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/global.js:401
#: htdocs/luci-static/resources/view/fchomo/global.js:680
#: htdocs/luci-static/resources/view/fchomo/node.js:234
-#: htdocs/luci-static/resources/view/fchomo/node.js:1435
-#: htdocs/luci-static/resources/view/fchomo/node.js:1631
-#: htdocs/luci-static/resources/view/fchomo/node.js:1720
+#: htdocs/luci-static/resources/view/fchomo/node.js:1449
+#: htdocs/luci-static/resources/view/fchomo/node.js:1645
+#: htdocs/luci-static/resources/view/fchomo/node.js:1734
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:257
-#: htdocs/luci-static/resources/view/fchomo/server.js:157
-#: htdocs/luci-static/resources/view/fchomo/server.js:184
+#: htdocs/luci-static/resources/view/fchomo/server.js:49
msgid "Enable"
msgstr ""
@@ -797,49 +814,49 @@ msgid ""
"conversion for outbound connections"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1056
+#: htdocs/luci-static/resources/view/fchomo/node.js:1070
msgid "Enable ECH"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1262
+#: htdocs/luci-static/resources/view/fchomo/node.js:1276
msgid "Enable TCP Brutal"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1263
+#: htdocs/luci-static/resources/view/fchomo/node.js:1277
msgid "Enable TCP Brutal congestion control algorithm"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1251
+#: htdocs/luci-static/resources/view/fchomo/node.js:1265
msgid "Enable multiplexing only for TCP."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:434
-#: htdocs/luci-static/resources/view/fchomo/server.js:423
+#: htdocs/luci-static/resources/fchomo/listeners.js:373
+#: htdocs/luci-static/resources/view/fchomo/node.js:440
msgid "Enable obfuscate for downlink"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1245
+#: htdocs/luci-static/resources/view/fchomo/node.js:1259
msgid "Enable padding"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1256
+#: htdocs/luci-static/resources/view/fchomo/node.js:1270
msgid "Enable statistic"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:857
-#: htdocs/luci-static/resources/view/fchomo/node.js:1577
+#: htdocs/luci-static/resources/view/fchomo/node.js:868
+#: htdocs/luci-static/resources/view/fchomo/node.js:1591
msgid ""
"Enable the SUoT protocol, requires server support. Conflict with Multiplex."
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:199
#: htdocs/luci-static/resources/view/fchomo/node.js:304
-#: htdocs/luci-static/resources/view/fchomo/server.js:255
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/server.js:608
+#: htdocs/luci-static/resources/fchomo/listeners.js:596
msgid "Encryption method"
msgstr ""
@@ -866,7 +883,7 @@ msgid ""
"if empty."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1689
+#: htdocs/luci-static/resources/view/fchomo/node.js:1703
msgid "Exclude matched node types."
msgstr ""
@@ -877,7 +894,7 @@ msgid ""
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1161
-#: htdocs/luci-static/resources/view/fchomo/node.js:1682
+#: htdocs/luci-static/resources/view/fchomo/node.js:1696
msgid "Exclude nodes that meet keywords or regexps."
msgstr ""
@@ -886,64 +903,65 @@ msgid "Expand/Collapse result"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1121
-#: htdocs/luci-static/resources/view/fchomo/node.js:1667
+#: htdocs/luci-static/resources/view/fchomo/node.js:1681
msgid "Expected HTTP code. 204 will be used if empty."
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1123
-#: htdocs/luci-static/resources/view/fchomo/node.js:1669
+#: htdocs/luci-static/resources/view/fchomo/node.js:1683
msgid "Expected status"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:423
-#: htdocs/luci-static/resources/fchomo.js:426
#: htdocs/luci-static/resources/fchomo.js:429
-#: htdocs/luci-static/resources/fchomo.js:1320
-#: htdocs/luci-static/resources/fchomo.js:1328
-#: htdocs/luci-static/resources/fchomo.js:1336
-#: htdocs/luci-static/resources/fchomo.js:1359
-#: htdocs/luci-static/resources/fchomo.js:1362
-#: htdocs/luci-static/resources/fchomo.js:1369
-#: htdocs/luci-static/resources/fchomo.js:1385
-#: htdocs/luci-static/resources/fchomo.js:1394
-#: htdocs/luci-static/resources/fchomo.js:1406
-#: htdocs/luci-static/resources/fchomo.js:1409
-#: htdocs/luci-static/resources/fchomo.js:1419
-#: htdocs/luci-static/resources/fchomo.js:1431
-#: htdocs/luci-static/resources/fchomo.js:1434
-#: htdocs/luci-static/resources/fchomo.js:1444
-#: htdocs/luci-static/resources/fchomo.js:1454
-#: htdocs/luci-static/resources/fchomo.js:1489
-#: htdocs/luci-static/resources/fchomo.js:1491
-#: htdocs/luci-static/resources/fchomo.js:1504
+#: htdocs/luci-static/resources/fchomo.js:432
+#: htdocs/luci-static/resources/fchomo.js:435
+#: htdocs/luci-static/resources/fchomo.js:1326
+#: htdocs/luci-static/resources/fchomo.js:1334
+#: htdocs/luci-static/resources/fchomo.js:1342
+#: htdocs/luci-static/resources/fchomo.js:1365
+#: htdocs/luci-static/resources/fchomo.js:1368
+#: htdocs/luci-static/resources/fchomo.js:1375
+#: htdocs/luci-static/resources/fchomo.js:1391
+#: htdocs/luci-static/resources/fchomo.js:1400
+#: htdocs/luci-static/resources/fchomo.js:1412
+#: htdocs/luci-static/resources/fchomo.js:1415
+#: htdocs/luci-static/resources/fchomo.js:1425
+#: htdocs/luci-static/resources/fchomo.js:1437
+#: htdocs/luci-static/resources/fchomo.js:1440
+#: htdocs/luci-static/resources/fchomo.js:1450
+#: htdocs/luci-static/resources/fchomo.js:1460
+#: htdocs/luci-static/resources/fchomo.js:1495
+#: htdocs/luci-static/resources/fchomo.js:1497
#: htdocs/luci-static/resources/fchomo.js:1510
-#: htdocs/luci-static/resources/fchomo.js:1517
-#: htdocs/luci-static/resources/fchomo.js:1526
+#: htdocs/luci-static/resources/fchomo.js:1516
+#: htdocs/luci-static/resources/fchomo.js:1523
+#: htdocs/luci-static/resources/fchomo.js:1532
+#: htdocs/luci-static/resources/fchomo/listeners.js:315
+#: htdocs/luci-static/resources/fchomo/listeners.js:359
+#: htdocs/luci-static/resources/fchomo/listeners.js:625
+#: htdocs/luci-static/resources/fchomo/listeners.js:656
+#: htdocs/luci-static/resources/fchomo/listeners.js:757
#: htdocs/luci-static/resources/view/fchomo/client.js:68
#: htdocs/luci-static/resources/view/fchomo/client.js:1018
#: htdocs/luci-static/resources/view/fchomo/client.js:1508
#: htdocs/luci-static/resources/view/fchomo/global.js:880
-#: htdocs/luci-static/resources/view/fchomo/node.js:394
-#: htdocs/luci-static/resources/view/fchomo/node.js:427
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
-#: htdocs/luci-static/resources/view/fchomo/node.js:928
-#: htdocs/luci-static/resources/view/fchomo/node.js:1013
-#: htdocs/luci-static/resources/view/fchomo/node.js:1746
-#: htdocs/luci-static/resources/view/fchomo/node.js:1766
+#: htdocs/luci-static/resources/view/fchomo/node.js:400
+#: htdocs/luci-static/resources/view/fchomo/node.js:433
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
+#: htdocs/luci-static/resources/view/fchomo/node.js:939
+#: htdocs/luci-static/resources/view/fchomo/node.js:1027
+#: htdocs/luci-static/resources/view/fchomo/node.js:1760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1780
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:284
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:298
-#: htdocs/luci-static/resources/view/fchomo/server.js:365
-#: htdocs/luci-static/resources/view/fchomo/server.js:409
-#: htdocs/luci-static/resources/view/fchomo/server.js:637
-#: htdocs/luci-static/resources/view/fchomo/server.js:668
-#: htdocs/luci-static/resources/view/fchomo/server.js:769
msgid "Expecting: %s"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1123
-#: htdocs/luci-static/resources/view/fchomo/node.js:1130
-#: htdocs/luci-static/resources/view/fchomo/server.js:979
-#: htdocs/luci-static/resources/view/fchomo/server.js:986
+#: htdocs/luci-static/resources/fchomo/listeners.js:973
+#: htdocs/luci-static/resources/fchomo/listeners.js:980
+#: htdocs/luci-static/resources/view/fchomo/node.js:1137
+#: htdocs/luci-static/resources/view/fchomo/node.js:1144
msgid "Expecting: only support %s."
msgstr ""
@@ -962,23 +980,24 @@ msgstr ""
msgid "Factor"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1261
+#: htdocs/luci-static/resources/fchomo.js:1267
msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1214
+#: htdocs/luci-static/resources/fchomo.js:1220
msgid "Failed to generate %s, error: %s."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1626
+#: htdocs/luci-static/resources/fchomo.js:1632
msgid "Failed to upload %s, error: %s."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1645
+#: htdocs/luci-static/resources/fchomo.js:1651
msgid "Failed to upload, error: %s."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:213
+#: htdocs/luci-static/resources/fchomo.js:219
+#: htdocs/luci-static/resources/fchomo/listeners.js:398
msgid "Fallback"
msgstr ""
@@ -992,7 +1011,7 @@ msgid "Fallback filter"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1156
-#: htdocs/luci-static/resources/view/fchomo/node.js:1676
+#: htdocs/luci-static/resources/view/fchomo/node.js:1690
msgid "Filter nodes that meet keywords or regexps."
msgstr ""
@@ -1017,12 +1036,12 @@ msgstr ""
msgid "Final DNS server (For poisoned domains)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:188
+#: htdocs/luci-static/resources/fchomo/listeners.js:136
msgid "Firewall"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:466
#: htdocs/luci-static/resources/view/fchomo/node.js:627
-#: htdocs/luci-static/resources/view/fchomo/server.js:518
msgid "Flow"
msgstr ""
@@ -1033,15 +1052,15 @@ msgid ""
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1122
-#: htdocs/luci-static/resources/view/fchomo/node.js:1545
-#: htdocs/luci-static/resources/view/fchomo/node.js:1668
+#: htdocs/luci-static/resources/view/fchomo/node.js:1559
+#: htdocs/luci-static/resources/view/fchomo/node.js:1682
msgid ""
"For format see %s."
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/node.js:707
-#: htdocs/luci-static/resources/view/fchomo/node.js:787
+#: htdocs/luci-static/resources/view/fchomo/node.js:790
msgid "Force DNS remote resolution."
msgstr ""
@@ -1060,7 +1079,7 @@ msgstr ""
msgid "FullCombo Shark!"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1149
+#: htdocs/luci-static/resources/view/fchomo/node.js:1163
msgid "GET"
msgstr ""
@@ -1072,10 +1091,10 @@ msgstr ""
msgid "General"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:119
#: htdocs/luci-static/resources/view/fchomo/client.js:1009
#: htdocs/luci-static/resources/view/fchomo/node.js:222
-#: htdocs/luci-static/resources/view/fchomo/node.js:1425
-#: htdocs/luci-static/resources/view/fchomo/server.js:171
+#: htdocs/luci-static/resources/view/fchomo/node.js:1439
msgid "General fields"
msgstr ""
@@ -1083,16 +1102,16 @@ msgstr ""
msgid "General settings"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:524
-#: htdocs/luci-static/resources/fchomo.js:526
-#: htdocs/luci-static/resources/fchomo.js:540
-#: htdocs/luci-static/resources/fchomo.js:542
+#: htdocs/luci-static/resources/fchomo.js:530
+#: htdocs/luci-static/resources/fchomo.js:532
+#: htdocs/luci-static/resources/fchomo.js:546
+#: htdocs/luci-static/resources/fchomo.js:548
+#: htdocs/luci-static/resources/fchomo/listeners.js:293
+#: htdocs/luci-static/resources/fchomo/listeners.js:334
+#: htdocs/luci-static/resources/fchomo/listeners.js:336
+#: htdocs/luci-static/resources/fchomo/listeners.js:729
+#: htdocs/luci-static/resources/fchomo/listeners.js:898
#: htdocs/luci-static/resources/view/fchomo/global.js:587
-#: htdocs/luci-static/resources/view/fchomo/server.js:343
-#: htdocs/luci-static/resources/view/fchomo/server.js:384
-#: htdocs/luci-static/resources/view/fchomo/server.js:386
-#: htdocs/luci-static/resources/view/fchomo/server.js:741
-#: htdocs/luci-static/resources/view/fchomo/server.js:904
msgid "Generate"
msgstr ""
@@ -1143,7 +1162,7 @@ msgstr ""
msgid "Google"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:226
+#: htdocs/luci-static/resources/fchomo.js:232
msgid "Google FCM"
msgstr ""
@@ -1155,48 +1174,49 @@ msgstr ""
msgid "Group"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:139
-#: htdocs/luci-static/resources/fchomo.js:171
-#: htdocs/luci-static/resources/view/fchomo/node.js:810
-#: htdocs/luci-static/resources/view/fchomo/node.js:1112
-#: htdocs/luci-static/resources/view/fchomo/node.js:1123
-#: htdocs/luci-static/resources/view/fchomo/server.js:979
+#: htdocs/luci-static/resources/fchomo.js:143
+#: htdocs/luci-static/resources/fchomo.js:176
+#: htdocs/luci-static/resources/fchomo/listeners.js:973
+#: htdocs/luci-static/resources/view/fchomo/node.js:813
+#: htdocs/luci-static/resources/view/fchomo/node.js:1126
+#: htdocs/luci-static/resources/view/fchomo/node.js:1137
msgid "HTTP"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/node.js:267
-#: htdocs/luci-static/resources/view/fchomo/node.js:1171
-#: htdocs/luci-static/resources/view/fchomo/node.js:1525
+#: htdocs/luci-static/resources/view/fchomo/node.js:1185
+#: htdocs/luci-static/resources/view/fchomo/node.js:1539
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:392
msgid "HTTP header"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:440
-#: htdocs/luci-static/resources/view/fchomo/server.js:429
+#: htdocs/luci-static/resources/fchomo/listeners.js:379
+#: htdocs/luci-static/resources/view/fchomo/node.js:446
msgid "HTTP mask"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
-#: htdocs/luci-static/resources/view/fchomo/server.js:434
+#: htdocs/luci-static/resources/fchomo/listeners.js:384
+#: htdocs/luci-static/resources/view/fchomo/node.js:451
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
msgid "HTTP mask mode"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:469
+#: htdocs/luci-static/resources/view/fchomo/node.js:476
msgid "HTTP mask multiplex"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:454
-#: htdocs/luci-static/resources/view/fchomo/node.js:459
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
+#: htdocs/luci-static/resources/view/fchomo/node.js:466
msgid "HTTP mask: %s"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1148
+#: htdocs/luci-static/resources/view/fchomo/node.js:1162
msgid "HTTP request method"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:465
-#: htdocs/luci-static/resources/view/fchomo/server.js:443
+#: htdocs/luci-static/resources/fchomo/listeners.js:394
+#: htdocs/luci-static/resources/view/fchomo/node.js:472
msgid "HTTP root path"
msgstr ""
@@ -1204,15 +1224,15 @@ msgstr ""
msgid "HTTP/3"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:263
+#: htdocs/luci-static/resources/fchomo/listeners.js:207
msgid ""
"HTTP3 server behavior when authentication fails.%s will be used if empty."
msgstr ""
@@ -1400,15 +1424,15 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1108
#: htdocs/luci-static/resources/view/fchomo/client.js:1137
-#: htdocs/luci-static/resources/view/fchomo/node.js:1654
+#: htdocs/luci-static/resources/view/fchomo/node.js:1668
msgid "In millisecond. %s will be used if empty."
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:367
+#: htdocs/luci-static/resources/fchomo/listeners.js:418
+#: htdocs/luci-static/resources/fchomo/listeners.js:425
#: htdocs/luci-static/resources/view/fchomo/node.js:601
#: htdocs/luci-static/resources/view/fchomo/node.js:608
-#: htdocs/luci-static/resources/view/fchomo/server.js:417
-#: htdocs/luci-static/resources/view/fchomo/server.js:470
-#: htdocs/luci-static/resources/view/fchomo/server.js:477
msgid "In seconds."
msgstr ""
@@ -1417,20 +1441,22 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/global.js:430
#: htdocs/luci-static/resources/view/fchomo/global.js:515
#: htdocs/luci-static/resources/view/fchomo/node.js:280
-#: htdocs/luci-static/resources/view/fchomo/node.js:1509
-#: htdocs/luci-static/resources/view/fchomo/node.js:1647
+#: htdocs/luci-static/resources/view/fchomo/node.js:1523
+#: htdocs/luci-static/resources/view/fchomo/node.js:1661
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:376
msgid "In seconds. %s will be used if empty."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:917
-#: htdocs/luci-static/resources/view/fchomo/server.js:657
+#: htdocs/luci-static/resources/fchomo/listeners.js:645
+#: htdocs/luci-static/resources/view/fchomo/node.js:928
msgid ""
"In the order of one Padding-Length and one Padding-"
"Interval, infinite concatenation."
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/global.js:449
+#: htdocs/luci-static/resources/view/fchomo/inbound.js:28
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:38
msgid "Inbound"
msgstr ""
@@ -1462,7 +1488,7 @@ msgstr ""
msgid "Info"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1442
+#: htdocs/luci-static/resources/view/fchomo/node.js:1456
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:272
msgid "Inline"
msgstr ""
@@ -1472,25 +1498,26 @@ msgid "Interface Control"
msgstr ""
#: htdocs/luci-static/resources/fchomo.js:49
-#: htdocs/luci-static/resources/fchomo.js:155
-#: htdocs/luci-static/resources/fchomo.js:348
+#: htdocs/luci-static/resources/fchomo.js:160
+#: htdocs/luci-static/resources/fchomo.js:354
msgid "Keep default"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:379
-#: htdocs/luci-static/resources/view/fchomo/server.js:299
+#: htdocs/luci-static/resources/fchomo/listeners.js:249
+#: htdocs/luci-static/resources/view/fchomo/node.js:385
msgid "Key"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1042
-#: htdocs/luci-static/resources/view/fchomo/server.js:831
+#: htdocs/luci-static/resources/fchomo/listeners.js:825
+#: htdocs/luci-static/resources/view/fchomo/node.js:1056
msgid "Key path"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:676
+#: htdocs/luci-static/resources/fchomo/listeners.js:664
msgid "Keypairs"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:127
#: htdocs/luci-static/resources/view/fchomo/client.js:1014
#: htdocs/luci-static/resources/view/fchomo/client.js:1257
#: htdocs/luci-static/resources/view/fchomo/client.js:1349
@@ -1498,24 +1525,23 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1719
#: htdocs/luci-static/resources/view/fchomo/client.js:1775
#: htdocs/luci-static/resources/view/fchomo/node.js:229
-#: htdocs/luci-static/resources/view/fchomo/node.js:1430
-#: htdocs/luci-static/resources/view/fchomo/node.js:1715
+#: htdocs/luci-static/resources/view/fchomo/node.js:1444
+#: htdocs/luci-static/resources/view/fchomo/node.js:1729
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:252
-#: htdocs/luci-static/resources/view/fchomo/server.js:179
msgid "Label"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1114
-#: htdocs/luci-static/resources/view/fchomo/node.js:1660
+#: htdocs/luci-static/resources/view/fchomo/node.js:1674
msgid "Lazy"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:447
-#: htdocs/luci-static/resources/view/fchomo/server.js:436
+#: htdocs/luci-static/resources/fchomo/listeners.js:386
+#: htdocs/luci-static/resources/view/fchomo/node.js:453
msgid "Legacy"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:527
+#: htdocs/luci-static/resources/fchomo/listeners.js:475
msgid ""
"Legacy protocol support (VMess MD5 Authentication) is provided for "
"compatibility purposes only, use of alterId > 1 is not recommended."
@@ -1525,16 +1551,16 @@ msgstr ""
msgid "Less compatibility and sometimes better performance."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:969
-#: htdocs/luci-static/resources/view/fchomo/server.js:812
+#: htdocs/luci-static/resources/fchomo/listeners.js:806
+#: htdocs/luci-static/resources/view/fchomo/node.js:980
msgid "List of supported application level protocols, in order of preference."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:199
+#: htdocs/luci-static/resources/fchomo/listeners.js:147
msgid "Listen address"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:176
+#: htdocs/luci-static/resources/fchomo/listeners.js:124
msgid "Listen fields"
msgstr ""
@@ -1542,8 +1568,8 @@ msgstr ""
msgid "Listen interfaces"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:152
#: htdocs/luci-static/resources/view/fchomo/client.js:1374
-#: htdocs/luci-static/resources/view/fchomo/server.js:204
msgid "Listen port"
msgstr ""
@@ -1551,26 +1577,26 @@ msgstr ""
msgid "Listen ports"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:215
+#: htdocs/luci-static/resources/fchomo.js:221
msgid "Load balance"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1440
+#: htdocs/luci-static/resources/view/fchomo/node.js:1454
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:270
msgid "Local"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/node.js:694
-#: htdocs/luci-static/resources/view/fchomo/node.js:734
+#: htdocs/luci-static/resources/view/fchomo/node.js:737
msgid "Local IPv6 address"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/node.js:686
-#: htdocs/luci-static/resources/view/fchomo/node.js:726
+#: htdocs/luci-static/resources/view/fchomo/node.js:729
msgid "Local address"
msgstr ""
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:70
msgid "Log"
msgstr ""
@@ -1586,21 +1612,21 @@ msgstr ""
msgid "Log level"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:423
+#: htdocs/luci-static/resources/fchomo.js:429
msgid "Lowercase only"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/global.js:502
#: htdocs/luci-static/resources/view/fchomo/node.js:700
-#: htdocs/luci-static/resources/view/fchomo/node.js:780
+#: htdocs/luci-static/resources/view/fchomo/node.js:783
msgid "MTU"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:185
+#: htdocs/luci-static/resources/fchomo.js:190
msgid "Masque"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:262
+#: htdocs/luci-static/resources/fchomo/listeners.js:206
msgid "Masquerade"
msgstr ""
@@ -1632,12 +1658,12 @@ msgstr ""
msgid "Match rule set."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1186
+#: htdocs/luci-static/resources/view/fchomo/node.js:1200
msgid "Max Early Data"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:411
#: htdocs/luci-static/resources/view/fchomo/node.js:543
-#: htdocs/luci-static/resources/view/fchomo/server.js:463
msgid "Max UDP relay packet size"
msgstr ""
@@ -1645,8 +1671,8 @@ msgstr ""
msgid "Max count of failures"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:180
#: htdocs/luci-static/resources/view/fchomo/node.js:291
-#: htdocs/luci-static/resources/view/fchomo/server.js:236
msgid "Max download speed"
msgstr ""
@@ -1654,40 +1680,40 @@ msgstr ""
msgid "Max open streams"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:174
#: htdocs/luci-static/resources/view/fchomo/node.js:285
-#: htdocs/luci-static/resources/view/fchomo/server.js:230
msgid "Max upload speed"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1223
-#: htdocs/luci-static/resources/view/fchomo/node.js:1239
+#: htdocs/luci-static/resources/view/fchomo/node.js:1237
+#: htdocs/luci-static/resources/view/fchomo/node.js:1253
msgid "Maximum connections"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1237
+#: htdocs/luci-static/resources/view/fchomo/node.js:1251
msgid ""
"Maximum multiplexed streams in a connection before opening a new connection."
"%s and %s."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:419
-#: htdocs/luci-static/resources/view/fchomo/server.js:401
+#: htdocs/luci-static/resources/fchomo/listeners.js:351
+#: htdocs/luci-static/resources/view/fchomo/node.js:425
msgid "Maximum padding rate"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:427
-#: htdocs/luci-static/resources/view/fchomo/server.js:409
+#: htdocs/luci-static/resources/fchomo/listeners.js:359
+#: htdocs/luci-static/resources/view/fchomo/node.js:433
msgid ""
"Maximum padding rate must be greater than or equal to the minimum padding "
"rate."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1236
+#: htdocs/luci-static/resources/view/fchomo/node.js:1250
msgid "Maximum streams"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:143
-#: htdocs/luci-static/resources/fchomo.js:175
+#: htdocs/luci-static/resources/fchomo.js:147
+#: htdocs/luci-static/resources/fchomo.js:180
msgid "Mieru"
msgstr ""
@@ -1699,7 +1725,7 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/log.js:158
#: htdocs/luci-static/resources/view/fchomo/log.js:163
-#: htdocs/luci-static/resources/view/fchomo/server.js:131
+#: htdocs/luci-static/resources/view/fchomo/server.js:23
msgid "Mihomo server"
msgstr ""
@@ -1707,22 +1733,22 @@ msgstr ""
msgid "Min of idle sessions to keep"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1230
+#: htdocs/luci-static/resources/view/fchomo/node.js:1244
msgid ""
"Minimum multiplexed streams in a connection before opening a new connection."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:412
-#: htdocs/luci-static/resources/view/fchomo/server.js:394
+#: htdocs/luci-static/resources/fchomo/listeners.js:344
+#: htdocs/luci-static/resources/view/fchomo/node.js:418
msgid "Minimum padding rate"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1229
-#: htdocs/luci-static/resources/view/fchomo/node.js:1239
+#: htdocs/luci-static/resources/view/fchomo/node.js:1243
+#: htdocs/luci-static/resources/view/fchomo/node.js:1253
msgid "Minimum streams"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:141
+#: htdocs/luci-static/resources/fchomo.js:145
#: htdocs/luci-static/resources/view/fchomo/global.js:497
msgid "Mixed"
msgstr ""
@@ -1735,12 +1761,12 @@ msgstr ""
msgid "Mixed port"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1209
+#: htdocs/luci-static/resources/view/fchomo/node.js:1223
msgid "Multiplex"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:123
#: htdocs/luci-static/resources/view/fchomo/node.js:226
-#: htdocs/luci-static/resources/view/fchomo/server.js:175
msgid "Multiplex fields"
msgstr ""
@@ -1753,7 +1779,11 @@ msgstr ""
msgid "NOT"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1515
+#: htdocs/luci-static/resources/fchomo/listeners.js:528
+msgid "Name of the Proxy group as outbound."
+msgstr ""
+
+#: htdocs/luci-static/resources/view/fchomo/node.js:1529
msgid "Name of the Proxy group to download provider."
msgstr ""
@@ -1761,14 +1791,22 @@ msgstr ""
msgid "Name of the Proxy group to download rule set."
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:522
+msgid "Name of the Sub rule used for inbound matching."
+msgstr ""
+
#: htdocs/luci-static/resources/view/fchomo/node.js:527
msgid "Native UDP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:365
+#: htdocs/luci-static/resources/fchomo.js:371
msgid "Native appearance"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:545
+msgid "Network type"
+msgstr ""
+
#: htdocs/luci-static/resources/view/fchomo/global.js:443
msgid "No Authentication IP ranges"
msgstr ""
@@ -1778,11 +1816,11 @@ msgid "No add'l params"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1115
-#: htdocs/luci-static/resources/view/fchomo/node.js:1661
+#: htdocs/luci-static/resources/view/fchomo/node.js:1675
msgid "No testing is performed when this provider node is not in use."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:670
+#: htdocs/luci-static/resources/fchomo.js:676
msgid "No valid %s found."
msgstr ""
@@ -1792,22 +1830,22 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1041
#: htdocs/luci-static/resources/view/fchomo/node.js:217
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:38
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:46
msgid "Node"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1160
-#: htdocs/luci-static/resources/view/fchomo/node.js:1681
+#: htdocs/luci-static/resources/view/fchomo/node.js:1695
msgid "Node exclude filter"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1165
-#: htdocs/luci-static/resources/view/fchomo/node.js:1688
+#: htdocs/luci-static/resources/view/fchomo/node.js:1702
msgid "Node exclude type"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1155
-#: htdocs/luci-static/resources/view/fchomo/node.js:1675
+#: htdocs/luci-static/resources/view/fchomo/node.js:1689
msgid "Node filter"
msgstr ""
@@ -1815,7 +1853,7 @@ msgstr ""
msgid "Node switch tolerance"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:392
+#: htdocs/luci-static/resources/fchomo.js:398
msgid "None"
msgstr ""
@@ -1823,41 +1861,41 @@ msgstr ""
msgid "Not Installed"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1140
+#: htdocs/luci-static/resources/fchomo.js:1146
msgid "Not Running"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:472
+#: htdocs/luci-static/resources/view/fchomo/node.js:479
msgid "OFF"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:474
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
msgid "ON"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:809
+#: htdocs/luci-static/resources/view/fchomo/node.js:812
msgid "Obfs Mode"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:198
#: htdocs/luci-static/resources/view/fchomo/node.js:303
-#: htdocs/luci-static/resources/view/fchomo/server.js:254
msgid "Obfuscate password"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:192
+#: htdocs/luci-static/resources/fchomo/listeners.js:322
#: htdocs/luci-static/resources/view/fchomo/node.js:297
-#: htdocs/luci-static/resources/view/fchomo/node.js:401
-#: htdocs/luci-static/resources/view/fchomo/server.js:248
-#: htdocs/luci-static/resources/view/fchomo/server.js:372
+#: htdocs/luci-static/resources/view/fchomo/node.js:407
msgid "Obfuscate type"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:402
-#: htdocs/luci-static/resources/view/fchomo/server.js:373
+#: htdocs/luci-static/resources/fchomo/listeners.js:323
+#: htdocs/luci-static/resources/view/fchomo/node.js:408
msgid "Obfuscated as ASCII data stream"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:403
-#: htdocs/luci-static/resources/view/fchomo/server.js:374
+#: htdocs/luci-static/resources/fchomo/listeners.js:324
+#: htdocs/luci-static/resources/view/fchomo/node.js:409
msgid "Obfuscated as low-entropy data stream"
msgstr ""
@@ -1869,7 +1907,7 @@ msgstr ""
msgid "Only process traffic from specific interfaces. Leave empty for all."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1134
+#: htdocs/luci-static/resources/fchomo.js:1140
msgid "Open Dashboard"
msgstr ""
@@ -1883,11 +1921,11 @@ msgid "Override destination"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1010
-#: htdocs/luci-static/resources/view/fchomo/node.js:1426
+#: htdocs/luci-static/resources/view/fchomo/node.js:1440
msgid "Override fields"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:510
+#: htdocs/luci-static/resources/view/fchomo/node.js:519
msgid "Override the IP address of the server that DNS response."
msgstr ""
@@ -1903,7 +1941,7 @@ msgstr ""
msgid "Override the existing ECS in original request."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1069
+#: htdocs/luci-static/resources/view/fchomo/node.js:1083
msgid "Overrides the domain name used for HTTPS record queries."
msgstr ""
@@ -1911,11 +1949,11 @@ msgstr ""
msgid "Overview"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1150
+#: htdocs/luci-static/resources/view/fchomo/node.js:1164
msgid "POST"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1151
+#: htdocs/luci-static/resources/view/fchomo/node.js:1165
msgid "PUT"
msgstr ""
@@ -1923,31 +1961,31 @@ msgstr ""
msgid "Packet encoding"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:507
+#: htdocs/luci-static/resources/fchomo/listeners.js:455
msgid "Padding scheme"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:915
-#: htdocs/luci-static/resources/view/fchomo/server.js:655
+#: htdocs/luci-static/resources/fchomo/listeners.js:643
+#: htdocs/luci-static/resources/view/fchomo/node.js:926
msgid "Paddings"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:165
+#: htdocs/luci-static/resources/fchomo/listeners.js:221
+#: htdocs/luci-static/resources/fchomo/listeners.js:505
#: htdocs/luci-static/resources/view/fchomo/node.js:261
#: htdocs/luci-static/resources/view/fchomo/node.js:340
-#: htdocs/luci-static/resources/view/fchomo/node.js:824
-#: htdocs/luci-static/resources/view/fchomo/server.js:221
-#: htdocs/luci-static/resources/view/fchomo/server.js:277
-#: htdocs/luci-static/resources/view/fchomo/server.js:548
+#: htdocs/luci-static/resources/view/fchomo/node.js:827
msgid "Password"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1490
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:1504
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:357
-#: htdocs/luci-static/resources/view/fchomo/server.js:595
msgid "Payload"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:748
+#: htdocs/luci-static/resources/view/fchomo/node.js:751
msgid "Peer pubkic key"
msgstr ""
@@ -1957,11 +1995,11 @@ msgid ""
"it is not needed."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:775
+#: htdocs/luci-static/resources/view/fchomo/node.js:778
msgid "Periodically sends data packets to maintain connection persistence."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:774
+#: htdocs/luci-static/resources/view/fchomo/node.js:777
msgid "Persistent keepalive"
msgstr ""
@@ -1982,8 +2020,8 @@ msgid ""
"standards."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1463
-#: htdocs/luci-static/resources/view/fchomo/node.js:1489
+#: htdocs/luci-static/resources/view/fchomo/node.js:1477
+#: htdocs/luci-static/resources/view/fchomo/node.js:1503
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:330
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:356
msgid ""
@@ -1997,25 +2035,25 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1445
#: htdocs/luci-static/resources/view/fchomo/client.js:1697
#: htdocs/luci-static/resources/view/fchomo/client.js:1749
-#: htdocs/luci-static/resources/view/fchomo/node.js:1333
+#: htdocs/luci-static/resources/view/fchomo/node.js:1347
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:144
msgid "Please type %s fields of mihomo config."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:798
-#: htdocs/luci-static/resources/view/fchomo/server.js:534
+#: htdocs/luci-static/resources/fchomo/listeners.js:491
+#: htdocs/luci-static/resources/view/fchomo/node.js:801
msgid "Plugin"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:809
-#: htdocs/luci-static/resources/view/fchomo/node.js:816
-#: htdocs/luci-static/resources/view/fchomo/node.js:824
-#: htdocs/luci-static/resources/view/fchomo/node.js:830
-#: htdocs/luci-static/resources/view/fchomo/node.js:838
-#: htdocs/luci-static/resources/view/fchomo/node.js:844
-#: htdocs/luci-static/resources/view/fchomo/server.js:541
-#: htdocs/luci-static/resources/view/fchomo/server.js:548
-#: htdocs/luci-static/resources/view/fchomo/server.js:554
+#: htdocs/luci-static/resources/fchomo/listeners.js:498
+#: htdocs/luci-static/resources/fchomo/listeners.js:505
+#: htdocs/luci-static/resources/fchomo/listeners.js:511
+#: htdocs/luci-static/resources/view/fchomo/node.js:812
+#: htdocs/luci-static/resources/view/fchomo/node.js:819
+#: htdocs/luci-static/resources/view/fchomo/node.js:827
+#: htdocs/luci-static/resources/view/fchomo/node.js:833
+#: htdocs/luci-static/resources/view/fchomo/node.js:841
+#: htdocs/luci-static/resources/view/fchomo/node.js:847
msgid "Plugin:"
msgstr ""
@@ -2023,7 +2061,7 @@ msgstr ""
msgid "Port"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1371
+#: htdocs/luci-static/resources/fchomo.js:1377
msgid "Port %s alrealy exists!"
msgstr ""
@@ -2039,21 +2077,21 @@ msgstr ""
msgid "Ports"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:152
#: htdocs/luci-static/resources/view/fchomo/node.js:274
-#: htdocs/luci-static/resources/view/fchomo/server.js:204
msgid "Ports pool"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:487
-#: htdocs/luci-static/resources/view/fchomo/node.js:755
+#: htdocs/luci-static/resources/view/fchomo/node.js:496
+#: htdocs/luci-static/resources/view/fchomo/node.js:758
msgid "Pre-shared key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:159
+#: htdocs/luci-static/resources/fchomo.js:164
msgid "Prefer IPv4"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:160
+#: htdocs/luci-static/resources/fchomo.js:165
msgid "Prefer IPv6"
msgstr ""
@@ -2064,10 +2102,10 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/global.js:736
#: htdocs/luci-static/resources/view/fchomo/global.js:753
-#: htdocs/luci-static/resources/view/fchomo/node.js:1297
-#: htdocs/luci-static/resources/view/fchomo/node.js:1303
-#: htdocs/luci-static/resources/view/fchomo/node.js:1610
-#: htdocs/luci-static/resources/view/fchomo/node.js:1617
+#: htdocs/luci-static/resources/view/fchomo/node.js:1311
+#: htdocs/luci-static/resources/view/fchomo/node.js:1317
+#: htdocs/luci-static/resources/view/fchomo/node.js:1624
+#: htdocs/luci-static/resources/view/fchomo/node.js:1631
msgid "Priority: Proxy Node > Global."
msgstr ""
@@ -2080,7 +2118,7 @@ msgid "Priv-key passphrase"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/node.js:671
-#: htdocs/luci-static/resources/view/fchomo/node.js:740
+#: htdocs/luci-static/resources/view/fchomo/node.js:743
msgid "Private key"
msgstr ""
@@ -2089,7 +2127,7 @@ msgid "Process matching mode"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/global.js:684
-#: htdocs/luci-static/resources/view/fchomo/node.js:1215
+#: htdocs/luci-static/resources/view/fchomo/node.js:1229
msgid "Protocol"
msgstr ""
@@ -2104,13 +2142,13 @@ msgid ""
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1055
-#: htdocs/luci-static/resources/view/fchomo/node.js:1316
-#: htdocs/luci-static/resources/view/fchomo/node.js:1325
-#: htdocs/luci-static/resources/view/fchomo/node.js:1726
+#: htdocs/luci-static/resources/view/fchomo/node.js:1330
+#: htdocs/luci-static/resources/view/fchomo/node.js:1339
+#: htdocs/luci-static/resources/view/fchomo/node.js:1740
msgid "Provider"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1496
+#: htdocs/luci-static/resources/view/fchomo/node.js:1510
msgid "Provider URL"
msgstr ""
@@ -2133,18 +2171,19 @@ msgid "Proxy MAC-s"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/node.js:208
-#: htdocs/luci-static/resources/view/fchomo/node.js:1725
+#: htdocs/luci-static/resources/view/fchomo/node.js:1739
msgid "Proxy Node"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1701
-#: htdocs/luci-static/resources/view/fchomo/node.js:1710
+#: htdocs/luci-static/resources/view/fchomo/node.js:1715
+#: htdocs/luci-static/resources/view/fchomo/node.js:1724
msgid "Proxy chain"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:527
#: htdocs/luci-static/resources/view/fchomo/client.js:783
#: htdocs/luci-static/resources/view/fchomo/client.js:1543
-#: htdocs/luci-static/resources/view/fchomo/node.js:1514
+#: htdocs/luci-static/resources/view/fchomo/node.js:1528
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:381
msgid "Proxy group"
msgstr ""
@@ -2162,57 +2201,53 @@ msgid "Proxy routerself"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/node.js:528
+#: htdocs/luci-static/resources/view/fchomo/node.js:723
msgid "QUIC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:516
-#: htdocs/luci-static/resources/view/fchomo/server.js:455
-msgid "QUIC congestion controller."
-msgstr ""
-
#: htdocs/luci-static/resources/view/fchomo/client.js:926
-#: htdocs/luci-static/resources/view/fchomo/server.js:152
+#: htdocs/luci-static/resources/view/fchomo/server.js:44
msgid "Quick Reload"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1083
-#: htdocs/luci-static/resources/view/fchomo/server.js:919
+#: htdocs/luci-static/resources/fchomo/listeners.js:913
+#: htdocs/luci-static/resources/view/fchomo/node.js:1097
msgid "REALITY"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1098
+#: htdocs/luci-static/resources/view/fchomo/node.js:1112
msgid "REALITY X25519MLKEM768 PQC support"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:956
+#: htdocs/luci-static/resources/fchomo/listeners.js:950
msgid "REALITY certificate issued to"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:924
+#: htdocs/luci-static/resources/fchomo/listeners.js:918
msgid "REALITY handshake server"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:931
+#: htdocs/luci-static/resources/fchomo/listeners.js:925
msgid "REALITY private key"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1088
-#: htdocs/luci-static/resources/view/fchomo/server.js:946
+#: htdocs/luci-static/resources/fchomo/listeners.js:940
+#: htdocs/luci-static/resources/view/fchomo/node.js:1102
msgid "REALITY public key"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1093
-#: htdocs/luci-static/resources/view/fchomo/server.js:950
+#: htdocs/luci-static/resources/fchomo/listeners.js:944
+#: htdocs/luci-static/resources/view/fchomo/node.js:1107
msgid "REALITY short ID"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:905
-#: htdocs/luci-static/resources/view/fchomo/server.js:626
-#: htdocs/luci-static/resources/view/fchomo/server.js:645
+#: htdocs/luci-static/resources/fchomo/listeners.js:614
+#: htdocs/luci-static/resources/fchomo/listeners.js:633
+#: htdocs/luci-static/resources/view/fchomo/node.js:916
msgid "RTT"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:357
+#: htdocs/luci-static/resources/fchomo.js:363
msgid "Random"
msgstr ""
@@ -2220,7 +2255,7 @@ msgstr ""
msgid "Random will be used if empty."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:367
+#: htdocs/luci-static/resources/fchomo.js:373
msgid "Randomized traffic characteristics"
msgstr ""
@@ -2244,10 +2279,10 @@ msgstr ""
msgid "Refresh every %s seconds."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1127
+#: htdocs/luci-static/resources/fchomo.js:1133
#: htdocs/luci-static/resources/view/fchomo/client.js:927
#: htdocs/luci-static/resources/view/fchomo/global.js:193
-#: htdocs/luci-static/resources/view/fchomo/server.js:153
+#: htdocs/luci-static/resources/view/fchomo/server.js:45
msgid "Reload"
msgstr ""
@@ -2255,43 +2290,43 @@ msgstr ""
msgid "Reload All"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1441
+#: htdocs/luci-static/resources/view/fchomo/node.js:1455
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:271
msgid "Remote"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/node.js:706
-#: htdocs/luci-static/resources/view/fchomo/node.js:786
+#: htdocs/luci-static/resources/view/fchomo/node.js:789
msgid "Remote DNS resolve"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1292
+#: htdocs/luci-static/resources/fchomo.js:1298
msgid "Remove"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1297
-#: htdocs/luci-static/resources/view/fchomo/node.js:1417
-#: htdocs/luci-static/resources/view/fchomo/node.js:1419
+#: htdocs/luci-static/resources/fchomo.js:1303
+#: htdocs/luci-static/resources/view/fchomo/node.js:1431
+#: htdocs/luci-static/resources/view/fchomo/node.js:1433
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:244
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:246
msgid "Remove idles"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1543
+#: htdocs/luci-static/resources/view/fchomo/node.js:1557
msgid "Replace name"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1544
+#: htdocs/luci-static/resources/view/fchomo/node.js:1558
msgid "Replace node name."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:341
+#: htdocs/luci-static/resources/fchomo.js:347
msgid "Request"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1157
-#: htdocs/luci-static/resources/view/fchomo/node.js:1164
-#: htdocs/luci-static/resources/view/fchomo/server.js:998
+#: htdocs/luci-static/resources/fchomo/listeners.js:992
+#: htdocs/luci-static/resources/view/fchomo/node.js:1171
+#: htdocs/luci-static/resources/view/fchomo/node.js:1178
msgid "Request path"
msgstr ""
@@ -2299,20 +2334,20 @@ msgstr ""
msgid "Request timeout"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:344
+#: htdocs/luci-static/resources/fchomo.js:350
msgid "Require and verify"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:342
+#: htdocs/luci-static/resources/fchomo.js:348
msgid "Require any"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:375
-#: htdocs/luci-static/resources/view/fchomo/node.js:1099
+#: htdocs/luci-static/resources/fchomo.js:381
+#: htdocs/luci-static/resources/view/fchomo/node.js:1113
msgid "Requires server support."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:769
+#: htdocs/luci-static/resources/view/fchomo/node.js:772
msgid "Reserved field bytes"
msgstr ""
@@ -2320,7 +2355,7 @@ msgstr ""
msgid "Resources management"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:844
+#: htdocs/luci-static/resources/view/fchomo/node.js:847
msgid "Restls script"
msgstr ""
@@ -2334,12 +2369,12 @@ msgid ""
"Returns the string input for icon in the API to display in this proxy group."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:473
+#: htdocs/luci-static/resources/view/fchomo/node.js:480
msgid "Reuse HTTP connections to reduce RTT for each connection establishment."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:470
-#: htdocs/luci-static/resources/view/fchomo/node.js:474
+#: htdocs/luci-static/resources/view/fchomo/node.js:477
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
msgid "Reusing a single tunnel to carry multiple target connections within it."
msgstr ""
@@ -2356,8 +2391,8 @@ msgstr ""
msgid "Routing GFW"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1302
-#: htdocs/luci-static/resources/view/fchomo/node.js:1616
+#: htdocs/luci-static/resources/view/fchomo/node.js:1316
+#: htdocs/luci-static/resources/view/fchomo/node.js:1630
msgid "Routing mark"
msgstr ""
@@ -2409,7 +2444,7 @@ msgstr ""
msgid "Rule set URL"
msgstr ""
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:46
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:54
msgid "Ruleset"
msgstr ""
@@ -2417,27 +2452,27 @@ msgstr ""
msgid "Ruleset-URI-Scheme"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1140
+#: htdocs/luci-static/resources/fchomo.js:1146
msgid "Running"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:223
+#: htdocs/luci-static/resources/fchomo.js:229
msgid "SMTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:140
+#: htdocs/luci-static/resources/fchomo.js:144
msgid "SOCKS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:172
+#: htdocs/luci-static/resources/fchomo.js:177
msgid "SOCKS5"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:193
msgid "SSH"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:224
+#: htdocs/luci-static/resources/fchomo.js:230
msgid "STUN"
msgstr ""
@@ -2445,20 +2480,20 @@ msgstr ""
msgid "SUB-RULE"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:862
+#: htdocs/luci-static/resources/view/fchomo/node.js:873
msgid "SUoT version"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:194
#: htdocs/luci-static/resources/view/fchomo/node.js:299
-#: htdocs/luci-static/resources/view/fchomo/server.js:250
msgid "Salamander"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:165
+#: htdocs/luci-static/resources/fchomo.js:170
msgid "Same dstaddr requests. Same node"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:171
msgid "Same srcaddr and dstaddr requests. Same node"
msgstr ""
@@ -2466,7 +2501,7 @@ msgstr ""
msgid "Segment maximum size"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:212
+#: htdocs/luci-static/resources/fchomo.js:218
msgid "Select"
msgstr ""
@@ -2474,20 +2509,20 @@ msgstr ""
msgid "Select Dashboard"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:381
+#: htdocs/luci-static/resources/fchomo.js:387
msgid "Send padding randomly 0-3333 bytes with 50% probability."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:370
-#: htdocs/luci-static/resources/fchomo.js:371
+#: htdocs/luci-static/resources/fchomo.js:376
+#: htdocs/luci-static/resources/fchomo.js:377
msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:166
-#: htdocs/luci-static/resources/view/fchomo/server.js:626
-#: htdocs/luci-static/resources/view/fchomo/server.js:817
-#: htdocs/luci-static/resources/view/fchomo/server.js:832
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:54
+#: htdocs/luci-static/resources/fchomo/listeners.js:614
+#: htdocs/luci-static/resources/fchomo/listeners.js:811
+#: htdocs/luci-static/resources/fchomo/listeners.js:826
+#: htdocs/luci-static/resources/view/fchomo/server.js:58
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
msgid "Server"
msgstr ""
@@ -2495,7 +2530,7 @@ msgstr ""
msgid "Server address"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1142
+#: htdocs/luci-static/resources/view/fchomo/node.js:1156
msgid "Server hostname"
msgstr ""
@@ -2507,27 +2542,27 @@ msgstr ""
msgid "Service status"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:142
-#: htdocs/luci-static/resources/fchomo.js:173
+#: htdocs/luci-static/resources/fchomo.js:146
+#: htdocs/luci-static/resources/fchomo.js:178
msgid "Shadowsocks"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:437
#: htdocs/luci-static/resources/view/fchomo/node.js:582
-#: htdocs/luci-static/resources/view/fchomo/server.js:489
msgid "Shadowsocks chipher"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:432
#: htdocs/luci-static/resources/view/fchomo/node.js:577
-#: htdocs/luci-static/resources/view/fchomo/server.js:484
msgid "Shadowsocks encrypt"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:445
#: htdocs/luci-static/resources/view/fchomo/node.js:590
-#: htdocs/luci-static/resources/view/fchomo/server.js:497
msgid "Shadowsocks password"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1257
+#: htdocs/luci-static/resources/view/fchomo/node.js:1271
msgid "Show connections in the dashboard for breaking connections easier."
msgstr ""
@@ -2535,18 +2570,18 @@ msgstr ""
msgid "Silent"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:164
+#: htdocs/luci-static/resources/fchomo.js:169
msgid "Simple round-robin all nodes"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1502
+#: htdocs/luci-static/resources/view/fchomo/node.js:1516
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:369
msgid "Size limit"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1576
-#: htdocs/luci-static/resources/view/fchomo/node.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1594
+#: htdocs/luci-static/resources/view/fchomo/node.js:1034
+#: htdocs/luci-static/resources/view/fchomo/node.js:1608
msgid "Skip cert verify"
msgstr ""
@@ -2562,7 +2597,7 @@ msgstr ""
msgid "Skiped sniffing src address"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:177
+#: htdocs/luci-static/resources/fchomo.js:182
msgid "Snell"
msgstr ""
@@ -2578,7 +2613,7 @@ msgstr ""
msgid "Sniffer settings"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:413
+#: htdocs/luci-static/resources/fchomo.js:419
msgid "Specify a ID"
msgstr ""
@@ -2593,11 +2628,11 @@ msgstr ""
msgid "Stack"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:227
+#: htdocs/luci-static/resources/fchomo.js:233
msgid "Steam Client"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:228
+#: htdocs/luci-static/resources/fchomo.js:234
msgid "Steam P2P"
msgstr ""
@@ -2606,6 +2641,7 @@ msgstr ""
msgid "Strategy"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:521
#: htdocs/luci-static/resources/view/fchomo/client.js:1303
#: htdocs/luci-static/resources/view/fchomo/client.js:1312
msgid "Sub rule"
@@ -2615,7 +2651,7 @@ msgstr ""
msgid "Sub rule group"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:673
+#: htdocs/luci-static/resources/fchomo.js:679
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:215
msgid "Successfully imported %s %s of total %s."
msgstr ""
@@ -2624,12 +2660,12 @@ msgstr ""
msgid "Successfully updated."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1642
+#: htdocs/luci-static/resources/fchomo.js:1648
msgid "Successfully uploaded."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:144
-#: htdocs/luci-static/resources/fchomo.js:176
+#: htdocs/luci-static/resources/fchomo.js:148
+#: htdocs/luci-static/resources/fchomo.js:181
msgid "Sudoku"
msgstr ""
@@ -2647,20 +2683,21 @@ msgstr ""
msgid "System DNS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:139
-#: htdocs/luci-static/resources/fchomo.js:144
-#: htdocs/luci-static/resources/fchomo.js:145
-#: htdocs/luci-static/resources/fchomo.js:146
-#: htdocs/luci-static/resources/fchomo.js:147
+#: htdocs/luci-static/resources/fchomo.js:143
#: htdocs/luci-static/resources/fchomo.js:148
-#: htdocs/luci-static/resources/fchomo.js:171
+#: htdocs/luci-static/resources/fchomo.js:149
+#: htdocs/luci-static/resources/fchomo.js:150
+#: htdocs/luci-static/resources/fchomo.js:151
+#: htdocs/luci-static/resources/fchomo.js:152
#: htdocs/luci-static/resources/fchomo.js:176
-#: htdocs/luci-static/resources/fchomo.js:177
-#: htdocs/luci-static/resources/fchomo.js:178
-#: htdocs/luci-static/resources/fchomo.js:179
-#: htdocs/luci-static/resources/fchomo.js:180
#: htdocs/luci-static/resources/fchomo.js:181
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:182
+#: htdocs/luci-static/resources/fchomo.js:183
+#: htdocs/luci-static/resources/fchomo.js:184
+#: htdocs/luci-static/resources/fchomo.js:185
+#: htdocs/luci-static/resources/fchomo.js:186
+#: htdocs/luci-static/resources/fchomo.js:193
+#: htdocs/luci-static/resources/fchomo/listeners.js:546
#: htdocs/luci-static/resources/view/fchomo/client.js:589
#: htdocs/luci-static/resources/view/fchomo/client.js:679
msgid "TCP"
@@ -2670,7 +2707,7 @@ msgstr ""
msgid "TCP concurrency"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1250
+#: htdocs/luci-static/resources/view/fchomo/node.js:1264
msgid "TCP only"
msgstr ""
@@ -2682,54 +2719,61 @@ msgstr ""
msgid "TCP-Keep-Alive interval"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:140
-#: htdocs/luci-static/resources/fchomo.js:141
-#: htdocs/luci-static/resources/fchomo.js:142
-#: htdocs/luci-static/resources/fchomo.js:143
-#: htdocs/luci-static/resources/fchomo.js:170
-#: htdocs/luci-static/resources/fchomo.js:172
-#: htdocs/luci-static/resources/fchomo.js:173
+#: htdocs/luci-static/resources/fchomo.js:144
+#: htdocs/luci-static/resources/fchomo.js:145
+#: htdocs/luci-static/resources/fchomo.js:146
+#: htdocs/luci-static/resources/fchomo.js:147
+#: htdocs/luci-static/resources/fchomo.js:155
+#: htdocs/luci-static/resources/fchomo.js:156
#: htdocs/luci-static/resources/fchomo.js:175
+#: htdocs/luci-static/resources/fchomo.js:177
+#: htdocs/luci-static/resources/fchomo.js:178
+#: htdocs/luci-static/resources/fchomo.js:180
+#: htdocs/luci-static/resources/fchomo.js:191
msgid "TCP/UDP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1281
-#: htdocs/luci-static/resources/view/fchomo/node.js:1561
+#: htdocs/luci-static/resources/view/fchomo/node.js:1295
+#: htdocs/luci-static/resources/view/fchomo/node.js:1575
msgid "TFO"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:768
#: htdocs/luci-static/resources/view/fchomo/global.js:529
-#: htdocs/luci-static/resources/view/fchomo/node.js:454
-#: htdocs/luci-static/resources/view/fchomo/node.js:811
-#: htdocs/luci-static/resources/view/fchomo/node.js:937
-#: htdocs/luci-static/resources/view/fchomo/server.js:780
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
+#: htdocs/luci-static/resources/view/fchomo/node.js:814
+#: htdocs/luci-static/resources/view/fchomo/node.js:948
msgid "TLS"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:968
-#: htdocs/luci-static/resources/view/fchomo/server.js:811
+#: htdocs/luci-static/resources/fchomo/listeners.js:805
+#: htdocs/luci-static/resources/view/fchomo/node.js:979
msgid "TLS ALPN"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:962
+#: htdocs/luci-static/resources/view/fchomo/node.js:973
msgid "TLS SNI"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:121
#: htdocs/luci-static/resources/view/fchomo/node.js:224
-#: htdocs/luci-static/resources/view/fchomo/server.js:173
msgid "TLS fields"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:149
-#: htdocs/luci-static/resources/fchomo.js:184
+#: htdocs/luci-static/resources/fchomo.js:153
+#: htdocs/luci-static/resources/fchomo.js:189
msgid "TUIC"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:225
+#: htdocs/luci-static/resources/fchomo.js:231
msgid "TURN"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:243
+#: htdocs/luci-static/resources/fchomo/listeners.js:484
+msgid "Target address"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:187
msgid ""
"Tell the client to use the BBR flow control algorithm instead of Hysteria CC."
msgstr ""
@@ -2739,34 +2783,34 @@ msgstr ""
msgid "The %s address used by local machine in the Cloudflare WARP network."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:727
-#: htdocs/luci-static/resources/view/fchomo/node.js:735
+#: htdocs/luci-static/resources/view/fchomo/node.js:730
+#: htdocs/luci-static/resources/view/fchomo/node.js:738
msgid "The %s address used by local machine in the Wireguard network."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1043
-#: htdocs/luci-static/resources/view/fchomo/server.js:832
+#: htdocs/luci-static/resources/fchomo/listeners.js:826
+#: htdocs/luci-static/resources/view/fchomo/node.js:1057
msgid "The %s private key, in PEM format."
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:811
+#: htdocs/luci-static/resources/fchomo/listeners.js:849
#: htdocs/luci-static/resources/view/fchomo/global.js:550
-#: htdocs/luci-static/resources/view/fchomo/node.js:1029
-#: htdocs/luci-static/resources/view/fchomo/server.js:817
-#: htdocs/luci-static/resources/view/fchomo/server.js:855
+#: htdocs/luci-static/resources/view/fchomo/node.js:1043
msgid "The %s public key, in PEM format."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1063
+#: htdocs/luci-static/resources/view/fchomo/node.js:1077
msgid ""
"The ECH parameter of the HTTPS record for the domain. Leave empty to resolve "
"via DNS."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:380
+#: htdocs/luci-static/resources/view/fchomo/node.js:386
msgid "The ED25519 available private key or UUID provided by Sudoku server."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:300
+#: htdocs/luci-static/resources/fchomo/listeners.js:250
msgid "The ED25519 master public key or UUID generated by Sudoku."
msgstr ""
@@ -2774,8 +2818,8 @@ msgstr ""
msgid "The default value is 2:00 every day."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:918
-#: htdocs/luci-static/resources/view/fchomo/server.js:658
+#: htdocs/luci-static/resources/fchomo/listeners.js:646
+#: htdocs/luci-static/resources/view/fchomo/node.js:929
msgid ""
"The first padding must have a probability of 100% and at least 35 bytes."
msgstr ""
@@ -2790,19 +2834,19 @@ msgstr ""
msgid "The matching %s will be deemed as poisoned."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:916
-#: htdocs/luci-static/resources/view/fchomo/server.js:656
+#: htdocs/luci-static/resources/fchomo/listeners.js:644
+#: htdocs/luci-static/resources/view/fchomo/node.js:927
msgid "The server and client can set different padding parameters."
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:907
#: htdocs/luci-static/resources/view/fchomo/global.js:594
-#: htdocs/luci-static/resources/view/fchomo/server.js:913
msgid "This ECH parameter needs to be added to the HTTPS record of the domain."
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1579
-#: htdocs/luci-static/resources/view/fchomo/node.js:1023
-#: htdocs/luci-static/resources/view/fchomo/node.js:1597
+#: htdocs/luci-static/resources/view/fchomo/node.js:1037
+#: htdocs/luci-static/resources/view/fchomo/node.js:1611
msgid ""
"This is DANGEROUS, your traffic is almost like "
"PLAIN TEXT! Use at your own risk!"
@@ -2837,28 +2881,33 @@ msgstr ""
msgid "Tproxy port"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1753
+#: htdocs/luci-static/resources/fchomo/listeners.js:238
+#: htdocs/luci-static/resources/view/fchomo/node.js:378
+msgid "Traffic pattern"
+msgstr ""
+
+#: htdocs/luci-static/resources/view/fchomo/node.js:1767
msgid "Transit proxy group"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1759
+#: htdocs/luci-static/resources/view/fchomo/node.js:1773
msgid "Transit proxy node"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:231
+#: htdocs/luci-static/resources/fchomo/listeners.js:958
#: htdocs/luci-static/resources/view/fchomo/node.js:355
-#: htdocs/luci-static/resources/view/fchomo/node.js:1105
-#: htdocs/luci-static/resources/view/fchomo/server.js:287
-#: htdocs/luci-static/resources/view/fchomo/server.js:964
+#: htdocs/luci-static/resources/view/fchomo/node.js:1119
msgid "Transport"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:122
#: htdocs/luci-static/resources/view/fchomo/node.js:225
-#: htdocs/luci-static/resources/view/fchomo/server.js:174
msgid "Transport fields"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1110
-#: htdocs/luci-static/resources/view/fchomo/server.js:969
+#: htdocs/luci-static/resources/fchomo/listeners.js:963
+#: htdocs/luci-static/resources/view/fchomo/node.js:1124
msgid "Transport type"
msgstr ""
@@ -2866,11 +2915,16 @@ msgstr ""
msgid "Treat the destination IP as the source IP."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:147
-#: htdocs/luci-static/resources/fchomo.js:180
+#: htdocs/luci-static/resources/fchomo.js:151
+#: htdocs/luci-static/resources/fchomo.js:185
msgid "Trojan"
msgstr ""
+#: htdocs/luci-static/resources/fchomo.js:155
+#: htdocs/luci-static/resources/fchomo.js:191
+msgid "TrustTunnel"
+msgstr ""
+
#: htdocs/luci-static/resources/view/fchomo/global.js:764
msgid "Tun Fwmark/fwmask"
msgstr ""
@@ -2887,30 +2941,35 @@ msgstr ""
msgid "Tun stack."
msgstr ""
+#: htdocs/luci-static/resources/fchomo.js:156
+msgid "Tunnel"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:141
#: htdocs/luci-static/resources/view/fchomo/client.js:530
#: htdocs/luci-static/resources/view/fchomo/client.js:643
#: htdocs/luci-static/resources/view/fchomo/client.js:737
#: htdocs/luci-static/resources/view/fchomo/client.js:842
#: htdocs/luci-static/resources/view/fchomo/client.js:1028
#: htdocs/luci-static/resources/view/fchomo/node.js:238
-#: htdocs/luci-static/resources/view/fchomo/node.js:1439
-#: htdocs/luci-static/resources/view/fchomo/node.js:1724
+#: htdocs/luci-static/resources/view/fchomo/node.js:1453
+#: htdocs/luci-static/resources/view/fchomo/node.js:1738
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:269
-#: htdocs/luci-static/resources/view/fchomo/server.js:193
msgid "Type"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:149
-#: htdocs/luci-static/resources/fchomo.js:150
-#: htdocs/luci-static/resources/fchomo.js:183
-#: htdocs/luci-static/resources/fchomo.js:184
-#: htdocs/luci-static/resources/fchomo.js:185
-#: htdocs/luci-static/resources/fchomo.js:186
+#: htdocs/luci-static/resources/fchomo.js:153
+#: htdocs/luci-static/resources/fchomo.js:154
+#: htdocs/luci-static/resources/fchomo.js:188
+#: htdocs/luci-static/resources/fchomo.js:189
+#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo.js:192
+#: htdocs/luci-static/resources/fchomo/listeners.js:547
+#: htdocs/luci-static/resources/fchomo/listeners.js:551
#: htdocs/luci-static/resources/view/fchomo/client.js:588
#: htdocs/luci-static/resources/view/fchomo/client.js:678
-#: htdocs/luci-static/resources/view/fchomo/node.js:851
-#: htdocs/luci-static/resources/view/fchomo/node.js:1571
-#: htdocs/luci-static/resources/view/fchomo/server.js:563
+#: htdocs/luci-static/resources/view/fchomo/node.js:862
+#: htdocs/luci-static/resources/view/fchomo/node.js:1585
msgid "UDP"
msgstr ""
@@ -2934,19 +2993,19 @@ msgstr ""
msgid "UDP relay mode"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:214
+#: htdocs/luci-static/resources/fchomo.js:220
msgid "URL test"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:503
+#: htdocs/luci-static/resources/fchomo/listeners.js:247
+#: htdocs/luci-static/resources/fchomo/listeners.js:405
+#: htdocs/luci-static/resources/fchomo/listeners.js:460
+#: htdocs/luci-static/resources/view/fchomo/node.js:512
#: htdocs/luci-static/resources/view/fchomo/node.js:621
-#: htdocs/luci-static/resources/view/fchomo/server.js:297
-#: htdocs/luci-static/resources/view/fchomo/server.js:448
-#: htdocs/luci-static/resources/view/fchomo/server.js:512
msgid "UUID"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1185
+#: htdocs/luci-static/resources/fchomo.js:1191
msgid "Unable to download unsupported type: %s"
msgstr ""
@@ -2971,8 +3030,8 @@ msgstr ""
msgid "Unknown error: %s"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:856
-#: htdocs/luci-static/resources/view/fchomo/node.js:1576
+#: htdocs/luci-static/resources/view/fchomo/node.js:867
+#: htdocs/luci-static/resources/view/fchomo/node.js:1590
msgid "UoT"
msgstr ""
@@ -2980,22 +3039,22 @@ msgstr ""
msgid "Update failed."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1508
+#: htdocs/luci-static/resources/view/fchomo/node.js:1522
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:375
msgid "Update interval"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1268
+#: htdocs/luci-static/resources/view/fchomo/node.js:1282
msgid "Upload bandwidth"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1269
+#: htdocs/luci-static/resources/view/fchomo/node.js:1283
msgid "Upload bandwidth in Mbps."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1034
-#: htdocs/luci-static/resources/view/fchomo/server.js:823
-#: htdocs/luci-static/resources/view/fchomo/server.js:863
+#: htdocs/luci-static/resources/fchomo/listeners.js:817
+#: htdocs/luci-static/resources/fchomo/listeners.js:857
+#: htdocs/luci-static/resources/view/fchomo/node.js:1048
msgid "Upload certificate"
msgstr ""
@@ -3003,17 +3062,17 @@ msgstr ""
msgid "Upload initial package"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1048
-#: htdocs/luci-static/resources/view/fchomo/server.js:838
+#: htdocs/luci-static/resources/fchomo/listeners.js:832
+#: htdocs/luci-static/resources/view/fchomo/node.js:1062
msgid "Upload key"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:820
+#: htdocs/luci-static/resources/fchomo/listeners.js:835
+#: htdocs/luci-static/resources/fchomo/listeners.js:860
#: htdocs/luci-static/resources/view/fchomo/global.js:306
-#: htdocs/luci-static/resources/view/fchomo/node.js:1037
#: htdocs/luci-static/resources/view/fchomo/node.js:1051
-#: htdocs/luci-static/resources/view/fchomo/server.js:826
-#: htdocs/luci-static/resources/view/fchomo/server.js:841
-#: htdocs/luci-static/resources/view/fchomo/server.js:866
+#: htdocs/luci-static/resources/view/fchomo/node.js:1065
msgid "Upload..."
msgstr ""
@@ -3037,7 +3096,7 @@ msgstr ""
msgid "Used to resolve the domain of the Proxy node."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:963
+#: htdocs/luci-static/resources/view/fchomo/node.js:974
msgid "Used to verify the hostname on the returned certificates."
msgstr ""
@@ -3045,8 +3104,8 @@ msgstr ""
msgid "User Authentication"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:160
#: htdocs/luci-static/resources/view/fchomo/node.js:256
-#: htdocs/luci-static/resources/view/fchomo/server.js:216
msgid "Username"
msgstr ""
@@ -3054,50 +3113,50 @@ msgstr ""
msgid "Users filter mode"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1198
+#: htdocs/luci-static/resources/view/fchomo/node.js:1212
msgid "V2ray HTTPUpgrade"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1203
+#: htdocs/luci-static/resources/view/fchomo/node.js:1217
msgid "V2ray HTTPUpgrade fast open"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:146
-#: htdocs/luci-static/resources/fchomo.js:179
+#: htdocs/luci-static/resources/fchomo.js:150
+#: htdocs/luci-static/resources/fchomo.js:184
msgid "VLESS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:145
-#: htdocs/luci-static/resources/fchomo.js:178
+#: htdocs/luci-static/resources/fchomo.js:149
+#: htdocs/luci-static/resources/fchomo.js:183
msgid "VMess"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1445
-#: htdocs/luci-static/resources/view/fchomo/node.js:1730
+#: htdocs/luci-static/resources/view/fchomo/node.js:1459
+#: htdocs/luci-static/resources/view/fchomo/node.js:1744
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:312
msgid "Value"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:343
+#: htdocs/luci-static/resources/fchomo.js:349
msgid "Verify if given"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:830
-#: htdocs/luci-static/resources/view/fchomo/server.js:554
+#: htdocs/luci-static/resources/fchomo/listeners.js:511
+#: htdocs/luci-static/resources/view/fchomo/node.js:503
+#: htdocs/luci-static/resources/view/fchomo/node.js:833
msgid "Version"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:838
+#: htdocs/luci-static/resources/view/fchomo/node.js:841
msgid "Version hint"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:120
#: htdocs/luci-static/resources/view/fchomo/node.js:223
-#: htdocs/luci-static/resources/view/fchomo/server.js:172
msgid "Vless Encryption fields"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:380
+#: htdocs/luci-static/resources/fchomo.js:386
msgid "Wait a random 0-111 milliseconds with 75% probability."
msgstr ""
@@ -3105,16 +3164,19 @@ msgstr ""
msgid "Warning"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1115
-#: htdocs/luci-static/resources/view/fchomo/node.js:1126
-#: htdocs/luci-static/resources/view/fchomo/node.js:1131
-#: htdocs/luci-static/resources/view/fchomo/server.js:971
-#: htdocs/luci-static/resources/view/fchomo/server.js:982
-#: htdocs/luci-static/resources/view/fchomo/server.js:987
+#: htdocs/luci-static/resources/fchomo/listeners.js:390
+#: htdocs/luci-static/resources/fchomo/listeners.js:965
+#: htdocs/luci-static/resources/fchomo/listeners.js:976
+#: htdocs/luci-static/resources/fchomo/listeners.js:981
+#: htdocs/luci-static/resources/view/fchomo/node.js:457
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+#: htdocs/luci-static/resources/view/fchomo/node.js:1129
+#: htdocs/luci-static/resources/view/fchomo/node.js:1140
+#: htdocs/luci-static/resources/view/fchomo/node.js:1145
msgid "WebSocket"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:132
+#: htdocs/luci-static/resources/view/fchomo/server.js:24
msgid "When used as a server, HomeProxy is a better choice."
msgstr ""
@@ -3122,23 +3184,23 @@ msgstr ""
msgid "White list"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:186
+#: htdocs/luci-static/resources/fchomo.js:192
msgid "WireGuard"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:749
+#: htdocs/luci-static/resources/view/fchomo/node.js:752
msgid "WireGuard peer public key."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:756
+#: htdocs/luci-static/resources/view/fchomo/node.js:759
msgid "WireGuard pre-shared key."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:741
+#: htdocs/luci-static/resources/view/fchomo/node.js:744
msgid "WireGuard requires base64-encoded private keys."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:617
+#: htdocs/luci-static/resources/fchomo/listeners.js:605
msgid "XOR mode"
msgstr ""
@@ -3154,23 +3216,23 @@ msgstr ""
msgid "YouTube"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1624
+#: htdocs/luci-static/resources/fchomo.js:1630
msgid "Your %s was successfully uploaded. Size: %sB."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:316
-#: htdocs/luci-static/resources/fchomo.js:329
-#: htdocs/luci-static/resources/fchomo.js:334
+#: htdocs/luci-static/resources/fchomo.js:322
+#: htdocs/luci-static/resources/fchomo.js:335
+#: htdocs/luci-static/resources/fchomo.js:340
#: htdocs/luci-static/resources/view/fchomo/node.js:646
msgid "aes-128-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:317
+#: htdocs/luci-static/resources/fchomo.js:323
msgid "aes-192-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:318
-#: htdocs/luci-static/resources/fchomo.js:335
+#: htdocs/luci-static/resources/fchomo.js:324
+#: htdocs/luci-static/resources/fchomo.js:341
msgid "aes-256-gcm"
msgstr ""
@@ -3182,15 +3244,15 @@ msgstr ""
msgid "bbr"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1039
-#: htdocs/luci-static/resources/view/fchomo/server.js:828
-#: htdocs/luci-static/resources/view/fchomo/server.js:868
+#: htdocs/luci-static/resources/fchomo/listeners.js:822
+#: htdocs/luci-static/resources/fchomo/listeners.js:862
+#: htdocs/luci-static/resources/view/fchomo/node.js:1053
msgid "certificate"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:319
-#: htdocs/luci-static/resources/fchomo.js:330
+#: htdocs/luci-static/resources/fchomo.js:325
#: htdocs/luci-static/resources/fchomo.js:336
+#: htdocs/luci-static/resources/fchomo.js:342
msgid "chacha20-ietf-poly1305"
msgstr ""
@@ -3202,8 +3264,8 @@ msgstr ""
msgid "cubic"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:569
-#: htdocs/luci-static/resources/view/fchomo/server.js:600
+#: htdocs/luci-static/resources/fchomo/listeners.js:557
+#: htdocs/luci-static/resources/fchomo/listeners.js:588
msgid "decryption"
msgstr ""
@@ -3211,36 +3273,36 @@ msgstr ""
msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1588
+#: htdocs/luci-static/resources/view/fchomo/node.js:1602
msgid "down"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:870
-#: htdocs/luci-static/resources/view/fchomo/node.js:893
-#: htdocs/luci-static/resources/view/fchomo/server.js:604
+#: htdocs/luci-static/resources/fchomo/listeners.js:592
+#: htdocs/luci-static/resources/view/fchomo/node.js:881
+#: htdocs/luci-static/resources/view/fchomo/node.js:904
msgid "encryption"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:435
-#: htdocs/luci-static/resources/view/fchomo/server.js:424
+#: htdocs/luci-static/resources/fchomo/listeners.js:374
+#: htdocs/luci-static/resources/view/fchomo/node.js:441
msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1114
-#: htdocs/luci-static/resources/view/fchomo/node.js:1125
-#: htdocs/luci-static/resources/view/fchomo/node.js:1130
-#: htdocs/luci-static/resources/view/fchomo/server.js:970
-#: htdocs/luci-static/resources/view/fchomo/server.js:981
-#: htdocs/luci-static/resources/view/fchomo/server.js:986
+#: htdocs/luci-static/resources/fchomo/listeners.js:964
+#: htdocs/luci-static/resources/fchomo/listeners.js:975
+#: htdocs/luci-static/resources/fchomo/listeners.js:980
+#: htdocs/luci-static/resources/view/fchomo/node.js:1128
+#: htdocs/luci-static/resources/view/fchomo/node.js:1139
+#: htdocs/luci-static/resources/view/fchomo/node.js:1144
msgid "gRPC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1181
+#: htdocs/luci-static/resources/view/fchomo/node.js:1195
msgid "gRPC User-Agent"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1177
-#: htdocs/luci-static/resources/view/fchomo/server.js:1005
+#: htdocs/luci-static/resources/fchomo/listeners.js:999
+#: htdocs/luci-static/resources/view/fchomo/node.js:1191
msgid "gRPC service name"
msgstr ""
@@ -3248,11 +3310,11 @@ msgstr ""
msgid "gVisor"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1219
+#: htdocs/luci-static/resources/view/fchomo/node.js:1233
msgid "h2mux"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:769
+#: htdocs/luci-static/resources/fchomo/listeners.js:757
msgid "least one keypair required"
msgstr ""
@@ -3266,17 +3328,17 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1480
#: htdocs/luci-static/resources/view/fchomo/client.js:1711
#: htdocs/luci-static/resources/view/fchomo/client.js:1767
-#: htdocs/luci-static/resources/view/fchomo/node.js:1411
+#: htdocs/luci-static/resources/view/fchomo/node.js:1425
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:232
msgid "mihomo config"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:362
+#: htdocs/luci-static/resources/fchomo.js:368
msgid "mlkem768x25519plus"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1285
-#: htdocs/luci-static/resources/view/fchomo/node.js:1566
+#: htdocs/luci-static/resources/view/fchomo/node.js:1299
+#: htdocs/luci-static/resources/view/fchomo/node.js:1580
msgid "mpTCP"
msgstr ""
@@ -3288,21 +3350,21 @@ msgstr ""
msgid "no-resolve"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1359
-#: htdocs/luci-static/resources/fchomo.js:1454
-#: htdocs/luci-static/resources/fchomo.js:1489
-#: htdocs/luci-static/resources/fchomo.js:1517
+#: htdocs/luci-static/resources/fchomo.js:1365
+#: htdocs/luci-static/resources/fchomo.js:1460
+#: htdocs/luci-static/resources/fchomo.js:1495
+#: htdocs/luci-static/resources/fchomo.js:1523
msgid "non-empty value"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:314
-#: htdocs/luci-static/resources/fchomo.js:328
-#: htdocs/luci-static/resources/fchomo.js:340
+#: htdocs/luci-static/resources/fchomo.js:320
+#: htdocs/luci-static/resources/fchomo.js:334
+#: htdocs/luci-static/resources/fchomo.js:346
+#: htdocs/luci-static/resources/fchomo/listeners.js:492
#: htdocs/luci-static/resources/view/fchomo/node.js:644
#: htdocs/luci-static/resources/view/fchomo/node.js:664
-#: htdocs/luci-static/resources/view/fchomo/node.js:799
+#: htdocs/luci-static/resources/view/fchomo/node.js:802
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:308
-#: htdocs/luci-static/resources/view/fchomo/server.js:535
msgid "none"
msgstr ""
@@ -3314,19 +3376,25 @@ msgstr ""
msgid "not included \",\""
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:200
+#: htdocs/luci-static/resources/fchomo.js:206
+#: htdocs/luci-static/resources/fchomo/listeners.js:523
+#: htdocs/luci-static/resources/fchomo/listeners.js:524
msgid "null"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:800
+#: htdocs/luci-static/resources/view/fchomo/node.js:803
msgid "obfs-simple"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
-msgid "only applies when %s is stream/poll/auto."
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
+msgid "only applies when %s is %s."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1546
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+msgid "only applies when %s is not %s."
+msgstr ""
+
+#: htdocs/luci-static/resources/view/fchomo/node.js:1560
msgid "override.proxy-name"
msgstr ""
@@ -3334,13 +3402,13 @@ msgstr ""
msgid "packet addr (v2ray-core v5+)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:449
-#: htdocs/luci-static/resources/view/fchomo/server.js:438
+#: htdocs/luci-static/resources/fchomo/listeners.js:388
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
msgid "poll"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1053
-#: htdocs/luci-static/resources/view/fchomo/server.js:843
+#: htdocs/luci-static/resources/fchomo/listeners.js:837
+#: htdocs/luci-static/resources/view/fchomo/node.js:1067
msgid "private key"
msgstr ""
@@ -3353,7 +3421,7 @@ msgstr ""
msgid "requires front-end adaptation using the API."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:804
+#: htdocs/luci-static/resources/view/fchomo/node.js:807
msgid "restls"
msgstr ""
@@ -3361,17 +3429,17 @@ msgstr ""
msgid "rule-set"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:803
-#: htdocs/luci-static/resources/view/fchomo/server.js:536
+#: htdocs/luci-static/resources/fchomo/listeners.js:493
+#: htdocs/luci-static/resources/view/fchomo/node.js:806
msgid "shadow-tls"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1217
+#: htdocs/luci-static/resources/view/fchomo/node.js:1231
msgid "smux"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:448
-#: htdocs/luci-static/resources/view/fchomo/server.js:437
+#: htdocs/luci-static/resources/fchomo/listeners.js:387
+#: htdocs/luci-static/resources/view/fchomo/node.js:454
msgid "split-stream"
msgstr ""
@@ -3379,7 +3447,11 @@ msgstr ""
msgid "src"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:296
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
+msgid "stream/poll/auto"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:246
msgid "sudoku-keypair"
msgstr ""
@@ -3387,87 +3459,87 @@ msgstr ""
msgid "unchecked"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:426
+#: htdocs/luci-static/resources/fchomo.js:432
msgid "unique UCI identifier"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:429
+#: htdocs/luci-static/resources/fchomo.js:435
msgid "unique identifier"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1526
+#: htdocs/luci-static/resources/fchomo.js:1532
msgid "unique value"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1582
+#: htdocs/luci-static/resources/view/fchomo/node.js:1596
msgid "up"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:495
+#: htdocs/luci-static/resources/fchomo/listeners.js:512
+#: htdocs/luci-static/resources/view/fchomo/node.js:504
#: htdocs/luci-static/resources/view/fchomo/node.js:539
-#: htdocs/luci-static/resources/view/fchomo/node.js:831
-#: htdocs/luci-static/resources/view/fchomo/node.js:863
-#: htdocs/luci-static/resources/view/fchomo/server.js:555
+#: htdocs/luci-static/resources/view/fchomo/node.js:834
+#: htdocs/luci-static/resources/view/fchomo/node.js:874
msgid "v1"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:496
-#: htdocs/luci-static/resources/view/fchomo/node.js:832
-#: htdocs/luci-static/resources/view/fchomo/node.js:864
-#: htdocs/luci-static/resources/view/fchomo/server.js:556
+#: htdocs/luci-static/resources/fchomo/listeners.js:513
+#: htdocs/luci-static/resources/view/fchomo/node.js:505
+#: htdocs/luci-static/resources/view/fchomo/node.js:835
+#: htdocs/luci-static/resources/view/fchomo/node.js:875
msgid "v2"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:497
-#: htdocs/luci-static/resources/view/fchomo/node.js:833
-#: htdocs/luci-static/resources/view/fchomo/server.js:557
+#: htdocs/luci-static/resources/fchomo/listeners.js:514
+#: htdocs/luci-static/resources/view/fchomo/node.js:506
+#: htdocs/luci-static/resources/view/fchomo/node.js:836
msgid "v3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1406
-#: htdocs/luci-static/resources/fchomo.js:1409
+#: htdocs/luci-static/resources/fchomo.js:1412
+#: htdocs/luci-static/resources/fchomo.js:1415
msgid "valid JSON format"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1013
+#: htdocs/luci-static/resources/view/fchomo/node.js:1027
msgid "valid SHA256 string with %d characters"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1431
-#: htdocs/luci-static/resources/fchomo.js:1434
+#: htdocs/luci-static/resources/fchomo.js:1437
+#: htdocs/luci-static/resources/fchomo.js:1440
msgid "valid URL"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1444
+#: htdocs/luci-static/resources/fchomo.js:1450
msgid "valid base64 key with %d characters"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1504
#: htdocs/luci-static/resources/fchomo.js:1510
+#: htdocs/luci-static/resources/fchomo.js:1516
msgid "valid format: 2x, 2p, 4v"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1491
+#: htdocs/luci-static/resources/fchomo.js:1497
msgid "valid key length with %d characters"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1369
+#: htdocs/luci-static/resources/fchomo.js:1375
msgid "valid port value"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1419
+#: htdocs/luci-static/resources/fchomo.js:1425
msgid "valid uuid"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:386
+#: htdocs/luci-static/resources/fchomo.js:392
msgid "vless-mlkem768"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:385
+#: htdocs/luci-static/resources/fchomo.js:391
msgid "vless-x25519"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:320
+#: htdocs/luci-static/resources/fchomo.js:326
msgid "xchacha20-ietf-poly1305"
msgstr ""
@@ -3475,7 +3547,7 @@ msgstr ""
msgid "yacd-meta"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1218
+#: htdocs/luci-static/resources/view/fchomo/node.js:1232
msgid "yamux"
msgstr ""
@@ -3487,6 +3559,6 @@ msgstr ""
msgid "zero"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1187
+#: htdocs/luci-static/resources/fchomo.js:1193
msgid "🡇"
msgstr ""
diff --git a/small/luci-app-fchomo/po/zh_Hans/fchomo.po b/small/luci-app-fchomo/po/zh_Hans/fchomo.po
index 606640fdcd..0ae3f997ab 100644
--- a/small/luci-app-fchomo/po/zh_Hans/fchomo.po
+++ b/small/luci-app-fchomo/po/zh_Hans/fchomo.po
@@ -12,30 +12,30 @@ msgstr ""
msgid "%s log"
msgstr "%s 日志"
-#: htdocs/luci-static/resources/fchomo.js:223
-#: htdocs/luci-static/resources/fchomo.js:224
-#: htdocs/luci-static/resources/fchomo.js:225
-#: htdocs/luci-static/resources/fchomo.js:226
-#: htdocs/luci-static/resources/fchomo.js:227
-#: htdocs/luci-static/resources/fchomo.js:228
+#: htdocs/luci-static/resources/fchomo.js:229
+#: htdocs/luci-static/resources/fchomo.js:230
+#: htdocs/luci-static/resources/fchomo.js:231
+#: htdocs/luci-static/resources/fchomo.js:232
+#: htdocs/luci-static/resources/fchomo.js:233
+#: htdocs/luci-static/resources/fchomo.js:234
msgid "%s ports"
msgstr "%s 端口"
-#: htdocs/luci-static/resources/fchomo.js:588
-#: htdocs/luci-static/resources/fchomo.js:591
+#: htdocs/luci-static/resources/fchomo.js:594
+#: htdocs/luci-static/resources/fchomo.js:597
#: htdocs/luci-static/resources/view/fchomo/client.js:315
msgid "(Imported)"
msgstr "(已导入)"
+#: htdocs/luci-static/resources/fchomo/listeners.js:840
+#: htdocs/luci-static/resources/fchomo/listeners.js:848
+#: htdocs/luci-static/resources/fchomo/listeners.js:857
#: htdocs/luci-static/resources/view/fchomo/global.js:543
#: htdocs/luci-static/resources/view/fchomo/global.js:549
-#: htdocs/luci-static/resources/view/fchomo/node.js:1028
-#: htdocs/luci-static/resources/view/fchomo/node.js:1034
#: htdocs/luci-static/resources/view/fchomo/node.js:1042
#: htdocs/luci-static/resources/view/fchomo/node.js:1048
-#: htdocs/luci-static/resources/view/fchomo/server.js:846
-#: htdocs/luci-static/resources/view/fchomo/server.js:854
-#: htdocs/luci-static/resources/view/fchomo/server.js:863
+#: htdocs/luci-static/resources/view/fchomo/node.js:1056
+#: htdocs/luci-static/resources/view/fchomo/node.js:1062
msgid "(mTLS)"
msgstr ""
@@ -46,19 +46,19 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1056
#: htdocs/luci-static/resources/view/fchomo/client.js:1057
#: htdocs/luci-static/resources/view/fchomo/client.js:1278
-#: htdocs/luci-static/resources/view/fchomo/node.js:1734
-#: htdocs/luci-static/resources/view/fchomo/node.js:1740
+#: htdocs/luci-static/resources/view/fchomo/node.js:1748
#: htdocs/luci-static/resources/view/fchomo/node.js:1754
-#: htdocs/luci-static/resources/view/fchomo/node.js:1760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1768
+#: htdocs/luci-static/resources/view/fchomo/node.js:1774
msgid "-- Please choose --"
msgstr "-- 请选择 --"
-#: htdocs/luci-static/resources/fchomo.js:375
+#: htdocs/luci-static/resources/fchomo.js:381
msgid "0-RTT reuse."
msgstr "0-RTT 重用。"
-#: htdocs/luci-static/resources/fchomo.js:372
-#: htdocs/luci-static/resources/fchomo.js:376
+#: htdocs/luci-static/resources/fchomo.js:378
+#: htdocs/luci-static/resources/fchomo.js:382
msgid "1-RTT only."
msgstr "仅限 1-RTT。"
@@ -66,15 +66,15 @@ msgstr "仅限 1-RTT。"
msgid "163Music"
msgstr "网抑云"
-#: htdocs/luci-static/resources/fchomo.js:322
+#: htdocs/luci-static/resources/fchomo.js:328
msgid "2022-blake3-aes-128-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:323
+#: htdocs/luci-static/resources/fchomo.js:329
msgid "2022-blake3-aes-256-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:324
+#: htdocs/luci-static/resources/fchomo.js:330
msgid "2022-blake3-chacha20-poly1305"
msgstr ""
@@ -82,14 +82,24 @@ msgstr ""
msgid "0 or 1 only."
msgstr "仅限 0 或 1。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1035
+#: htdocs/luci-static/resources/fchomo/listeners.js:818
+#: htdocs/luci-static/resources/fchomo/listeners.js:833
+#: htdocs/luci-static/resources/fchomo/listeners.js:858
#: htdocs/luci-static/resources/view/fchomo/node.js:1049
-#: htdocs/luci-static/resources/view/fchomo/server.js:824
-#: htdocs/luci-static/resources/view/fchomo/server.js:839
-#: htdocs/luci-static/resources/view/fchomo/server.js:864
+#: htdocs/luci-static/resources/view/fchomo/node.js:1063
msgid "Save your configuration before uploading files!"
msgstr "上传文件前请先保存配置!"
+#: htdocs/luci-static/resources/fchomo/listeners.js:239
+#: htdocs/luci-static/resources/view/fchomo/node.js:379
+msgid ""
+"A base64 string is used to fine-tune network behavior.* will be used if empty."
msgstr "CORS 允许的来源,留空则使用 *。"
-#: htdocs/luci-static/resources/fchomo.js:704
+#: htdocs/luci-static/resources/fchomo.js:710
msgid "Cancel"
msgstr "取消"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1007
+#: htdocs/luci-static/resources/view/fchomo/node.js:1021
msgid "Cert fingerprint"
msgstr "证书指纹"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1008
+#: htdocs/luci-static/resources/view/fchomo/node.js:1022
msgid ""
"Certificate fingerprint. Used to implement SSL Pinning and prevent MitM."
msgstr "证书指纹。用于实现 SSL证书固定 并防止 MitM。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1028
-#: htdocs/luci-static/resources/view/fchomo/server.js:816
+#: htdocs/luci-static/resources/fchomo/listeners.js:810
+#: htdocs/luci-static/resources/view/fchomo/node.js:1042
msgid "Certificate path"
msgstr "证书路径"
@@ -428,16 +444,16 @@ msgstr "大陆 IPv6 库版本"
msgid "China list version"
msgstr "大陆域名列表版本"
+#: htdocs/luci-static/resources/fchomo/listeners.js:213
+#: htdocs/luci-static/resources/fchomo/listeners.js:306
#: htdocs/luci-static/resources/view/fchomo/node.js:332
-#: htdocs/luci-static/resources/view/fchomo/node.js:385
+#: htdocs/luci-static/resources/view/fchomo/node.js:391
#: htdocs/luci-static/resources/view/fchomo/node.js:641
-#: htdocs/luci-static/resources/view/fchomo/server.js:269
-#: htdocs/luci-static/resources/view/fchomo/server.js:356
msgid "Chipher"
msgstr "加密方法"
-#: htdocs/luci-static/resources/view/fchomo/node.js:394
-#: htdocs/luci-static/resources/view/fchomo/server.js:365
+#: htdocs/luci-static/resources/fchomo/listeners.js:315
+#: htdocs/luci-static/resources/view/fchomo/node.js:400
msgid "Chipher must be enabled if obfuscate downlink is disabled."
msgstr "如果下行链路混淆功能被禁用,则必须启用加密。"
@@ -453,29 +469,29 @@ msgstr ""
"点击此处下载"
"最新的初始包。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:633
+#: htdocs/luci-static/resources/fchomo/listeners.js:849
#: htdocs/luci-static/resources/view/fchomo/global.js:550
-#: htdocs/luci-static/resources/view/fchomo/node.js:905
-#: htdocs/luci-static/resources/view/fchomo/node.js:1029
+#: htdocs/luci-static/resources/view/fchomo/node.js:916
#: htdocs/luci-static/resources/view/fchomo/node.js:1043
-#: htdocs/luci-static/resources/view/fchomo/server.js:645
-#: htdocs/luci-static/resources/view/fchomo/server.js:855
+#: htdocs/luci-static/resources/view/fchomo/node.js:1057
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:22
msgid "Client"
msgstr "客户端"
-#: htdocs/luci-static/resources/view/fchomo/server.js:854
+#: htdocs/luci-static/resources/fchomo/listeners.js:848
msgid "Client Auth Certificate path"
msgstr "客户端认证证书路径"
-#: htdocs/luci-static/resources/view/fchomo/server.js:846
+#: htdocs/luci-static/resources/fchomo/listeners.js:840
msgid "Client Auth type"
msgstr "客户端认证类型"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1074
+#: htdocs/luci-static/resources/view/fchomo/node.js:1088
msgid "Client fingerprint"
msgstr "客户端指纹"
-#: htdocs/luci-static/resources/view/fchomo/server.js:352
+#: htdocs/luci-static/resources/fchomo/listeners.js:302
msgid "Client key"
msgstr "客户端密钥"
@@ -487,22 +503,21 @@ msgstr "客户端状态"
msgid "Collecting data..."
msgstr "收集数据中..."
-#: htdocs/luci-static/resources/fchomo.js:221
-#: htdocs/luci-static/resources/fchomo.js:222
+#: htdocs/luci-static/resources/fchomo.js:227
+#: htdocs/luci-static/resources/fchomo.js:228
msgid "Common ports (bypass P2P traffic)"
msgstr "常用端口(绕过 P2P 流量)"
-#: htdocs/luci-static/resources/fchomo.js:1303
+#: htdocs/luci-static/resources/fchomo.js:1309
msgid "Complete"
msgstr "完成"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1555
+#: htdocs/luci-static/resources/view/fchomo/node.js:1569
msgid "Configuration Items"
msgstr "配置项"
-#: htdocs/luci-static/resources/view/fchomo/node.js:515
-#: htdocs/luci-static/resources/view/fchomo/node.js:717
-#: htdocs/luci-static/resources/view/fchomo/server.js:454
+#: htdocs/luci-static/resources/fchomo/listeners.js:537
+#: htdocs/luci-static/resources/view/fchomo/node.js:854
msgid "Congestion controller"
msgstr "拥塞控制器"
@@ -510,19 +525,19 @@ msgstr "拥塞控制器"
msgid "Connection check"
msgstr "连接检查"
-#: htdocs/luci-static/resources/fchomo.js:573
+#: htdocs/luci-static/resources/fchomo.js:579
msgid "Content copied to clipboard!"
msgstr "内容已复制到剪贴板!"
#: htdocs/luci-static/resources/view/fchomo/client.js:670
-#: htdocs/luci-static/resources/view/fchomo/node.js:1465
-#: htdocs/luci-static/resources/view/fchomo/node.js:1491
+#: htdocs/luci-static/resources/view/fchomo/node.js:1479
+#: htdocs/luci-static/resources/view/fchomo/node.js:1505
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:332
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:358
msgid "Content will not be verified, Please make sure you enter it correctly."
msgstr "内容将不会被验证,请确保输入正确。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1464
+#: htdocs/luci-static/resources/view/fchomo/node.js:1478
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:331
msgid "Contents"
msgstr "内容"
@@ -531,7 +546,7 @@ msgstr "内容"
msgid "Contents have been saved."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:575
+#: htdocs/luci-static/resources/fchomo.js:581
msgid "Copy"
msgstr "复制"
@@ -547,7 +562,7 @@ msgstr "Cron 表达式"
msgid "Custom Direct List"
msgstr "自定义直连列表"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1526
+#: htdocs/luci-static/resources/view/fchomo/node.js:1540
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:393
msgid "Custom HTTP header."
msgstr "自定义 HTTP header。"
@@ -556,8 +571,8 @@ msgstr "自定义 HTTP header。"
msgid "Custom Proxy List"
msgstr "自定义代理列表"
-#: htdocs/luci-static/resources/view/fchomo/node.js:407
-#: htdocs/luci-static/resources/view/fchomo/server.js:378
+#: htdocs/luci-static/resources/fchomo/listeners.js:328
+#: htdocs/luci-static/resources/view/fchomo/node.js:413
msgid "Custom byte layout"
msgstr "自定义字节布局"
@@ -566,7 +581,7 @@ msgid ""
"Custom internal hosts. Support yaml or json format."
msgstr "自定义内部 hosts。支持 yaml 或 json 格式。"
-#: htdocs/luci-static/resources/fchomo.js:170
+#: htdocs/luci-static/resources/fchomo.js:175
msgid "DIRECT"
msgstr ""
@@ -583,7 +598,7 @@ msgstr " DNS 端口"
#: htdocs/luci-static/resources/view/fchomo/client.js:1428
#: htdocs/luci-static/resources/view/fchomo/client.js:1437
#: htdocs/luci-static/resources/view/fchomo/node.js:712
-#: htdocs/luci-static/resources/view/fchomo/node.js:792
+#: htdocs/luci-static/resources/view/fchomo/node.js:795
msgid "DNS server"
msgstr "DNS 服务器"
@@ -611,15 +626,15 @@ msgstr "默认 DNS(由 WAN 下发)"
msgid "Default DNS server"
msgstr "默认 DNS 服务器"
-#: htdocs/luci-static/resources/view/fchomo/node.js:763
+#: htdocs/luci-static/resources/view/fchomo/node.js:766
msgid "Destination addresses allowed to be forwarded via Wireguard."
msgstr "允许通过 WireGuard 转发的目的地址"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1733
+#: htdocs/luci-static/resources/view/fchomo/node.js:1747
msgid "Destination provider"
msgstr "落地供应商"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1739
+#: htdocs/luci-static/resources/view/fchomo/node.js:1753
msgid "Destination proxy node"
msgstr "落地代理节点"
@@ -627,8 +642,8 @@ msgstr "落地代理节点"
msgid "Dial fields"
msgstr "拨号字段"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1746
-#: htdocs/luci-static/resources/view/fchomo/node.js:1766
+#: htdocs/luci-static/resources/view/fchomo/node.js:1760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1780
msgid "Different chain head/tail"
msgstr "不同的链头/链尾"
@@ -648,9 +663,9 @@ msgstr "直连 IPv6 地址"
msgid "Direct MAC-s"
msgstr "直连 MAC 地址"
+#: htdocs/luci-static/resources/fchomo/listeners.js:193
#: htdocs/luci-static/resources/view/fchomo/global.js:403
#: htdocs/luci-static/resources/view/fchomo/node.js:298
-#: htdocs/luci-static/resources/view/fchomo/server.js:249
msgid "Disable"
msgstr "禁用"
@@ -666,7 +681,7 @@ msgstr "禁用 quic-go 的 通用分段卸载(GSO)"
msgid "Disable ICMP Forwarding"
msgstr "禁用 ICMP 转发"
-#: htdocs/luci-static/resources/view/fchomo/node.js:956
+#: htdocs/luci-static/resources/view/fchomo/node.js:967
msgid "Disable SNI"
msgstr "禁用 SNI"
@@ -694,46 +709,46 @@ msgstr ""
msgid "Domain"
msgstr "域名"
-#: htdocs/luci-static/resources/view/fchomo/node.js:957
+#: htdocs/luci-static/resources/view/fchomo/node.js:968
msgid "Donot send server name in ClientHello."
msgstr "不要在 ClientHello 中发送服务器名称。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1577
-#: htdocs/luci-static/resources/view/fchomo/node.js:1021
-#: htdocs/luci-static/resources/view/fchomo/node.js:1595
+#: htdocs/luci-static/resources/view/fchomo/node.js:1035
+#: htdocs/luci-static/resources/view/fchomo/node.js:1609
msgid "Donot verifying server certificate."
msgstr "不验证服务器证书。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1274
+#: htdocs/luci-static/resources/view/fchomo/node.js:1288
msgid "Download bandwidth"
msgstr "下载带宽"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1275
+#: htdocs/luci-static/resources/view/fchomo/node.js:1289
msgid "Download bandwidth in Mbps."
msgstr "下载带宽(单位:Mbps)。"
-#: htdocs/luci-static/resources/fchomo.js:1182
+#: htdocs/luci-static/resources/fchomo.js:1188
msgid "Download failed: %s"
msgstr "下载失败: %s"
-#: htdocs/luci-static/resources/fchomo.js:1180
+#: htdocs/luci-static/resources/fchomo.js:1186
msgid "Download successful."
msgstr "下载成功。"
-#: htdocs/luci-static/resources/fchomo.js:156
+#: htdocs/luci-static/resources/fchomo.js:161
msgid "Dual stack"
msgstr "双栈"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1068
+#: htdocs/luci-static/resources/view/fchomo/node.js:1082
msgid "ECH HTTPS record query servername"
msgstr "ECH HTTPS 记录查询域名"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1062
-#: htdocs/luci-static/resources/view/fchomo/server.js:912
+#: htdocs/luci-static/resources/fchomo/listeners.js:906
+#: htdocs/luci-static/resources/view/fchomo/node.js:1076
msgid "ECH config"
msgstr "ECH 配置"
-#: htdocs/luci-static/resources/view/fchomo/server.js:871
+#: htdocs/luci-static/resources/fchomo/listeners.js:865
msgid "ECH key"
msgstr "ECH 密钥"
@@ -749,14 +764,18 @@ msgstr ""
msgid "ETag support"
msgstr "ETag 支持"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1187
+#: htdocs/luci-static/resources/view/fchomo/node.js:1201
msgid "Early Data first packet length limit."
msgstr "前置数据长度阈值"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1193
+#: htdocs/luci-static/resources/view/fchomo/node.js:1207
msgid "Early Data header name"
msgstr "前置数据标头"
+#: htdocs/luci-static/resources/view/fchomo/inbound.js:20
+msgid "Edit inbound"
+msgstr "编辑入站"
+
#: htdocs/luci-static/resources/view/fchomo/node.js:203
msgid "Edit node"
msgstr "编辑节点"
@@ -765,15 +784,16 @@ msgstr "编辑节点"
msgid "Edit ruleset"
msgstr "编辑规则集"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1462
+#: htdocs/luci-static/resources/view/fchomo/node.js:1476
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:329
msgid "Editer"
msgstr "编辑器"
-#: htdocs/luci-static/resources/fchomo.js:366
+#: htdocs/luci-static/resources/fchomo.js:372
msgid "Eliminate encryption header characteristics"
msgstr "消除加密头特征"
+#: htdocs/luci-static/resources/fchomo/listeners.js:132
#: htdocs/luci-static/resources/view/fchomo/client.js:931
#: htdocs/luci-static/resources/view/fchomo/client.js:1024
#: htdocs/luci-static/resources/view/fchomo/client.js:1262
@@ -784,12 +804,11 @@ msgstr "消除加密头特征"
#: htdocs/luci-static/resources/view/fchomo/global.js:401
#: htdocs/luci-static/resources/view/fchomo/global.js:680
#: htdocs/luci-static/resources/view/fchomo/node.js:234
-#: htdocs/luci-static/resources/view/fchomo/node.js:1435
-#: htdocs/luci-static/resources/view/fchomo/node.js:1631
-#: htdocs/luci-static/resources/view/fchomo/node.js:1720
+#: htdocs/luci-static/resources/view/fchomo/node.js:1449
+#: htdocs/luci-static/resources/view/fchomo/node.js:1645
+#: htdocs/luci-static/resources/view/fchomo/node.js:1734
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:257
-#: htdocs/luci-static/resources/view/fchomo/server.js:157
-#: htdocs/luci-static/resources/view/fchomo/server.js:184
+#: htdocs/luci-static/resources/view/fchomo/server.js:49
msgid "Enable"
msgstr "启用"
@@ -814,49 +833,49 @@ msgstr ""
"为出站连接启用 IP4P 转换"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1056
+#: htdocs/luci-static/resources/view/fchomo/node.js:1070
msgid "Enable ECH"
msgstr "启用 ECH"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1262
+#: htdocs/luci-static/resources/view/fchomo/node.js:1276
msgid "Enable TCP Brutal"
msgstr "启用 TCP Brutal"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1263
+#: htdocs/luci-static/resources/view/fchomo/node.js:1277
msgid "Enable TCP Brutal congestion control algorithm"
msgstr "启用 TCP Brutal 拥塞控制算法。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1251
+#: htdocs/luci-static/resources/view/fchomo/node.js:1265
msgid "Enable multiplexing only for TCP."
msgstr "仅为 TCP 启用多路复用。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:434
-#: htdocs/luci-static/resources/view/fchomo/server.js:423
+#: htdocs/luci-static/resources/fchomo/listeners.js:373
+#: htdocs/luci-static/resources/view/fchomo/node.js:440
msgid "Enable obfuscate for downlink"
msgstr "启用下行链路混淆"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1245
+#: htdocs/luci-static/resources/view/fchomo/node.js:1259
msgid "Enable padding"
msgstr "启用填充"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1256
+#: htdocs/luci-static/resources/view/fchomo/node.js:1270
msgid "Enable statistic"
msgstr "启用统计"
-#: htdocs/luci-static/resources/view/fchomo/node.js:857
-#: htdocs/luci-static/resources/view/fchomo/node.js:1577
+#: htdocs/luci-static/resources/view/fchomo/node.js:868
+#: htdocs/luci-static/resources/view/fchomo/node.js:1591
msgid ""
"Enable the SUoT protocol, requires server support. Conflict with Multiplex."
msgstr "启用 SUoT 协议,需要服务端支持。与多路复用冲突。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:199
#: htdocs/luci-static/resources/view/fchomo/node.js:304
-#: htdocs/luci-static/resources/view/fchomo/server.js:255
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/server.js:608
+#: htdocs/luci-static/resources/fchomo/listeners.js:596
msgid "Encryption method"
msgstr "加密方法"
@@ -883,7 +902,7 @@ msgid ""
"if empty."
msgstr "超过此限制将会触发强制健康检查。留空则使用 5。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1689
+#: htdocs/luci-static/resources/view/fchomo/node.js:1703
msgid "Exclude matched node types."
msgstr "排除匹配的节点类型。"
@@ -896,7 +915,7 @@ msgstr ""
"rel=\"noreferrer noopener\">此处。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1161
-#: htdocs/luci-static/resources/view/fchomo/node.js:1682
+#: htdocs/luci-static/resources/view/fchomo/node.js:1696
msgid "Exclude nodes that meet keywords or regexps."
msgstr "排除匹配关键词或表达式的节点。"
@@ -905,64 +924,65 @@ msgid "Expand/Collapse result"
msgstr "展开/收起 结果"
#: htdocs/luci-static/resources/view/fchomo/client.js:1121
-#: htdocs/luci-static/resources/view/fchomo/node.js:1667
+#: htdocs/luci-static/resources/view/fchomo/node.js:1681
msgid "Expected HTTP code. 204 will be used if empty."
msgstr "预期的 HTTP code。留空则使用 204。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1123
-#: htdocs/luci-static/resources/view/fchomo/node.js:1669
+#: htdocs/luci-static/resources/view/fchomo/node.js:1683
msgid "Expected status"
msgstr "预期状态"
-#: htdocs/luci-static/resources/fchomo.js:423
-#: htdocs/luci-static/resources/fchomo.js:426
#: htdocs/luci-static/resources/fchomo.js:429
-#: htdocs/luci-static/resources/fchomo.js:1320
-#: htdocs/luci-static/resources/fchomo.js:1328
-#: htdocs/luci-static/resources/fchomo.js:1336
-#: htdocs/luci-static/resources/fchomo.js:1359
-#: htdocs/luci-static/resources/fchomo.js:1362
-#: htdocs/luci-static/resources/fchomo.js:1369
-#: htdocs/luci-static/resources/fchomo.js:1385
-#: htdocs/luci-static/resources/fchomo.js:1394
-#: htdocs/luci-static/resources/fchomo.js:1406
-#: htdocs/luci-static/resources/fchomo.js:1409
-#: htdocs/luci-static/resources/fchomo.js:1419
-#: htdocs/luci-static/resources/fchomo.js:1431
-#: htdocs/luci-static/resources/fchomo.js:1434
-#: htdocs/luci-static/resources/fchomo.js:1444
-#: htdocs/luci-static/resources/fchomo.js:1454
-#: htdocs/luci-static/resources/fchomo.js:1489
-#: htdocs/luci-static/resources/fchomo.js:1491
-#: htdocs/luci-static/resources/fchomo.js:1504
+#: htdocs/luci-static/resources/fchomo.js:432
+#: htdocs/luci-static/resources/fchomo.js:435
+#: htdocs/luci-static/resources/fchomo.js:1326
+#: htdocs/luci-static/resources/fchomo.js:1334
+#: htdocs/luci-static/resources/fchomo.js:1342
+#: htdocs/luci-static/resources/fchomo.js:1365
+#: htdocs/luci-static/resources/fchomo.js:1368
+#: htdocs/luci-static/resources/fchomo.js:1375
+#: htdocs/luci-static/resources/fchomo.js:1391
+#: htdocs/luci-static/resources/fchomo.js:1400
+#: htdocs/luci-static/resources/fchomo.js:1412
+#: htdocs/luci-static/resources/fchomo.js:1415
+#: htdocs/luci-static/resources/fchomo.js:1425
+#: htdocs/luci-static/resources/fchomo.js:1437
+#: htdocs/luci-static/resources/fchomo.js:1440
+#: htdocs/luci-static/resources/fchomo.js:1450
+#: htdocs/luci-static/resources/fchomo.js:1460
+#: htdocs/luci-static/resources/fchomo.js:1495
+#: htdocs/luci-static/resources/fchomo.js:1497
#: htdocs/luci-static/resources/fchomo.js:1510
-#: htdocs/luci-static/resources/fchomo.js:1517
-#: htdocs/luci-static/resources/fchomo.js:1526
+#: htdocs/luci-static/resources/fchomo.js:1516
+#: htdocs/luci-static/resources/fchomo.js:1523
+#: htdocs/luci-static/resources/fchomo.js:1532
+#: htdocs/luci-static/resources/fchomo/listeners.js:315
+#: htdocs/luci-static/resources/fchomo/listeners.js:359
+#: htdocs/luci-static/resources/fchomo/listeners.js:625
+#: htdocs/luci-static/resources/fchomo/listeners.js:656
+#: htdocs/luci-static/resources/fchomo/listeners.js:757
#: htdocs/luci-static/resources/view/fchomo/client.js:68
#: htdocs/luci-static/resources/view/fchomo/client.js:1018
#: htdocs/luci-static/resources/view/fchomo/client.js:1508
#: htdocs/luci-static/resources/view/fchomo/global.js:880
-#: htdocs/luci-static/resources/view/fchomo/node.js:394
-#: htdocs/luci-static/resources/view/fchomo/node.js:427
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
-#: htdocs/luci-static/resources/view/fchomo/node.js:928
-#: htdocs/luci-static/resources/view/fchomo/node.js:1013
-#: htdocs/luci-static/resources/view/fchomo/node.js:1746
-#: htdocs/luci-static/resources/view/fchomo/node.js:1766
+#: htdocs/luci-static/resources/view/fchomo/node.js:400
+#: htdocs/luci-static/resources/view/fchomo/node.js:433
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
+#: htdocs/luci-static/resources/view/fchomo/node.js:939
+#: htdocs/luci-static/resources/view/fchomo/node.js:1027
+#: htdocs/luci-static/resources/view/fchomo/node.js:1760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1780
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:284
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:298
-#: htdocs/luci-static/resources/view/fchomo/server.js:365
-#: htdocs/luci-static/resources/view/fchomo/server.js:409
-#: htdocs/luci-static/resources/view/fchomo/server.js:637
-#: htdocs/luci-static/resources/view/fchomo/server.js:668
-#: htdocs/luci-static/resources/view/fchomo/server.js:769
msgid "Expecting: %s"
msgstr "请输入:%s"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1123
-#: htdocs/luci-static/resources/view/fchomo/node.js:1130
-#: htdocs/luci-static/resources/view/fchomo/server.js:979
-#: htdocs/luci-static/resources/view/fchomo/server.js:986
+#: htdocs/luci-static/resources/fchomo/listeners.js:973
+#: htdocs/luci-static/resources/fchomo/listeners.js:980
+#: htdocs/luci-static/resources/view/fchomo/node.js:1137
+#: htdocs/luci-static/resources/view/fchomo/node.js:1144
msgid "Expecting: only support %s."
msgstr "请输入:仅支援 %s."
@@ -981,23 +1001,24 @@ msgstr "实验性"
msgid "Factor"
msgstr "条件"
-#: htdocs/luci-static/resources/fchomo.js:1261
+#: htdocs/luci-static/resources/fchomo.js:1267
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:1214
+#: htdocs/luci-static/resources/fchomo.js:1220
msgid "Failed to generate %s, error: %s."
msgstr "生成 %s 失败,错误:%s。"
-#: htdocs/luci-static/resources/fchomo.js:1626
+#: htdocs/luci-static/resources/fchomo.js:1632
msgid "Failed to upload %s, error: %s."
msgstr "上传 %s 失败,错误:%s。"
-#: htdocs/luci-static/resources/fchomo.js:1645
+#: htdocs/luci-static/resources/fchomo.js:1651
msgid "Failed to upload, error: %s."
msgstr "上传失败,错误:%s。"
-#: htdocs/luci-static/resources/fchomo.js:213
+#: htdocs/luci-static/resources/fchomo.js:219
+#: htdocs/luci-static/resources/fchomo/listeners.js:398
msgid "Fallback"
msgstr "自动回退"
@@ -1011,7 +1032,7 @@ msgid "Fallback filter"
msgstr "後備过滤器"
#: htdocs/luci-static/resources/view/fchomo/client.js:1156
-#: htdocs/luci-static/resources/view/fchomo/node.js:1676
+#: htdocs/luci-static/resources/view/fchomo/node.js:1690
msgid "Filter nodes that meet keywords or regexps."
msgstr "过滤匹配关键字或表达式的节点。"
@@ -1036,12 +1057,12 @@ msgstr "兜底 DNS 服务器 (用于未被投毒污染的域名)"
msgid "Final DNS server (For poisoned domains)"
msgstr "兜底 DNS 服务器 (用于已被投毒污染的域名)"
-#: htdocs/luci-static/resources/view/fchomo/server.js:188
+#: htdocs/luci-static/resources/fchomo/listeners.js:136
msgid "Firewall"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:466
#: htdocs/luci-static/resources/view/fchomo/node.js:627
-#: htdocs/luci-static/resources/view/fchomo/server.js:518
msgid "Flow"
msgstr "流控"
@@ -1054,8 +1075,8 @@ msgstr ""
"noopener\">%s."
#: htdocs/luci-static/resources/view/fchomo/client.js:1122
-#: htdocs/luci-static/resources/view/fchomo/node.js:1545
-#: htdocs/luci-static/resources/view/fchomo/node.js:1668
+#: htdocs/luci-static/resources/view/fchomo/node.js:1559
+#: htdocs/luci-static/resources/view/fchomo/node.js:1682
msgid ""
"For format see %s."
@@ -1064,7 +1085,7 @@ msgstr ""
"a>."
#: htdocs/luci-static/resources/view/fchomo/node.js:707
-#: htdocs/luci-static/resources/view/fchomo/node.js:787
+#: htdocs/luci-static/resources/view/fchomo/node.js:790
msgid "Force DNS remote resolution."
msgstr "强制 DNS 远程解析。"
@@ -1083,7 +1104,7 @@ msgstr "格式"
msgid "FullCombo Shark!"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1149
+#: htdocs/luci-static/resources/view/fchomo/node.js:1163
msgid "GET"
msgstr ""
@@ -1095,10 +1116,10 @@ msgstr "GFW 域名列表版本"
msgid "General"
msgstr "常规"
+#: htdocs/luci-static/resources/fchomo/listeners.js:119
#: htdocs/luci-static/resources/view/fchomo/client.js:1009
#: htdocs/luci-static/resources/view/fchomo/node.js:222
-#: htdocs/luci-static/resources/view/fchomo/node.js:1425
-#: htdocs/luci-static/resources/view/fchomo/server.js:171
+#: htdocs/luci-static/resources/view/fchomo/node.js:1439
msgid "General fields"
msgstr "常规字段"
@@ -1106,16 +1127,16 @@ msgstr "常规字段"
msgid "General settings"
msgstr "常规设置"
-#: htdocs/luci-static/resources/fchomo.js:524
-#: htdocs/luci-static/resources/fchomo.js:526
-#: htdocs/luci-static/resources/fchomo.js:540
-#: htdocs/luci-static/resources/fchomo.js:542
+#: htdocs/luci-static/resources/fchomo.js:530
+#: htdocs/luci-static/resources/fchomo.js:532
+#: htdocs/luci-static/resources/fchomo.js:546
+#: htdocs/luci-static/resources/fchomo.js:548
+#: htdocs/luci-static/resources/fchomo/listeners.js:293
+#: htdocs/luci-static/resources/fchomo/listeners.js:334
+#: htdocs/luci-static/resources/fchomo/listeners.js:336
+#: htdocs/luci-static/resources/fchomo/listeners.js:729
+#: htdocs/luci-static/resources/fchomo/listeners.js:898
#: htdocs/luci-static/resources/view/fchomo/global.js:587
-#: htdocs/luci-static/resources/view/fchomo/server.js:343
-#: htdocs/luci-static/resources/view/fchomo/server.js:384
-#: htdocs/luci-static/resources/view/fchomo/server.js:386
-#: htdocs/luci-static/resources/view/fchomo/server.js:741
-#: htdocs/luci-static/resources/view/fchomo/server.js:904
msgid "Generate"
msgstr "生成"
@@ -1166,7 +1187,7 @@ msgstr "全局填充"
msgid "Google"
msgstr "谷歌"
-#: htdocs/luci-static/resources/fchomo.js:226
+#: htdocs/luci-static/resources/fchomo.js:232
msgid "Google FCM"
msgstr "谷歌 FCM"
@@ -1178,48 +1199,49 @@ msgstr "授予 fchomo 访问 UCI 配置的权限"
msgid "Group"
msgstr "组"
-#: htdocs/luci-static/resources/fchomo.js:139
-#: htdocs/luci-static/resources/fchomo.js:171
-#: htdocs/luci-static/resources/view/fchomo/node.js:810
-#: htdocs/luci-static/resources/view/fchomo/node.js:1112
-#: htdocs/luci-static/resources/view/fchomo/node.js:1123
-#: htdocs/luci-static/resources/view/fchomo/server.js:979
+#: htdocs/luci-static/resources/fchomo.js:143
+#: htdocs/luci-static/resources/fchomo.js:176
+#: htdocs/luci-static/resources/fchomo/listeners.js:973
+#: htdocs/luci-static/resources/view/fchomo/node.js:813
+#: htdocs/luci-static/resources/view/fchomo/node.js:1126
+#: htdocs/luci-static/resources/view/fchomo/node.js:1137
msgid "HTTP"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/node.js:267
-#: htdocs/luci-static/resources/view/fchomo/node.js:1171
-#: htdocs/luci-static/resources/view/fchomo/node.js:1525
+#: htdocs/luci-static/resources/view/fchomo/node.js:1185
+#: htdocs/luci-static/resources/view/fchomo/node.js:1539
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:392
msgid "HTTP header"
msgstr "HTTP header"
-#: htdocs/luci-static/resources/view/fchomo/node.js:440
-#: htdocs/luci-static/resources/view/fchomo/server.js:429
+#: htdocs/luci-static/resources/fchomo/listeners.js:379
+#: htdocs/luci-static/resources/view/fchomo/node.js:446
msgid "HTTP mask"
msgstr "HTTP 伪装"
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
-#: htdocs/luci-static/resources/view/fchomo/server.js:434
+#: htdocs/luci-static/resources/fchomo/listeners.js:384
+#: htdocs/luci-static/resources/view/fchomo/node.js:451
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
msgid "HTTP mask mode"
msgstr "HTTP 伪装模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:469
+#: htdocs/luci-static/resources/view/fchomo/node.js:476
msgid "HTTP mask multiplex"
msgstr "HTTP 伪装多路复用"
-#: htdocs/luci-static/resources/view/fchomo/node.js:454
-#: htdocs/luci-static/resources/view/fchomo/node.js:459
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
+#: htdocs/luci-static/resources/view/fchomo/node.js:466
msgid "HTTP mask: %s"
msgstr "HTTP 伪装: %s"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1148
+#: htdocs/luci-static/resources/view/fchomo/node.js:1162
msgid "HTTP request method"
msgstr "HTTP 请求方法"
-#: htdocs/luci-static/resources/view/fchomo/node.js:465
-#: htdocs/luci-static/resources/view/fchomo/server.js:443
+#: htdocs/luci-static/resources/fchomo/listeners.js:394
+#: htdocs/luci-static/resources/view/fchomo/node.js:472
msgid "HTTP root path"
msgstr "HTTP 根路径"
@@ -1227,15 +1249,15 @@ msgstr "HTTP 根路径"
msgid "HTTP/3"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:263
+#: htdocs/luci-static/resources/fchomo/listeners.js:207
msgid ""
"HTTP3 server behavior when authentication fails.%s will be used if empty."
msgstr "单位为字节。留空则使用 %s。"
@@ -1423,15 +1449,15 @@ msgstr "单位为毫秒。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1108
#: htdocs/luci-static/resources/view/fchomo/client.js:1137
-#: htdocs/luci-static/resources/view/fchomo/node.js:1654
+#: htdocs/luci-static/resources/view/fchomo/node.js:1668
msgid "In millisecond. %s will be used if empty."
msgstr "单位为毫秒。留空则使用 %s。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:367
+#: htdocs/luci-static/resources/fchomo/listeners.js:418
+#: htdocs/luci-static/resources/fchomo/listeners.js:425
#: htdocs/luci-static/resources/view/fchomo/node.js:601
#: htdocs/luci-static/resources/view/fchomo/node.js:608
-#: htdocs/luci-static/resources/view/fchomo/server.js:417
-#: htdocs/luci-static/resources/view/fchomo/server.js:470
-#: htdocs/luci-static/resources/view/fchomo/server.js:477
msgid "In seconds."
msgstr "单位为秒。"
@@ -1440,14 +1466,14 @@ msgstr "单位为秒。"
#: htdocs/luci-static/resources/view/fchomo/global.js:430
#: htdocs/luci-static/resources/view/fchomo/global.js:515
#: htdocs/luci-static/resources/view/fchomo/node.js:280
-#: htdocs/luci-static/resources/view/fchomo/node.js:1509
-#: htdocs/luci-static/resources/view/fchomo/node.js:1647
+#: htdocs/luci-static/resources/view/fchomo/node.js:1523
+#: htdocs/luci-static/resources/view/fchomo/node.js:1661
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:376
msgid "In seconds. %s will be used if empty."
msgstr "单位为秒。留空则使用 %s。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:917
-#: htdocs/luci-static/resources/view/fchomo/server.js:657
+#: htdocs/luci-static/resources/fchomo/listeners.js:645
+#: htdocs/luci-static/resources/view/fchomo/node.js:928
msgid ""
"In the order of one Padding-Length and one Padding-"
"Interval, infinite concatenation."
@@ -1456,6 +1482,8 @@ msgstr ""
"序,无限连接。"
#: htdocs/luci-static/resources/view/fchomo/global.js:449
+#: htdocs/luci-static/resources/view/fchomo/inbound.js:28
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:38
msgid "Inbound"
msgstr "入站"
@@ -1487,7 +1515,7 @@ msgstr "引入所有代理节点。"
msgid "Info"
msgstr "信息"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1442
+#: htdocs/luci-static/resources/view/fchomo/node.js:1456
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:272
msgid "Inline"
msgstr "内嵌"
@@ -1497,25 +1525,26 @@ msgid "Interface Control"
msgstr "接口控制"
#: htdocs/luci-static/resources/fchomo.js:49
-#: htdocs/luci-static/resources/fchomo.js:155
-#: htdocs/luci-static/resources/fchomo.js:348
+#: htdocs/luci-static/resources/fchomo.js:160
+#: htdocs/luci-static/resources/fchomo.js:354
msgid "Keep default"
msgstr "保持缺省"
-#: htdocs/luci-static/resources/view/fchomo/node.js:379
-#: htdocs/luci-static/resources/view/fchomo/server.js:299
+#: htdocs/luci-static/resources/fchomo/listeners.js:249
+#: htdocs/luci-static/resources/view/fchomo/node.js:385
msgid "Key"
msgstr "密钥"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1042
-#: htdocs/luci-static/resources/view/fchomo/server.js:831
+#: htdocs/luci-static/resources/fchomo/listeners.js:825
+#: htdocs/luci-static/resources/view/fchomo/node.js:1056
msgid "Key path"
msgstr "证书路径"
-#: htdocs/luci-static/resources/view/fchomo/server.js:676
+#: htdocs/luci-static/resources/fchomo/listeners.js:664
msgid "Keypairs"
msgstr "密钥对"
+#: htdocs/luci-static/resources/fchomo/listeners.js:127
#: htdocs/luci-static/resources/view/fchomo/client.js:1014
#: htdocs/luci-static/resources/view/fchomo/client.js:1257
#: htdocs/luci-static/resources/view/fchomo/client.js:1349
@@ -1523,24 +1552,23 @@ msgstr "密钥对"
#: htdocs/luci-static/resources/view/fchomo/client.js:1719
#: htdocs/luci-static/resources/view/fchomo/client.js:1775
#: htdocs/luci-static/resources/view/fchomo/node.js:229
-#: htdocs/luci-static/resources/view/fchomo/node.js:1430
-#: htdocs/luci-static/resources/view/fchomo/node.js:1715
+#: htdocs/luci-static/resources/view/fchomo/node.js:1444
+#: htdocs/luci-static/resources/view/fchomo/node.js:1729
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:252
-#: htdocs/luci-static/resources/view/fchomo/server.js:179
msgid "Label"
msgstr "标签"
#: htdocs/luci-static/resources/view/fchomo/client.js:1114
-#: htdocs/luci-static/resources/view/fchomo/node.js:1660
+#: htdocs/luci-static/resources/view/fchomo/node.js:1674
msgid "Lazy"
msgstr "懒惰状态"
-#: htdocs/luci-static/resources/view/fchomo/node.js:447
-#: htdocs/luci-static/resources/view/fchomo/server.js:436
+#: htdocs/luci-static/resources/fchomo/listeners.js:386
+#: htdocs/luci-static/resources/view/fchomo/node.js:453
msgid "Legacy"
msgstr "传统"
-#: htdocs/luci-static/resources/view/fchomo/server.js:527
+#: htdocs/luci-static/resources/fchomo/listeners.js:475
msgid ""
"Legacy protocol support (VMess MD5 Authentication) is provided for "
"compatibility purposes only, use of alterId > 1 is not recommended."
@@ -1552,16 +1580,16 @@ msgstr ""
msgid "Less compatibility and sometimes better performance."
msgstr "有时性能更好。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:969
-#: htdocs/luci-static/resources/view/fchomo/server.js:812
+#: htdocs/luci-static/resources/fchomo/listeners.js:806
+#: htdocs/luci-static/resources/view/fchomo/node.js:980
msgid "List of supported application level protocols, in order of preference."
msgstr "支持的应用层协议协商列表,按顺序排列。"
-#: htdocs/luci-static/resources/view/fchomo/server.js:199
+#: htdocs/luci-static/resources/fchomo/listeners.js:147
msgid "Listen address"
msgstr "监听地址"
-#: htdocs/luci-static/resources/view/fchomo/server.js:176
+#: htdocs/luci-static/resources/fchomo/listeners.js:124
msgid "Listen fields"
msgstr "监听字段"
@@ -1569,8 +1597,8 @@ msgstr "监听字段"
msgid "Listen interfaces"
msgstr "监听接口"
+#: htdocs/luci-static/resources/fchomo/listeners.js:152
#: htdocs/luci-static/resources/view/fchomo/client.js:1374
-#: htdocs/luci-static/resources/view/fchomo/server.js:204
msgid "Listen port"
msgstr "监听端口"
@@ -1578,26 +1606,26 @@ msgstr "监听端口"
msgid "Listen ports"
msgstr "监听端口"
-#: htdocs/luci-static/resources/fchomo.js:215
+#: htdocs/luci-static/resources/fchomo.js:221
msgid "Load balance"
msgstr "负载均衡"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1440
+#: htdocs/luci-static/resources/view/fchomo/node.js:1454
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:270
msgid "Local"
msgstr "本地"
#: htdocs/luci-static/resources/view/fchomo/node.js:694
-#: htdocs/luci-static/resources/view/fchomo/node.js:734
+#: htdocs/luci-static/resources/view/fchomo/node.js:737
msgid "Local IPv6 address"
msgstr "本地 IPv6 地址"
#: htdocs/luci-static/resources/view/fchomo/node.js:686
-#: htdocs/luci-static/resources/view/fchomo/node.js:726
+#: htdocs/luci-static/resources/view/fchomo/node.js:729
msgid "Local address"
msgstr "本地地址"
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:70
msgid "Log"
msgstr "日志"
@@ -1613,21 +1641,21 @@ msgstr "日志为空。"
msgid "Log level"
msgstr "日志等级"
-#: htdocs/luci-static/resources/fchomo.js:423
+#: htdocs/luci-static/resources/fchomo.js:429
msgid "Lowercase only"
msgstr "仅限小写"
#: htdocs/luci-static/resources/view/fchomo/global.js:502
#: htdocs/luci-static/resources/view/fchomo/node.js:700
-#: htdocs/luci-static/resources/view/fchomo/node.js:780
+#: htdocs/luci-static/resources/view/fchomo/node.js:783
msgid "MTU"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:185
+#: htdocs/luci-static/resources/fchomo.js:190
msgid "Masque"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:262
+#: htdocs/luci-static/resources/fchomo/listeners.js:206
msgid "Masquerade"
msgstr "伪装"
@@ -1659,12 +1687,12 @@ msgstr "匹配响应通过 ipcidr"
msgid "Match rule set."
msgstr "匹配规则集。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1186
+#: htdocs/luci-static/resources/view/fchomo/node.js:1200
msgid "Max Early Data"
msgstr "前置数据最大值"
+#: htdocs/luci-static/resources/fchomo/listeners.js:411
#: htdocs/luci-static/resources/view/fchomo/node.js:543
-#: htdocs/luci-static/resources/view/fchomo/server.js:463
msgid "Max UDP relay packet size"
msgstr "UDP 中继数据包最大尺寸"
@@ -1672,8 +1700,8 @@ msgstr "UDP 中继数据包最大尺寸"
msgid "Max count of failures"
msgstr "最大失败次数"
+#: htdocs/luci-static/resources/fchomo/listeners.js:180
#: htdocs/luci-static/resources/view/fchomo/node.js:291
-#: htdocs/luci-static/resources/view/fchomo/server.js:236
msgid "Max download speed"
msgstr "最大下载速度"
@@ -1681,17 +1709,17 @@ msgstr "最大下载速度"
msgid "Max open streams"
msgstr "限制打开流的数量"
+#: htdocs/luci-static/resources/fchomo/listeners.js:174
#: htdocs/luci-static/resources/view/fchomo/node.js:285
-#: htdocs/luci-static/resources/view/fchomo/server.js:230
msgid "Max upload speed"
msgstr "最大上传速度"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1223
-#: htdocs/luci-static/resources/view/fchomo/node.js:1239
+#: htdocs/luci-static/resources/view/fchomo/node.js:1237
+#: htdocs/luci-static/resources/view/fchomo/node.js:1253
msgid "Maximum connections"
msgstr "最大连接数"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1237
+#: htdocs/luci-static/resources/view/fchomo/node.js:1251
msgid ""
"Maximum multiplexed streams in a connection before opening a new connection."
"%s and %s."
@@ -1699,24 +1727,24 @@ msgstr ""
"在打开新连接之前,连接中的最大多路复用流数量。%s 和 "
"%s 冲突。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:419
-#: htdocs/luci-static/resources/view/fchomo/server.js:401
+#: htdocs/luci-static/resources/fchomo/listeners.js:351
+#: htdocs/luci-static/resources/view/fchomo/node.js:425
msgid "Maximum padding rate"
msgstr "最大填充率"
-#: htdocs/luci-static/resources/view/fchomo/node.js:427
-#: htdocs/luci-static/resources/view/fchomo/server.js:409
+#: htdocs/luci-static/resources/fchomo/listeners.js:359
+#: htdocs/luci-static/resources/view/fchomo/node.js:433
msgid ""
"Maximum padding rate must be greater than or equal to the minimum padding "
"rate."
msgstr "最大填充率必须大于等于最小填充率。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1236
+#: htdocs/luci-static/resources/view/fchomo/node.js:1250
msgid "Maximum streams"
msgstr "最大流数量"
-#: htdocs/luci-static/resources/fchomo.js:143
-#: htdocs/luci-static/resources/fchomo.js:175
+#: htdocs/luci-static/resources/fchomo.js:147
+#: htdocs/luci-static/resources/fchomo.js:180
msgid "Mieru"
msgstr ""
@@ -1728,7 +1756,7 @@ msgstr "Mihomo 客户端"
#: htdocs/luci-static/resources/view/fchomo/log.js:158
#: htdocs/luci-static/resources/view/fchomo/log.js:163
-#: htdocs/luci-static/resources/view/fchomo/server.js:131
+#: htdocs/luci-static/resources/view/fchomo/server.js:23
msgid "Mihomo server"
msgstr "Mihomo 服务端"
@@ -1736,22 +1764,22 @@ msgstr "Mihomo 服务端"
msgid "Min of idle sessions to keep"
msgstr "要保留的最少闲置会话数"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1230
+#: htdocs/luci-static/resources/view/fchomo/node.js:1244
msgid ""
"Minimum multiplexed streams in a connection before opening a new connection."
msgstr "在打开新连接之前,连接中的最小多路复用流数量。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:412
-#: htdocs/luci-static/resources/view/fchomo/server.js:394
+#: htdocs/luci-static/resources/fchomo/listeners.js:344
+#: htdocs/luci-static/resources/view/fchomo/node.js:418
msgid "Minimum padding rate"
msgstr "最小填充率"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1229
-#: htdocs/luci-static/resources/view/fchomo/node.js:1239
+#: htdocs/luci-static/resources/view/fchomo/node.js:1243
+#: htdocs/luci-static/resources/view/fchomo/node.js:1253
msgid "Minimum streams"
msgstr "最小流数量"
-#: htdocs/luci-static/resources/fchomo.js:141
+#: htdocs/luci-static/resources/fchomo.js:145
#: htdocs/luci-static/resources/view/fchomo/global.js:497
msgid "Mixed"
msgstr "混合"
@@ -1764,12 +1792,12 @@ msgstr "混合 系统 TCP 栈和 gVisor UDP 栈。"
msgid "Mixed port"
msgstr "混合端口"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1209
+#: htdocs/luci-static/resources/view/fchomo/node.js:1223
msgid "Multiplex"
msgstr "多路复用"
+#: htdocs/luci-static/resources/fchomo/listeners.js:123
#: htdocs/luci-static/resources/view/fchomo/node.js:226
-#: htdocs/luci-static/resources/view/fchomo/server.js:175
msgid "Multiplex fields"
msgstr "多路复用字段"
@@ -1782,7 +1810,11 @@ msgstr "多路复用"
msgid "NOT"
msgstr "NOT"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1515
+#: htdocs/luci-static/resources/fchomo/listeners.js:528
+msgid "Name of the Proxy group as outbound."
+msgstr "出站代理组的名称。"
+
+#: htdocs/luci-static/resources/view/fchomo/node.js:1529
msgid "Name of the Proxy group to download provider."
msgstr "用于下载供应商订阅的代理组名称。"
@@ -1790,14 +1822,22 @@ msgstr "用于下载供应商订阅的代理组名称。"
msgid "Name of the Proxy group to download rule set."
msgstr "用于下载规则集订阅的代理组名称。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:522
+msgid "Name of the Sub rule used for inbound matching."
+msgstr "用于入站匹配的子规则名称。"
+
#: htdocs/luci-static/resources/view/fchomo/node.js:527
msgid "Native UDP"
msgstr "原生 UDP"
-#: htdocs/luci-static/resources/fchomo.js:365
+#: htdocs/luci-static/resources/fchomo.js:371
msgid "Native appearance"
msgstr "原生外观"
+#: htdocs/luci-static/resources/fchomo/listeners.js:545
+msgid "Network type"
+msgstr "网络类型"
+
#: htdocs/luci-static/resources/view/fchomo/global.js:443
msgid "No Authentication IP ranges"
msgstr "无需认证的 IP 范围"
@@ -1807,11 +1847,11 @@ msgid "No add'l params"
msgstr "无附加参数"
#: htdocs/luci-static/resources/view/fchomo/client.js:1115
-#: htdocs/luci-static/resources/view/fchomo/node.js:1661
+#: htdocs/luci-static/resources/view/fchomo/node.js:1675
msgid "No testing is performed when this provider node is not in use."
msgstr "当此供应商的节点未使用时,不执行任何测试。"
-#: htdocs/luci-static/resources/fchomo.js:670
+#: htdocs/luci-static/resources/fchomo.js:676
msgid "No valid %s found."
msgstr "未找到有效的%s。"
@@ -1821,22 +1861,22 @@ msgstr "未找到有效的规则集链接。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1041
#: htdocs/luci-static/resources/view/fchomo/node.js:217
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:38
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:46
msgid "Node"
msgstr "节点"
#: htdocs/luci-static/resources/view/fchomo/client.js:1160
-#: htdocs/luci-static/resources/view/fchomo/node.js:1681
+#: htdocs/luci-static/resources/view/fchomo/node.js:1695
msgid "Node exclude filter"
msgstr "排除节点"
#: htdocs/luci-static/resources/view/fchomo/client.js:1165
-#: htdocs/luci-static/resources/view/fchomo/node.js:1688
+#: htdocs/luci-static/resources/view/fchomo/node.js:1702
msgid "Node exclude type"
msgstr "排除节点类型"
#: htdocs/luci-static/resources/view/fchomo/client.js:1155
-#: htdocs/luci-static/resources/view/fchomo/node.js:1675
+#: htdocs/luci-static/resources/view/fchomo/node.js:1689
msgid "Node filter"
msgstr "过滤节点"
@@ -1844,7 +1884,7 @@ msgstr "过滤节点"
msgid "Node switch tolerance"
msgstr "节点切换容差"
-#: htdocs/luci-static/resources/fchomo.js:392
+#: htdocs/luci-static/resources/fchomo.js:398
msgid "None"
msgstr "无"
@@ -1852,41 +1892,41 @@ msgstr "无"
msgid "Not Installed"
msgstr "未安装"
-#: htdocs/luci-static/resources/fchomo.js:1140
+#: htdocs/luci-static/resources/fchomo.js:1146
msgid "Not Running"
msgstr "未在运行"
-#: htdocs/luci-static/resources/view/fchomo/node.js:472
+#: htdocs/luci-static/resources/view/fchomo/node.js:479
msgid "OFF"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:474
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
msgid "ON"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:809
+#: htdocs/luci-static/resources/view/fchomo/node.js:812
msgid "Obfs Mode"
msgstr "Obfs 模式"
+#: htdocs/luci-static/resources/fchomo/listeners.js:198
#: htdocs/luci-static/resources/view/fchomo/node.js:303
-#: htdocs/luci-static/resources/view/fchomo/server.js:254
msgid "Obfuscate password"
msgstr "混淆密码"
+#: htdocs/luci-static/resources/fchomo/listeners.js:192
+#: htdocs/luci-static/resources/fchomo/listeners.js:322
#: htdocs/luci-static/resources/view/fchomo/node.js:297
-#: htdocs/luci-static/resources/view/fchomo/node.js:401
-#: htdocs/luci-static/resources/view/fchomo/server.js:248
-#: htdocs/luci-static/resources/view/fchomo/server.js:372
+#: htdocs/luci-static/resources/view/fchomo/node.js:407
msgid "Obfuscate type"
msgstr "混淆类型"
-#: htdocs/luci-static/resources/view/fchomo/node.js:402
-#: htdocs/luci-static/resources/view/fchomo/server.js:373
+#: htdocs/luci-static/resources/fchomo/listeners.js:323
+#: htdocs/luci-static/resources/view/fchomo/node.js:408
msgid "Obfuscated as ASCII data stream"
msgstr "混淆为 ASCII 数据流"
-#: htdocs/luci-static/resources/view/fchomo/node.js:403
-#: htdocs/luci-static/resources/view/fchomo/server.js:374
+#: htdocs/luci-static/resources/fchomo/listeners.js:324
+#: htdocs/luci-static/resources/view/fchomo/node.js:409
msgid "Obfuscated as low-entropy data stream"
msgstr "混淆为低熵数据流"
@@ -1898,7 +1938,7 @@ msgstr "0-63 范围内的一个或多个数字,以逗号分隔"
msgid "Only process traffic from specific interfaces. Leave empty for all."
msgstr "只处理来自指定接口的流量。留空表示全部。"
-#: htdocs/luci-static/resources/fchomo.js:1134
+#: htdocs/luci-static/resources/fchomo.js:1140
msgid "Open Dashboard"
msgstr "打开面板"
@@ -1912,11 +1952,11 @@ msgid "Override destination"
msgstr "覆盖目标地址"
#: htdocs/luci-static/resources/view/fchomo/client.js:1010
-#: htdocs/luci-static/resources/view/fchomo/node.js:1426
+#: htdocs/luci-static/resources/view/fchomo/node.js:1440
msgid "Override fields"
msgstr "覆盖字段"
-#: htdocs/luci-static/resources/view/fchomo/node.js:510
+#: htdocs/luci-static/resources/view/fchomo/node.js:519
msgid "Override the IP address of the server that DNS response."
msgstr "覆盖 DNS 回应的服务器的 IP 地址。"
@@ -1932,7 +1972,7 @@ msgstr "使用嗅探到的域名覆盖连接目标。"
msgid "Override the existing ECS in original request."
msgstr "覆盖原始请求中已有的 ECS。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1069
+#: htdocs/luci-static/resources/view/fchomo/node.js:1083
msgid "Overrides the domain name used for HTTPS record queries."
msgstr "覆盖用于 HTTPS 记录查询的域名。"
@@ -1940,11 +1980,11 @@ msgstr "覆盖用于 HTTPS 记录查询的域名。"
msgid "Overview"
msgstr "概览"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1150
+#: htdocs/luci-static/resources/view/fchomo/node.js:1164
msgid "POST"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1151
+#: htdocs/luci-static/resources/view/fchomo/node.js:1165
msgid "PUT"
msgstr ""
@@ -1952,31 +1992,31 @@ msgstr ""
msgid "Packet encoding"
msgstr "数据包编码"
-#: htdocs/luci-static/resources/view/fchomo/server.js:507
+#: htdocs/luci-static/resources/fchomo/listeners.js:455
msgid "Padding scheme"
msgstr "填充方案"
-#: htdocs/luci-static/resources/view/fchomo/node.js:915
-#: htdocs/luci-static/resources/view/fchomo/server.js:655
+#: htdocs/luci-static/resources/fchomo/listeners.js:643
+#: htdocs/luci-static/resources/view/fchomo/node.js:926
msgid "Paddings"
msgstr "填充 (Paddings)"
+#: htdocs/luci-static/resources/fchomo/listeners.js:165
+#: htdocs/luci-static/resources/fchomo/listeners.js:221
+#: htdocs/luci-static/resources/fchomo/listeners.js:505
#: htdocs/luci-static/resources/view/fchomo/node.js:261
#: htdocs/luci-static/resources/view/fchomo/node.js:340
-#: htdocs/luci-static/resources/view/fchomo/node.js:824
-#: htdocs/luci-static/resources/view/fchomo/server.js:221
-#: htdocs/luci-static/resources/view/fchomo/server.js:277
-#: htdocs/luci-static/resources/view/fchomo/server.js:548
+#: htdocs/luci-static/resources/view/fchomo/node.js:827
msgid "Password"
msgstr "密码"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1490
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:1504
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:357
-#: htdocs/luci-static/resources/view/fchomo/server.js:595
msgid "Payload"
msgstr "Payload"
-#: htdocs/luci-static/resources/view/fchomo/node.js:748
+#: htdocs/luci-static/resources/view/fchomo/node.js:751
msgid "Peer pubkic key"
msgstr "对端公钥"
@@ -1986,11 +2026,11 @@ msgid ""
"it is not needed."
msgstr "性能可能会略有下降,建议仅在需要时开启。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:775
+#: htdocs/luci-static/resources/view/fchomo/node.js:778
msgid "Periodically sends data packets to maintain connection persistence."
msgstr "定期发送数据包以维持连接持久性。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:774
+#: htdocs/luci-static/resources/view/fchomo/node.js:777
msgid "Persistent keepalive"
msgstr "持久连接"
@@ -2013,8 +2053,8 @@ msgid ""
"standards."
msgstr "链接格式标准请参考 %s。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1463
-#: htdocs/luci-static/resources/view/fchomo/node.js:1489
+#: htdocs/luci-static/resources/view/fchomo/node.js:1477
+#: htdocs/luci-static/resources/view/fchomo/node.js:1503
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:330
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:356
msgid ""
@@ -2029,25 +2069,25 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1445
#: htdocs/luci-static/resources/view/fchomo/client.js:1697
#: htdocs/luci-static/resources/view/fchomo/client.js:1749
-#: htdocs/luci-static/resources/view/fchomo/node.js:1333
+#: htdocs/luci-static/resources/view/fchomo/node.js:1347
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:144
msgid "Please type %s fields of mihomo config."
msgstr "请输入 mihomo 配置的 %s 字段。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:798
-#: htdocs/luci-static/resources/view/fchomo/server.js:534
+#: htdocs/luci-static/resources/fchomo/listeners.js:491
+#: htdocs/luci-static/resources/view/fchomo/node.js:801
msgid "Plugin"
msgstr "插件"
-#: htdocs/luci-static/resources/view/fchomo/node.js:809
-#: htdocs/luci-static/resources/view/fchomo/node.js:816
-#: htdocs/luci-static/resources/view/fchomo/node.js:824
-#: htdocs/luci-static/resources/view/fchomo/node.js:830
-#: htdocs/luci-static/resources/view/fchomo/node.js:838
-#: htdocs/luci-static/resources/view/fchomo/node.js:844
-#: htdocs/luci-static/resources/view/fchomo/server.js:541
-#: htdocs/luci-static/resources/view/fchomo/server.js:548
-#: htdocs/luci-static/resources/view/fchomo/server.js:554
+#: htdocs/luci-static/resources/fchomo/listeners.js:498
+#: htdocs/luci-static/resources/fchomo/listeners.js:505
+#: htdocs/luci-static/resources/fchomo/listeners.js:511
+#: htdocs/luci-static/resources/view/fchomo/node.js:812
+#: htdocs/luci-static/resources/view/fchomo/node.js:819
+#: htdocs/luci-static/resources/view/fchomo/node.js:827
+#: htdocs/luci-static/resources/view/fchomo/node.js:833
+#: htdocs/luci-static/resources/view/fchomo/node.js:841
+#: htdocs/luci-static/resources/view/fchomo/node.js:847
msgid "Plugin:"
msgstr "插件:"
@@ -2055,7 +2095,7 @@ msgstr "插件:"
msgid "Port"
msgstr "端口"
-#: htdocs/luci-static/resources/fchomo.js:1371
+#: htdocs/luci-static/resources/fchomo.js:1377
msgid "Port %s alrealy exists!"
msgstr "端口 %s 已存在!"
@@ -2071,21 +2111,21 @@ msgstr "端口范围"
msgid "Ports"
msgstr "端口"
+#: htdocs/luci-static/resources/fchomo/listeners.js:152
#: htdocs/luci-static/resources/view/fchomo/node.js:274
-#: htdocs/luci-static/resources/view/fchomo/server.js:204
msgid "Ports pool"
msgstr "端口池"
-#: htdocs/luci-static/resources/view/fchomo/node.js:487
-#: htdocs/luci-static/resources/view/fchomo/node.js:755
+#: htdocs/luci-static/resources/view/fchomo/node.js:496
+#: htdocs/luci-static/resources/view/fchomo/node.js:758
msgid "Pre-shared key"
msgstr "预共享密钥"
-#: htdocs/luci-static/resources/fchomo.js:159
+#: htdocs/luci-static/resources/fchomo.js:164
msgid "Prefer IPv4"
msgstr "优先 IPv4"
-#: htdocs/luci-static/resources/fchomo.js:160
+#: htdocs/luci-static/resources/fchomo.js:165
msgid "Prefer IPv6"
msgstr "优先 IPv6"
@@ -2096,10 +2136,10 @@ msgstr "防止某些情况下的 ICMP 环回问题。Ping 不会显示实际延
#: htdocs/luci-static/resources/view/fchomo/global.js:736
#: htdocs/luci-static/resources/view/fchomo/global.js:753
-#: htdocs/luci-static/resources/view/fchomo/node.js:1297
-#: htdocs/luci-static/resources/view/fchomo/node.js:1303
-#: htdocs/luci-static/resources/view/fchomo/node.js:1610
-#: htdocs/luci-static/resources/view/fchomo/node.js:1617
+#: htdocs/luci-static/resources/view/fchomo/node.js:1311
+#: htdocs/luci-static/resources/view/fchomo/node.js:1317
+#: htdocs/luci-static/resources/view/fchomo/node.js:1624
+#: htdocs/luci-static/resources/view/fchomo/node.js:1631
msgid "Priority: Proxy Node > Global."
msgstr "优先级: 代理节点 > 全局。"
@@ -2112,7 +2152,7 @@ msgid "Priv-key passphrase"
msgstr "密钥密码"
#: htdocs/luci-static/resources/view/fchomo/node.js:671
-#: htdocs/luci-static/resources/view/fchomo/node.js:740
+#: htdocs/luci-static/resources/view/fchomo/node.js:743
msgid "Private key"
msgstr "私钥"
@@ -2121,7 +2161,7 @@ msgid "Process matching mode"
msgstr "进程匹配模式"
#: htdocs/luci-static/resources/view/fchomo/global.js:684
-#: htdocs/luci-static/resources/view/fchomo/node.js:1215
+#: htdocs/luci-static/resources/view/fchomo/node.js:1229
msgid "Protocol"
msgstr "协议"
@@ -2136,13 +2176,13 @@ msgid ""
msgstr "协议参数。 如启用会随机浪费流量(在 v2ray 中默认启用并且无法禁用)。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1055
-#: htdocs/luci-static/resources/view/fchomo/node.js:1316
-#: htdocs/luci-static/resources/view/fchomo/node.js:1325
-#: htdocs/luci-static/resources/view/fchomo/node.js:1726
+#: htdocs/luci-static/resources/view/fchomo/node.js:1330
+#: htdocs/luci-static/resources/view/fchomo/node.js:1339
+#: htdocs/luci-static/resources/view/fchomo/node.js:1740
msgid "Provider"
msgstr "供应商"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1496
+#: htdocs/luci-static/resources/view/fchomo/node.js:1510
msgid "Provider URL"
msgstr "供应商订阅 URL"
@@ -2165,18 +2205,19 @@ msgid "Proxy MAC-s"
msgstr "代理 MAC 地址"
#: htdocs/luci-static/resources/view/fchomo/node.js:208
-#: htdocs/luci-static/resources/view/fchomo/node.js:1725
+#: htdocs/luci-static/resources/view/fchomo/node.js:1739
msgid "Proxy Node"
msgstr "代理节点"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1701
-#: htdocs/luci-static/resources/view/fchomo/node.js:1710
+#: htdocs/luci-static/resources/view/fchomo/node.js:1715
+#: htdocs/luci-static/resources/view/fchomo/node.js:1724
msgid "Proxy chain"
msgstr "代理链"
+#: htdocs/luci-static/resources/fchomo/listeners.js:527
#: htdocs/luci-static/resources/view/fchomo/client.js:783
#: htdocs/luci-static/resources/view/fchomo/client.js:1543
-#: htdocs/luci-static/resources/view/fchomo/node.js:1514
+#: htdocs/luci-static/resources/view/fchomo/node.js:1528
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:381
msgid "Proxy group"
msgstr "代理组"
@@ -2194,57 +2235,53 @@ msgid "Proxy routerself"
msgstr "代理路由器自身"
#: htdocs/luci-static/resources/view/fchomo/node.js:528
+#: htdocs/luci-static/resources/view/fchomo/node.js:723
msgid "QUIC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:516
-#: htdocs/luci-static/resources/view/fchomo/server.js:455
-msgid "QUIC congestion controller."
-msgstr "QUIC 拥塞控制器。"
-
#: htdocs/luci-static/resources/view/fchomo/client.js:926
-#: htdocs/luci-static/resources/view/fchomo/server.js:152
+#: htdocs/luci-static/resources/view/fchomo/server.js:44
msgid "Quick Reload"
msgstr "快速重载"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1083
-#: htdocs/luci-static/resources/view/fchomo/server.js:919
+#: htdocs/luci-static/resources/fchomo/listeners.js:913
+#: htdocs/luci-static/resources/view/fchomo/node.js:1097
msgid "REALITY"
msgstr "REALITY"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1098
+#: htdocs/luci-static/resources/view/fchomo/node.js:1112
msgid "REALITY X25519MLKEM768 PQC support"
msgstr "REALITY X25519MLKEM768 后量子加密支持"
-#: htdocs/luci-static/resources/view/fchomo/server.js:956
+#: htdocs/luci-static/resources/fchomo/listeners.js:950
msgid "REALITY certificate issued to"
msgstr "REALITY 证书颁发给"
-#: htdocs/luci-static/resources/view/fchomo/server.js:924
+#: htdocs/luci-static/resources/fchomo/listeners.js:918
msgid "REALITY handshake server"
msgstr "REALITY 握手服务器"
-#: htdocs/luci-static/resources/view/fchomo/server.js:931
+#: htdocs/luci-static/resources/fchomo/listeners.js:925
msgid "REALITY private key"
msgstr "REALITY 私钥"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1088
-#: htdocs/luci-static/resources/view/fchomo/server.js:946
+#: htdocs/luci-static/resources/fchomo/listeners.js:940
+#: htdocs/luci-static/resources/view/fchomo/node.js:1102
msgid "REALITY public key"
msgstr "REALITY 公钥"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1093
-#: htdocs/luci-static/resources/view/fchomo/server.js:950
+#: htdocs/luci-static/resources/fchomo/listeners.js:944
+#: htdocs/luci-static/resources/view/fchomo/node.js:1107
msgid "REALITY short ID"
msgstr "REALITY 标识符"
-#: htdocs/luci-static/resources/view/fchomo/node.js:905
-#: htdocs/luci-static/resources/view/fchomo/server.js:626
-#: htdocs/luci-static/resources/view/fchomo/server.js:645
+#: htdocs/luci-static/resources/fchomo/listeners.js:614
+#: htdocs/luci-static/resources/fchomo/listeners.js:633
+#: htdocs/luci-static/resources/view/fchomo/node.js:916
msgid "RTT"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:357
+#: htdocs/luci-static/resources/fchomo.js:363
msgid "Random"
msgstr "随机"
@@ -2252,7 +2289,7 @@ msgstr "随机"
msgid "Random will be used if empty."
msgstr "留空将使用随机令牌。"
-#: htdocs/luci-static/resources/fchomo.js:367
+#: htdocs/luci-static/resources/fchomo.js:373
msgid "Randomized traffic characteristics"
msgstr "随机化流量特征"
@@ -2276,10 +2313,10 @@ msgstr "Redirect TCP + Tun UDP"
msgid "Refresh every %s seconds."
msgstr "每 %s 秒刷新。"
-#: htdocs/luci-static/resources/fchomo.js:1127
+#: htdocs/luci-static/resources/fchomo.js:1133
#: htdocs/luci-static/resources/view/fchomo/client.js:927
#: htdocs/luci-static/resources/view/fchomo/global.js:193
-#: htdocs/luci-static/resources/view/fchomo/server.js:153
+#: htdocs/luci-static/resources/view/fchomo/server.js:45
msgid "Reload"
msgstr "重载"
@@ -2287,43 +2324,43 @@ msgstr "重载"
msgid "Reload All"
msgstr "重载所有"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1441
+#: htdocs/luci-static/resources/view/fchomo/node.js:1455
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:271
msgid "Remote"
msgstr "远程"
#: htdocs/luci-static/resources/view/fchomo/node.js:706
-#: htdocs/luci-static/resources/view/fchomo/node.js:786
+#: htdocs/luci-static/resources/view/fchomo/node.js:789
msgid "Remote DNS resolve"
msgstr "远程 DNS 解析"
-#: htdocs/luci-static/resources/fchomo.js:1292
+#: htdocs/luci-static/resources/fchomo.js:1298
msgid "Remove"
msgstr "移除"
-#: htdocs/luci-static/resources/fchomo.js:1297
-#: htdocs/luci-static/resources/view/fchomo/node.js:1417
-#: htdocs/luci-static/resources/view/fchomo/node.js:1419
+#: htdocs/luci-static/resources/fchomo.js:1303
+#: htdocs/luci-static/resources/view/fchomo/node.js:1431
+#: htdocs/luci-static/resources/view/fchomo/node.js:1433
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:244
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:246
msgid "Remove idles"
msgstr "移除闲置"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1543
+#: htdocs/luci-static/resources/view/fchomo/node.js:1557
msgid "Replace name"
msgstr "名称替换"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1544
+#: htdocs/luci-static/resources/view/fchomo/node.js:1558
msgid "Replace node name."
msgstr "替换节点名称"
-#: htdocs/luci-static/resources/fchomo.js:341
+#: htdocs/luci-static/resources/fchomo.js:347
msgid "Request"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1157
-#: htdocs/luci-static/resources/view/fchomo/node.js:1164
-#: htdocs/luci-static/resources/view/fchomo/server.js:998
+#: htdocs/luci-static/resources/fchomo/listeners.js:992
+#: htdocs/luci-static/resources/view/fchomo/node.js:1171
+#: htdocs/luci-static/resources/view/fchomo/node.js:1178
msgid "Request path"
msgstr "请求路径"
@@ -2331,20 +2368,20 @@ msgstr "请求路径"
msgid "Request timeout"
msgstr "请求超时"
-#: htdocs/luci-static/resources/fchomo.js:344
+#: htdocs/luci-static/resources/fchomo.js:350
msgid "Require and verify"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:342
+#: htdocs/luci-static/resources/fchomo.js:348
msgid "Require any"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:375
-#: htdocs/luci-static/resources/view/fchomo/node.js:1099
+#: htdocs/luci-static/resources/fchomo.js:381
+#: htdocs/luci-static/resources/view/fchomo/node.js:1113
msgid "Requires server support."
msgstr "需要服务器支持。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:769
+#: htdocs/luci-static/resources/view/fchomo/node.js:772
msgid "Reserved field bytes"
msgstr "保留字段字节"
@@ -2352,7 +2389,7 @@ msgstr "保留字段字节"
msgid "Resources management"
msgstr "资源管理"
-#: htdocs/luci-static/resources/view/fchomo/node.js:844
+#: htdocs/luci-static/resources/view/fchomo/node.js:847
msgid "Restls script"
msgstr "Restls 剧本"
@@ -2366,12 +2403,12 @@ msgid ""
"Returns the string input for icon in the API to display in this proxy group."
msgstr "在 API 返回 icon 所输入的字符串,以在该代理组显示。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:473
+#: htdocs/luci-static/resources/view/fchomo/node.js:480
msgid "Reuse HTTP connections to reduce RTT for each connection establishment."
msgstr "重用 HTTP 连接以减少每次建立连接的 RTT。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:470
-#: htdocs/luci-static/resources/view/fchomo/node.js:474
+#: htdocs/luci-static/resources/view/fchomo/node.js:477
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
msgid "Reusing a single tunnel to carry multiple target connections within it."
msgstr "复用单条隧道使其内部承载多条目标连线。"
@@ -2388,8 +2425,8 @@ msgstr "路由 DSCP"
msgid "Routing GFW"
msgstr "路由 GFW 流量"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1302
-#: htdocs/luci-static/resources/view/fchomo/node.js:1616
+#: htdocs/luci-static/resources/view/fchomo/node.js:1316
+#: htdocs/luci-static/resources/view/fchomo/node.js:1630
msgid "Routing mark"
msgstr "路由标记"
@@ -2441,7 +2478,7 @@ msgstr "规则集"
msgid "Rule set URL"
msgstr "规则集订阅 URL"
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:46
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:54
msgid "Ruleset"
msgstr "规则集"
@@ -2449,27 +2486,27 @@ msgstr "规则集"
msgid "Ruleset-URI-Scheme"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1140
+#: htdocs/luci-static/resources/fchomo.js:1146
msgid "Running"
msgstr "正在运行"
-#: htdocs/luci-static/resources/fchomo.js:223
+#: htdocs/luci-static/resources/fchomo.js:229
msgid "SMTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:140
+#: htdocs/luci-static/resources/fchomo.js:144
msgid "SOCKS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:172
+#: htdocs/luci-static/resources/fchomo.js:177
msgid "SOCKS5"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:193
msgid "SSH"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:224
+#: htdocs/luci-static/resources/fchomo.js:230
msgid "STUN"
msgstr ""
@@ -2477,20 +2514,20 @@ msgstr ""
msgid "SUB-RULE"
msgstr "SUB-RULE"
-#: htdocs/luci-static/resources/view/fchomo/node.js:862
+#: htdocs/luci-static/resources/view/fchomo/node.js:873
msgid "SUoT version"
msgstr "SUoT 版本"
+#: htdocs/luci-static/resources/fchomo/listeners.js:194
#: htdocs/luci-static/resources/view/fchomo/node.js:299
-#: htdocs/luci-static/resources/view/fchomo/server.js:250
msgid "Salamander"
msgstr "Salamander"
-#: htdocs/luci-static/resources/fchomo.js:165
+#: htdocs/luci-static/resources/fchomo.js:170
msgid "Same dstaddr requests. Same node"
msgstr "相同 目标地址 请求。相同节点"
-#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:171
msgid "Same srcaddr and dstaddr requests. Same node"
msgstr "相同 来源地址 和 目标地址 请求。相同节点"
@@ -2498,7 +2535,7 @@ msgstr "相同 来源地址 和 目标地址 请求。相同节点"
msgid "Segment maximum size"
msgstr "分段最大尺寸"
-#: htdocs/luci-static/resources/fchomo.js:212
+#: htdocs/luci-static/resources/fchomo.js:218
msgid "Select"
msgstr "手动选择"
@@ -2506,20 +2543,20 @@ msgstr "手动选择"
msgid "Select Dashboard"
msgstr "选择面板"
-#: htdocs/luci-static/resources/fchomo.js:381
+#: htdocs/luci-static/resources/fchomo.js:387
msgid "Send padding randomly 0-3333 bytes with 50% probability."
msgstr "以 50% 的概率发送随机 0-3333 字节的填充。"
-#: htdocs/luci-static/resources/fchomo.js:370
-#: htdocs/luci-static/resources/fchomo.js:371
+#: htdocs/luci-static/resources/fchomo.js:376
+#: htdocs/luci-static/resources/fchomo.js:377
msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse."
msgstr "发送 300-600 秒的随机票证,以供客户端 0-RTT 重用。"
-#: htdocs/luci-static/resources/view/fchomo/server.js:166
-#: htdocs/luci-static/resources/view/fchomo/server.js:626
-#: htdocs/luci-static/resources/view/fchomo/server.js:817
-#: htdocs/luci-static/resources/view/fchomo/server.js:832
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:54
+#: htdocs/luci-static/resources/fchomo/listeners.js:614
+#: htdocs/luci-static/resources/fchomo/listeners.js:811
+#: htdocs/luci-static/resources/fchomo/listeners.js:826
+#: htdocs/luci-static/resources/view/fchomo/server.js:58
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
msgid "Server"
msgstr "服务端"
@@ -2527,7 +2564,7 @@ msgstr "服务端"
msgid "Server address"
msgstr "服务器地址"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1142
+#: htdocs/luci-static/resources/view/fchomo/node.js:1156
msgid "Server hostname"
msgstr "服务器主机名称"
@@ -2539,27 +2576,27 @@ msgstr "服务端状态"
msgid "Service status"
msgstr "服务状态"
-#: htdocs/luci-static/resources/fchomo.js:142
-#: htdocs/luci-static/resources/fchomo.js:173
+#: htdocs/luci-static/resources/fchomo.js:146
+#: htdocs/luci-static/resources/fchomo.js:178
msgid "Shadowsocks"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:437
#: htdocs/luci-static/resources/view/fchomo/node.js:582
-#: htdocs/luci-static/resources/view/fchomo/server.js:489
msgid "Shadowsocks chipher"
msgstr "Shadowsocks 加密方法"
+#: htdocs/luci-static/resources/fchomo/listeners.js:432
#: htdocs/luci-static/resources/view/fchomo/node.js:577
-#: htdocs/luci-static/resources/view/fchomo/server.js:484
msgid "Shadowsocks encrypt"
msgstr "Shadowsocks 加密"
+#: htdocs/luci-static/resources/fchomo/listeners.js:445
#: htdocs/luci-static/resources/view/fchomo/node.js:590
-#: htdocs/luci-static/resources/view/fchomo/server.js:497
msgid "Shadowsocks password"
msgstr "Shadowsocks 密码"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1257
+#: htdocs/luci-static/resources/view/fchomo/node.js:1271
msgid "Show connections in the dashboard for breaking connections easier."
msgstr "在面板中显示连接以便于打断连接。"
@@ -2567,18 +2604,18 @@ msgstr "在面板中显示连接以便于打断连接。"
msgid "Silent"
msgstr "静音"
-#: htdocs/luci-static/resources/fchomo.js:164
+#: htdocs/luci-static/resources/fchomo.js:169
msgid "Simple round-robin all nodes"
msgstr "简单轮替所有节点"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1502
+#: htdocs/luci-static/resources/view/fchomo/node.js:1516
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:369
msgid "Size limit"
msgstr "大小限制"
#: htdocs/luci-static/resources/view/fchomo/client.js:1576
-#: htdocs/luci-static/resources/view/fchomo/node.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1594
+#: htdocs/luci-static/resources/view/fchomo/node.js:1034
+#: htdocs/luci-static/resources/view/fchomo/node.js:1608
msgid "Skip cert verify"
msgstr "跳过证书验证"
@@ -2594,7 +2631,7 @@ msgstr "跳过嗅探目标地址"
msgid "Skiped sniffing src address"
msgstr "跳过嗅探来源地址"
-#: htdocs/luci-static/resources/fchomo.js:177
+#: htdocs/luci-static/resources/fchomo.js:182
msgid "Snell"
msgstr ""
@@ -2610,7 +2647,7 @@ msgstr "嗅探器"
msgid "Sniffer settings"
msgstr "嗅探器设置"
-#: htdocs/luci-static/resources/fchomo.js:413
+#: htdocs/luci-static/resources/fchomo.js:419
msgid "Specify a ID"
msgstr "指定一个ID"
@@ -2625,11 +2662,11 @@ msgstr "指定需要被代理的目标端口。多个端口必须用逗号隔开
msgid "Stack"
msgstr "堆栈"
-#: htdocs/luci-static/resources/fchomo.js:227
+#: htdocs/luci-static/resources/fchomo.js:233
msgid "Steam Client"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:228
+#: htdocs/luci-static/resources/fchomo.js:234
msgid "Steam P2P"
msgstr ""
@@ -2638,6 +2675,7 @@ msgstr ""
msgid "Strategy"
msgstr "策略"
+#: htdocs/luci-static/resources/fchomo/listeners.js:521
#: htdocs/luci-static/resources/view/fchomo/client.js:1303
#: htdocs/luci-static/resources/view/fchomo/client.js:1312
msgid "Sub rule"
@@ -2647,7 +2685,7 @@ msgstr "子规则"
msgid "Sub rule group"
msgstr "子规则组"
-#: htdocs/luci-static/resources/fchomo.js:673
+#: htdocs/luci-static/resources/fchomo.js:679
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:215
msgid "Successfully imported %s %s of total %s."
msgstr "已成功导入 %s 个%s (共 %s 个)。"
@@ -2656,12 +2694,12 @@ msgstr "已成功导入 %s 个%s (共 %s 个)。"
msgid "Successfully updated."
msgstr "更新成功。"
-#: htdocs/luci-static/resources/fchomo.js:1642
+#: htdocs/luci-static/resources/fchomo.js:1648
msgid "Successfully uploaded."
msgstr "已成功上传。"
-#: htdocs/luci-static/resources/fchomo.js:144
-#: htdocs/luci-static/resources/fchomo.js:176
+#: htdocs/luci-static/resources/fchomo.js:148
+#: htdocs/luci-static/resources/fchomo.js:181
msgid "Sudoku"
msgstr ""
@@ -2681,20 +2719,21 @@ msgstr "系统"
msgid "System DNS"
msgstr "系统 DNS"
-#: htdocs/luci-static/resources/fchomo.js:139
-#: htdocs/luci-static/resources/fchomo.js:144
-#: htdocs/luci-static/resources/fchomo.js:145
-#: htdocs/luci-static/resources/fchomo.js:146
-#: htdocs/luci-static/resources/fchomo.js:147
+#: htdocs/luci-static/resources/fchomo.js:143
#: htdocs/luci-static/resources/fchomo.js:148
-#: htdocs/luci-static/resources/fchomo.js:171
+#: htdocs/luci-static/resources/fchomo.js:149
+#: htdocs/luci-static/resources/fchomo.js:150
+#: htdocs/luci-static/resources/fchomo.js:151
+#: htdocs/luci-static/resources/fchomo.js:152
#: htdocs/luci-static/resources/fchomo.js:176
-#: htdocs/luci-static/resources/fchomo.js:177
-#: htdocs/luci-static/resources/fchomo.js:178
-#: htdocs/luci-static/resources/fchomo.js:179
-#: htdocs/luci-static/resources/fchomo.js:180
#: htdocs/luci-static/resources/fchomo.js:181
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:182
+#: htdocs/luci-static/resources/fchomo.js:183
+#: htdocs/luci-static/resources/fchomo.js:184
+#: htdocs/luci-static/resources/fchomo.js:185
+#: htdocs/luci-static/resources/fchomo.js:186
+#: htdocs/luci-static/resources/fchomo.js:193
+#: htdocs/luci-static/resources/fchomo/listeners.js:546
#: htdocs/luci-static/resources/view/fchomo/client.js:589
#: htdocs/luci-static/resources/view/fchomo/client.js:679
msgid "TCP"
@@ -2704,7 +2743,7 @@ msgstr "TCP"
msgid "TCP concurrency"
msgstr "TCP 并发"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1250
+#: htdocs/luci-static/resources/view/fchomo/node.js:1264
msgid "TCP only"
msgstr "仅 TCP"
@@ -2716,54 +2755,61 @@ msgstr "TCP-Keep-Alive 闲置超时"
msgid "TCP-Keep-Alive interval"
msgstr "TCP-Keep-Alive 间隔"
-#: htdocs/luci-static/resources/fchomo.js:140
-#: htdocs/luci-static/resources/fchomo.js:141
-#: htdocs/luci-static/resources/fchomo.js:142
-#: htdocs/luci-static/resources/fchomo.js:143
-#: htdocs/luci-static/resources/fchomo.js:170
-#: htdocs/luci-static/resources/fchomo.js:172
-#: htdocs/luci-static/resources/fchomo.js:173
+#: htdocs/luci-static/resources/fchomo.js:144
+#: htdocs/luci-static/resources/fchomo.js:145
+#: htdocs/luci-static/resources/fchomo.js:146
+#: htdocs/luci-static/resources/fchomo.js:147
+#: htdocs/luci-static/resources/fchomo.js:155
+#: htdocs/luci-static/resources/fchomo.js:156
#: htdocs/luci-static/resources/fchomo.js:175
+#: htdocs/luci-static/resources/fchomo.js:177
+#: htdocs/luci-static/resources/fchomo.js:178
+#: htdocs/luci-static/resources/fchomo.js:180
+#: htdocs/luci-static/resources/fchomo.js:191
msgid "TCP/UDP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1281
-#: htdocs/luci-static/resources/view/fchomo/node.js:1561
+#: htdocs/luci-static/resources/view/fchomo/node.js:1295
+#: htdocs/luci-static/resources/view/fchomo/node.js:1575
msgid "TFO"
msgstr "TCP 快速打开 (TFO)"
+#: htdocs/luci-static/resources/fchomo/listeners.js:768
#: htdocs/luci-static/resources/view/fchomo/global.js:529
-#: htdocs/luci-static/resources/view/fchomo/node.js:454
-#: htdocs/luci-static/resources/view/fchomo/node.js:811
-#: htdocs/luci-static/resources/view/fchomo/node.js:937
-#: htdocs/luci-static/resources/view/fchomo/server.js:780
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
+#: htdocs/luci-static/resources/view/fchomo/node.js:814
+#: htdocs/luci-static/resources/view/fchomo/node.js:948
msgid "TLS"
msgstr "TLS"
-#: htdocs/luci-static/resources/view/fchomo/node.js:968
-#: htdocs/luci-static/resources/view/fchomo/server.js:811
+#: htdocs/luci-static/resources/fchomo/listeners.js:805
+#: htdocs/luci-static/resources/view/fchomo/node.js:979
msgid "TLS ALPN"
msgstr "TLS ALPN"
-#: htdocs/luci-static/resources/view/fchomo/node.js:962
+#: htdocs/luci-static/resources/view/fchomo/node.js:973
msgid "TLS SNI"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:121
#: htdocs/luci-static/resources/view/fchomo/node.js:224
-#: htdocs/luci-static/resources/view/fchomo/server.js:173
msgid "TLS fields"
msgstr "TLS字段"
-#: htdocs/luci-static/resources/fchomo.js:149
-#: htdocs/luci-static/resources/fchomo.js:184
+#: htdocs/luci-static/resources/fchomo.js:153
+#: htdocs/luci-static/resources/fchomo.js:189
msgid "TUIC"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:225
+#: htdocs/luci-static/resources/fchomo.js:231
msgid "TURN"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:243
+#: htdocs/luci-static/resources/fchomo/listeners.js:484
+msgid "Target address"
+msgstr "目标地址"
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:187
msgid ""
"Tell the client to use the BBR flow control algorithm instead of Hysteria CC."
msgstr "让客户端使用 BBR 流控算法。"
@@ -2773,34 +2819,34 @@ msgstr "让客户端使用 BBR 流控算法。"
msgid "The %s address used by local machine in the Cloudflare WARP network."
msgstr "Cloudflare WARP 网络中使用的本机 %s 地址。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:727
-#: htdocs/luci-static/resources/view/fchomo/node.js:735
+#: htdocs/luci-static/resources/view/fchomo/node.js:730
+#: htdocs/luci-static/resources/view/fchomo/node.js:738
msgid "The %s address used by local machine in the Wireguard network."
msgstr "WireGuard 网络中使用的本机 %s 地址。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1043
-#: htdocs/luci-static/resources/view/fchomo/server.js:832
+#: htdocs/luci-static/resources/fchomo/listeners.js:826
+#: htdocs/luci-static/resources/view/fchomo/node.js:1057
msgid "The %s private key, in PEM format."
msgstr "%s私钥,需要 PEM 格式。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:811
+#: htdocs/luci-static/resources/fchomo/listeners.js:849
#: htdocs/luci-static/resources/view/fchomo/global.js:550
-#: htdocs/luci-static/resources/view/fchomo/node.js:1029
-#: htdocs/luci-static/resources/view/fchomo/server.js:817
-#: htdocs/luci-static/resources/view/fchomo/server.js:855
+#: htdocs/luci-static/resources/view/fchomo/node.js:1043
msgid "The %s public key, in PEM format."
msgstr "%s公钥,需要 PEM 格式。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1063
+#: htdocs/luci-static/resources/view/fchomo/node.js:1077
msgid ""
"The ECH parameter of the HTTPS record for the domain. Leave empty to resolve "
"via DNS."
msgstr "域名的 HTTPS 记录的 ECH 参数。留空则通过 DNS 解析。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:380
+#: htdocs/luci-static/resources/view/fchomo/node.js:386
msgid "The ED25519 available private key or UUID provided by Sudoku server."
msgstr "Sudoku 服务器提供的 ED25519 可用私钥 或 UUID。"
-#: htdocs/luci-static/resources/view/fchomo/server.js:300
+#: htdocs/luci-static/resources/fchomo/listeners.js:250
msgid "The ED25519 master public key or UUID generated by Sudoku."
msgstr "Sudoku 生成的 ED25519 主公钥 或 UUID。"
@@ -2808,8 +2854,8 @@ msgstr "Sudoku 生成的 ED25519 主公钥 或 UUID。"
msgid "The default value is 2:00 every day."
msgstr "默认值为每天 2:00。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:918
-#: htdocs/luci-static/resources/view/fchomo/server.js:658
+#: htdocs/luci-static/resources/fchomo/listeners.js:646
+#: htdocs/luci-static/resources/view/fchomo/node.js:929
msgid ""
"The first padding must have a probability of 100% and at least 35 bytes."
msgstr "首个填充必须为 100% 的概率并且至少 35 字节。"
@@ -2824,19 +2870,19 @@ msgstr "匹配 %s 的将被视为未被投毒污染。"
msgid "The matching %s will be deemed as poisoned."
msgstr "匹配 %s 的将被视为已被投毒污染。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:916
-#: htdocs/luci-static/resources/view/fchomo/server.js:656
+#: htdocs/luci-static/resources/fchomo/listeners.js:644
+#: htdocs/luci-static/resources/view/fchomo/node.js:927
msgid "The server and client can set different padding parameters."
msgstr "服务器和客户端可以设置不同的填充参数。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:907
#: htdocs/luci-static/resources/view/fchomo/global.js:594
-#: htdocs/luci-static/resources/view/fchomo/server.js:913
msgid "This ECH parameter needs to be added to the HTTPS record of the domain."
msgstr "此 ECH 参数需要添加到域名的 HTTPS 记录中。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1579
-#: htdocs/luci-static/resources/view/fchomo/node.js:1023
-#: htdocs/luci-static/resources/view/fchomo/node.js:1597
+#: htdocs/luci-static/resources/view/fchomo/node.js:1037
+#: htdocs/luci-static/resources/view/fchomo/node.js:1611
msgid ""
"This is DANGEROUS, your traffic is almost like "
"PLAIN TEXT! Use at your own risk!"
@@ -2875,28 +2921,33 @@ msgstr "Tproxy Fwmark/fwmask"
msgid "Tproxy port"
msgstr "Tproxy 端口"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1753
+#: htdocs/luci-static/resources/fchomo/listeners.js:238
+#: htdocs/luci-static/resources/view/fchomo/node.js:378
+msgid "Traffic pattern"
+msgstr "流量模式"
+
+#: htdocs/luci-static/resources/view/fchomo/node.js:1767
msgid "Transit proxy group"
msgstr "中转代理组"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1759
+#: htdocs/luci-static/resources/view/fchomo/node.js:1773
msgid "Transit proxy node"
msgstr "中转代理节点"
+#: htdocs/luci-static/resources/fchomo/listeners.js:231
+#: htdocs/luci-static/resources/fchomo/listeners.js:958
#: htdocs/luci-static/resources/view/fchomo/node.js:355
-#: htdocs/luci-static/resources/view/fchomo/node.js:1105
-#: htdocs/luci-static/resources/view/fchomo/server.js:287
-#: htdocs/luci-static/resources/view/fchomo/server.js:964
+#: htdocs/luci-static/resources/view/fchomo/node.js:1119
msgid "Transport"
msgstr "传输层"
+#: htdocs/luci-static/resources/fchomo/listeners.js:122
#: htdocs/luci-static/resources/view/fchomo/node.js:225
-#: htdocs/luci-static/resources/view/fchomo/server.js:174
msgid "Transport fields"
msgstr "传输层字段"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1110
-#: htdocs/luci-static/resources/view/fchomo/server.js:969
+#: htdocs/luci-static/resources/fchomo/listeners.js:963
+#: htdocs/luci-static/resources/view/fchomo/node.js:1124
msgid "Transport type"
msgstr "传输层类型"
@@ -2904,11 +2955,16 @@ msgstr "传输层类型"
msgid "Treat the destination IP as the source IP."
msgstr "将 目标 IP 视为 来源 IP。"
-#: htdocs/luci-static/resources/fchomo.js:147
-#: htdocs/luci-static/resources/fchomo.js:180
+#: htdocs/luci-static/resources/fchomo.js:151
+#: htdocs/luci-static/resources/fchomo.js:185
msgid "Trojan"
msgstr ""
+#: htdocs/luci-static/resources/fchomo.js:155
+#: htdocs/luci-static/resources/fchomo.js:191
+msgid "TrustTunnel"
+msgstr ""
+
#: htdocs/luci-static/resources/view/fchomo/global.js:764
msgid "Tun Fwmark/fwmask"
msgstr "Tun Fwmark/fwmask"
@@ -2925,30 +2981,35 @@ msgstr "Tun 设置"
msgid "Tun stack."
msgstr "Tun 堆栈"
+#: htdocs/luci-static/resources/fchomo.js:156
+msgid "Tunnel"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:141
#: htdocs/luci-static/resources/view/fchomo/client.js:530
#: htdocs/luci-static/resources/view/fchomo/client.js:643
#: htdocs/luci-static/resources/view/fchomo/client.js:737
#: htdocs/luci-static/resources/view/fchomo/client.js:842
#: htdocs/luci-static/resources/view/fchomo/client.js:1028
#: htdocs/luci-static/resources/view/fchomo/node.js:238
-#: htdocs/luci-static/resources/view/fchomo/node.js:1439
-#: htdocs/luci-static/resources/view/fchomo/node.js:1724
+#: htdocs/luci-static/resources/view/fchomo/node.js:1453
+#: htdocs/luci-static/resources/view/fchomo/node.js:1738
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:269
-#: htdocs/luci-static/resources/view/fchomo/server.js:193
msgid "Type"
msgstr "类型"
-#: htdocs/luci-static/resources/fchomo.js:149
-#: htdocs/luci-static/resources/fchomo.js:150
-#: htdocs/luci-static/resources/fchomo.js:183
-#: htdocs/luci-static/resources/fchomo.js:184
-#: htdocs/luci-static/resources/fchomo.js:185
-#: htdocs/luci-static/resources/fchomo.js:186
+#: htdocs/luci-static/resources/fchomo.js:153
+#: htdocs/luci-static/resources/fchomo.js:154
+#: htdocs/luci-static/resources/fchomo.js:188
+#: htdocs/luci-static/resources/fchomo.js:189
+#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo.js:192
+#: htdocs/luci-static/resources/fchomo/listeners.js:547
+#: htdocs/luci-static/resources/fchomo/listeners.js:551
#: htdocs/luci-static/resources/view/fchomo/client.js:588
#: htdocs/luci-static/resources/view/fchomo/client.js:678
-#: htdocs/luci-static/resources/view/fchomo/node.js:851
-#: htdocs/luci-static/resources/view/fchomo/node.js:1571
-#: htdocs/luci-static/resources/view/fchomo/server.js:563
+#: htdocs/luci-static/resources/view/fchomo/node.js:862
+#: htdocs/luci-static/resources/view/fchomo/node.js:1585
msgid "UDP"
msgstr "UDP"
@@ -2972,19 +3033,19 @@ msgstr "UDP 包中继模式。"
msgid "UDP relay mode"
msgstr "UDP 中继模式"
-#: htdocs/luci-static/resources/fchomo.js:214
+#: htdocs/luci-static/resources/fchomo.js:220
msgid "URL test"
msgstr "自动选择"
-#: htdocs/luci-static/resources/view/fchomo/node.js:503
+#: htdocs/luci-static/resources/fchomo/listeners.js:247
+#: htdocs/luci-static/resources/fchomo/listeners.js:405
+#: htdocs/luci-static/resources/fchomo/listeners.js:460
+#: htdocs/luci-static/resources/view/fchomo/node.js:512
#: htdocs/luci-static/resources/view/fchomo/node.js:621
-#: htdocs/luci-static/resources/view/fchomo/server.js:297
-#: htdocs/luci-static/resources/view/fchomo/server.js:448
-#: htdocs/luci-static/resources/view/fchomo/server.js:512
msgid "UUID"
msgstr "UUID"
-#: htdocs/luci-static/resources/fchomo.js:1185
+#: htdocs/luci-static/resources/fchomo.js:1191
msgid "Unable to download unsupported type: %s"
msgstr "无法下载不支持的类型: %s"
@@ -3009,8 +3070,8 @@ msgstr "未知错误。"
msgid "Unknown error: %s"
msgstr "未知错误:%s"
-#: htdocs/luci-static/resources/view/fchomo/node.js:856
-#: htdocs/luci-static/resources/view/fchomo/node.js:1576
+#: htdocs/luci-static/resources/view/fchomo/node.js:867
+#: htdocs/luci-static/resources/view/fchomo/node.js:1590
msgid "UoT"
msgstr "UDP over TCP (UoT)"
@@ -3018,22 +3079,22 @@ msgstr "UDP over TCP (UoT)"
msgid "Update failed."
msgstr "更新失败。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1508
+#: htdocs/luci-static/resources/view/fchomo/node.js:1522
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:375
msgid "Update interval"
msgstr "更新间隔"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1268
+#: htdocs/luci-static/resources/view/fchomo/node.js:1282
msgid "Upload bandwidth"
msgstr "上传带宽"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1269
+#: htdocs/luci-static/resources/view/fchomo/node.js:1283
msgid "Upload bandwidth in Mbps."
msgstr "上传带宽(单位:Mbps)。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1034
-#: htdocs/luci-static/resources/view/fchomo/server.js:823
-#: htdocs/luci-static/resources/view/fchomo/server.js:863
+#: htdocs/luci-static/resources/fchomo/listeners.js:817
+#: htdocs/luci-static/resources/fchomo/listeners.js:857
+#: htdocs/luci-static/resources/view/fchomo/node.js:1048
msgid "Upload certificate"
msgstr "上传证书"
@@ -3041,17 +3102,17 @@ msgstr "上传证书"
msgid "Upload initial package"
msgstr "上传初始资源包"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1048
-#: htdocs/luci-static/resources/view/fchomo/server.js:838
+#: htdocs/luci-static/resources/fchomo/listeners.js:832
+#: htdocs/luci-static/resources/view/fchomo/node.js:1062
msgid "Upload key"
msgstr "上传密钥"
+#: htdocs/luci-static/resources/fchomo/listeners.js:820
+#: htdocs/luci-static/resources/fchomo/listeners.js:835
+#: htdocs/luci-static/resources/fchomo/listeners.js:860
#: htdocs/luci-static/resources/view/fchomo/global.js:306
-#: htdocs/luci-static/resources/view/fchomo/node.js:1037
#: htdocs/luci-static/resources/view/fchomo/node.js:1051
-#: htdocs/luci-static/resources/view/fchomo/server.js:826
-#: htdocs/luci-static/resources/view/fchomo/server.js:841
-#: htdocs/luci-static/resources/view/fchomo/server.js:866
+#: htdocs/luci-static/resources/view/fchomo/node.js:1065
msgid "Upload..."
msgstr "上传..."
@@ -3075,7 +3136,7 @@ msgstr "用于解析 DNS 服务器的域名。必须是 IP。"
msgid "Used to resolve the domain of the Proxy node."
msgstr "用于解析代理节点的域名。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:963
+#: htdocs/luci-static/resources/view/fchomo/node.js:974
msgid "Used to verify the hostname on the returned certificates."
msgstr "用于验证返回的证书上的主机名。"
@@ -3083,8 +3144,8 @@ msgstr "用于验证返回的证书上的主机名。"
msgid "User Authentication"
msgstr "用户认证"
+#: htdocs/luci-static/resources/fchomo/listeners.js:160
#: htdocs/luci-static/resources/view/fchomo/node.js:256
-#: htdocs/luci-static/resources/view/fchomo/server.js:216
msgid "Username"
msgstr "用户名"
@@ -3092,50 +3153,50 @@ msgstr "用户名"
msgid "Users filter mode"
msgstr "使用者过滤模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1198
+#: htdocs/luci-static/resources/view/fchomo/node.js:1212
msgid "V2ray HTTPUpgrade"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1203
+#: htdocs/luci-static/resources/view/fchomo/node.js:1217
msgid "V2ray HTTPUpgrade fast open"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:146
-#: htdocs/luci-static/resources/fchomo.js:179
+#: htdocs/luci-static/resources/fchomo.js:150
+#: htdocs/luci-static/resources/fchomo.js:184
msgid "VLESS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:145
-#: htdocs/luci-static/resources/fchomo.js:178
+#: htdocs/luci-static/resources/fchomo.js:149
+#: htdocs/luci-static/resources/fchomo.js:183
msgid "VMess"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1445
-#: htdocs/luci-static/resources/view/fchomo/node.js:1730
+#: htdocs/luci-static/resources/view/fchomo/node.js:1459
+#: htdocs/luci-static/resources/view/fchomo/node.js:1744
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:312
msgid "Value"
msgstr "可视化值"
-#: htdocs/luci-static/resources/fchomo.js:343
+#: htdocs/luci-static/resources/fchomo.js:349
msgid "Verify if given"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:830
-#: htdocs/luci-static/resources/view/fchomo/server.js:554
+#: htdocs/luci-static/resources/fchomo/listeners.js:511
+#: htdocs/luci-static/resources/view/fchomo/node.js:503
+#: htdocs/luci-static/resources/view/fchomo/node.js:833
msgid "Version"
msgstr "版本"
-#: htdocs/luci-static/resources/view/fchomo/node.js:838
+#: htdocs/luci-static/resources/view/fchomo/node.js:841
msgid "Version hint"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:120
#: htdocs/luci-static/resources/view/fchomo/node.js:223
-#: htdocs/luci-static/resources/view/fchomo/server.js:172
msgid "Vless Encryption fields"
msgstr "Vless Encryption 字段"
-#: htdocs/luci-static/resources/fchomo.js:380
+#: htdocs/luci-static/resources/fchomo.js:386
msgid "Wait a random 0-111 milliseconds with 75% probability."
msgstr "以 75% 的概率等待随机 0-111 毫秒。"
@@ -3143,16 +3204,19 @@ msgstr "以 75% 的概率等待随机 0-111 毫秒。"
msgid "Warning"
msgstr "警告"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1115
-#: htdocs/luci-static/resources/view/fchomo/node.js:1126
-#: htdocs/luci-static/resources/view/fchomo/node.js:1131
-#: htdocs/luci-static/resources/view/fchomo/server.js:971
-#: htdocs/luci-static/resources/view/fchomo/server.js:982
-#: htdocs/luci-static/resources/view/fchomo/server.js:987
+#: htdocs/luci-static/resources/fchomo/listeners.js:390
+#: htdocs/luci-static/resources/fchomo/listeners.js:965
+#: htdocs/luci-static/resources/fchomo/listeners.js:976
+#: htdocs/luci-static/resources/fchomo/listeners.js:981
+#: htdocs/luci-static/resources/view/fchomo/node.js:457
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+#: htdocs/luci-static/resources/view/fchomo/node.js:1129
+#: htdocs/luci-static/resources/view/fchomo/node.js:1140
+#: htdocs/luci-static/resources/view/fchomo/node.js:1145
msgid "WebSocket"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:132
+#: htdocs/luci-static/resources/view/fchomo/server.js:24
msgid "When used as a server, HomeProxy is a better choice."
msgstr "用作服务端时,HomeProxy 是更好的选择。"
@@ -3160,23 +3224,23 @@ msgstr "用作服务端时,HomeProxy 是更好的选择。"
msgid "White list"
msgstr "白名单"
-#: htdocs/luci-static/resources/fchomo.js:186
+#: htdocs/luci-static/resources/fchomo.js:192
msgid "WireGuard"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:749
+#: htdocs/luci-static/resources/view/fchomo/node.js:752
msgid "WireGuard peer public key."
msgstr "WireGuard 对端公钥。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:756
+#: htdocs/luci-static/resources/view/fchomo/node.js:759
msgid "WireGuard pre-shared key."
msgstr "WireGuard 预共享密钥。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:741
+#: htdocs/luci-static/resources/view/fchomo/node.js:744
msgid "WireGuard requires base64-encoded private keys."
msgstr "WireGuard 要求 base64 编码的私钥。"
-#: htdocs/luci-static/resources/view/fchomo/server.js:617
+#: htdocs/luci-static/resources/fchomo/listeners.js:605
msgid "XOR mode"
msgstr "XOR 模式"
@@ -3192,23 +3256,23 @@ msgstr "Yaml 格式文本"
msgid "YouTube"
msgstr "油管"
-#: htdocs/luci-static/resources/fchomo.js:1624
+#: htdocs/luci-static/resources/fchomo.js:1630
msgid "Your %s was successfully uploaded. Size: %sB."
msgstr "您的 %s 已成功上传。大小:%sB。"
-#: htdocs/luci-static/resources/fchomo.js:316
-#: htdocs/luci-static/resources/fchomo.js:329
-#: htdocs/luci-static/resources/fchomo.js:334
+#: htdocs/luci-static/resources/fchomo.js:322
+#: htdocs/luci-static/resources/fchomo.js:335
+#: htdocs/luci-static/resources/fchomo.js:340
#: htdocs/luci-static/resources/view/fchomo/node.js:646
msgid "aes-128-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:317
+#: htdocs/luci-static/resources/fchomo.js:323
msgid "aes-192-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:318
-#: htdocs/luci-static/resources/fchomo.js:335
+#: htdocs/luci-static/resources/fchomo.js:324
+#: htdocs/luci-static/resources/fchomo.js:341
msgid "aes-256-gcm"
msgstr ""
@@ -3220,15 +3284,15 @@ msgstr "自动"
msgid "bbr"
msgstr "bbr"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1039
-#: htdocs/luci-static/resources/view/fchomo/server.js:828
-#: htdocs/luci-static/resources/view/fchomo/server.js:868
+#: htdocs/luci-static/resources/fchomo/listeners.js:822
+#: htdocs/luci-static/resources/fchomo/listeners.js:862
+#: htdocs/luci-static/resources/view/fchomo/node.js:1053
msgid "certificate"
msgstr "证书"
-#: htdocs/luci-static/resources/fchomo.js:319
-#: htdocs/luci-static/resources/fchomo.js:330
+#: htdocs/luci-static/resources/fchomo.js:325
#: htdocs/luci-static/resources/fchomo.js:336
+#: htdocs/luci-static/resources/fchomo.js:342
msgid "chacha20-ietf-poly1305"
msgstr ""
@@ -3240,8 +3304,8 @@ msgstr ""
msgid "cubic"
msgstr "cubic"
-#: htdocs/luci-static/resources/view/fchomo/server.js:569
-#: htdocs/luci-static/resources/view/fchomo/server.js:600
+#: htdocs/luci-static/resources/fchomo/listeners.js:557
+#: htdocs/luci-static/resources/fchomo/listeners.js:588
msgid "decryption"
msgstr "decryption"
@@ -3249,36 +3313,36 @@ msgstr "decryption"
msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)"
msgstr "dnsmasq 自行选择上游服务器。 (可能影响 CDN 准确性)"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1588
+#: htdocs/luci-static/resources/view/fchomo/node.js:1602
msgid "down"
msgstr "Hysteria 下载速率"
-#: htdocs/luci-static/resources/view/fchomo/node.js:870
-#: htdocs/luci-static/resources/view/fchomo/node.js:893
-#: htdocs/luci-static/resources/view/fchomo/server.js:604
+#: htdocs/luci-static/resources/fchomo/listeners.js:592
+#: htdocs/luci-static/resources/view/fchomo/node.js:881
+#: htdocs/luci-static/resources/view/fchomo/node.js:904
msgid "encryption"
msgstr "encryption"
-#: htdocs/luci-static/resources/view/fchomo/node.js:435
-#: htdocs/luci-static/resources/view/fchomo/server.js:424
+#: htdocs/luci-static/resources/fchomo/listeners.js:374
+#: htdocs/luci-static/resources/view/fchomo/node.js:441
msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink."
msgstr "false = 带宽优化下行 true = 纯 Sudoku 下行。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1114
-#: htdocs/luci-static/resources/view/fchomo/node.js:1125
-#: htdocs/luci-static/resources/view/fchomo/node.js:1130
-#: htdocs/luci-static/resources/view/fchomo/server.js:970
-#: htdocs/luci-static/resources/view/fchomo/server.js:981
-#: htdocs/luci-static/resources/view/fchomo/server.js:986
+#: htdocs/luci-static/resources/fchomo/listeners.js:964
+#: htdocs/luci-static/resources/fchomo/listeners.js:975
+#: htdocs/luci-static/resources/fchomo/listeners.js:980
+#: htdocs/luci-static/resources/view/fchomo/node.js:1128
+#: htdocs/luci-static/resources/view/fchomo/node.js:1139
+#: htdocs/luci-static/resources/view/fchomo/node.js:1144
msgid "gRPC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1181
+#: htdocs/luci-static/resources/view/fchomo/node.js:1195
msgid "gRPC User-Agent"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1177
-#: htdocs/luci-static/resources/view/fchomo/server.js:1005
+#: htdocs/luci-static/resources/fchomo/listeners.js:999
+#: htdocs/luci-static/resources/view/fchomo/node.js:1191
msgid "gRPC service name"
msgstr "gRPC 服务名称"
@@ -3286,11 +3350,11 @@ msgstr "gRPC 服务名称"
msgid "gVisor"
msgstr "gVisor"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1219
+#: htdocs/luci-static/resources/view/fchomo/node.js:1233
msgid "h2mux"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:769
+#: htdocs/luci-static/resources/fchomo/listeners.js:757
msgid "least one keypair required"
msgstr "至少需要一对密钥"
@@ -3304,17 +3368,17 @@ msgstr "metacubexd"
#: htdocs/luci-static/resources/view/fchomo/client.js:1480
#: htdocs/luci-static/resources/view/fchomo/client.js:1711
#: htdocs/luci-static/resources/view/fchomo/client.js:1767
-#: htdocs/luci-static/resources/view/fchomo/node.js:1411
+#: htdocs/luci-static/resources/view/fchomo/node.js:1425
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:232
msgid "mihomo config"
msgstr "mihomo 配置"
-#: htdocs/luci-static/resources/fchomo.js:362
+#: htdocs/luci-static/resources/fchomo.js:368
msgid "mlkem768x25519plus"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1285
-#: htdocs/luci-static/resources/view/fchomo/node.js:1566
+#: htdocs/luci-static/resources/view/fchomo/node.js:1299
+#: htdocs/luci-static/resources/view/fchomo/node.js:1580
msgid "mpTCP"
msgstr "多路径 TCP (mpTCP)"
@@ -3326,21 +3390,21 @@ msgstr "new_reno"
msgid "no-resolve"
msgstr "no-resolve"
-#: htdocs/luci-static/resources/fchomo.js:1359
-#: htdocs/luci-static/resources/fchomo.js:1454
-#: htdocs/luci-static/resources/fchomo.js:1489
-#: htdocs/luci-static/resources/fchomo.js:1517
+#: htdocs/luci-static/resources/fchomo.js:1365
+#: htdocs/luci-static/resources/fchomo.js:1460
+#: htdocs/luci-static/resources/fchomo.js:1495
+#: htdocs/luci-static/resources/fchomo.js:1523
msgid "non-empty value"
msgstr "非空值"
-#: htdocs/luci-static/resources/fchomo.js:314
-#: htdocs/luci-static/resources/fchomo.js:328
-#: htdocs/luci-static/resources/fchomo.js:340
+#: htdocs/luci-static/resources/fchomo.js:320
+#: htdocs/luci-static/resources/fchomo.js:334
+#: htdocs/luci-static/resources/fchomo.js:346
+#: htdocs/luci-static/resources/fchomo/listeners.js:492
#: htdocs/luci-static/resources/view/fchomo/node.js:644
#: htdocs/luci-static/resources/view/fchomo/node.js:664
-#: htdocs/luci-static/resources/view/fchomo/node.js:799
+#: htdocs/luci-static/resources/view/fchomo/node.js:802
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:308
-#: htdocs/luci-static/resources/view/fchomo/server.js:535
msgid "none"
msgstr "无"
@@ -3352,19 +3416,25 @@ msgstr "未找到"
msgid "not included \",\""
msgstr "不包含 \",\""
-#: htdocs/luci-static/resources/fchomo.js:200
+#: htdocs/luci-static/resources/fchomo.js:206
+#: htdocs/luci-static/resources/fchomo/listeners.js:523
+#: htdocs/luci-static/resources/fchomo/listeners.js:524
msgid "null"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:800
+#: htdocs/luci-static/resources/view/fchomo/node.js:803
msgid "obfs-simple"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
-msgid "only applies when %s is stream/poll/auto."
-msgstr "仅当 %s 为 stream/poll/auto 时适用。"
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
+msgid "only applies when %s is %s."
+msgstr "仅当 %s 为 %s 时适用。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1546
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+msgid "only applies when %s is not %s."
+msgstr "仅当 %s 不为 %s 时适用。"
+
+#: htdocs/luci-static/resources/view/fchomo/node.js:1560
msgid "override.proxy-name"
msgstr ""
@@ -3372,13 +3442,13 @@ msgstr ""
msgid "packet addr (v2ray-core v5+)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:449
-#: htdocs/luci-static/resources/view/fchomo/server.js:438
+#: htdocs/luci-static/resources/fchomo/listeners.js:388
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
msgid "poll"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1053
-#: htdocs/luci-static/resources/view/fchomo/server.js:843
+#: htdocs/luci-static/resources/fchomo/listeners.js:837
+#: htdocs/luci-static/resources/view/fchomo/node.js:1067
msgid "private key"
msgstr "私钥"
@@ -3391,7 +3461,7 @@ msgstr "razord-meta"
msgid "requires front-end adaptation using the API."
msgstr "需要使用 API 的前端适配。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:804
+#: htdocs/luci-static/resources/view/fchomo/node.js:807
msgid "restls"
msgstr ""
@@ -3399,17 +3469,17 @@ msgstr ""
msgid "rule-set"
msgstr "规则集"
-#: htdocs/luci-static/resources/view/fchomo/node.js:803
-#: htdocs/luci-static/resources/view/fchomo/server.js:536
+#: htdocs/luci-static/resources/fchomo/listeners.js:493
+#: htdocs/luci-static/resources/view/fchomo/node.js:806
msgid "shadow-tls"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1217
+#: htdocs/luci-static/resources/view/fchomo/node.js:1231
msgid "smux"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:448
-#: htdocs/luci-static/resources/view/fchomo/server.js:437
+#: htdocs/luci-static/resources/fchomo/listeners.js:387
+#: htdocs/luci-static/resources/view/fchomo/node.js:454
msgid "split-stream"
msgstr ""
@@ -3417,7 +3487,11 @@ msgstr ""
msgid "src"
msgstr "src"
-#: htdocs/luci-static/resources/view/fchomo/server.js:296
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
+msgid "stream/poll/auto"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:246
msgid "sudoku-keypair"
msgstr ""
@@ -3425,87 +3499,87 @@ msgstr ""
msgid "unchecked"
msgstr "未检查"
-#: htdocs/luci-static/resources/fchomo.js:426
+#: htdocs/luci-static/resources/fchomo.js:432
msgid "unique UCI identifier"
msgstr "独立 UCI 标识"
-#: htdocs/luci-static/resources/fchomo.js:429
+#: htdocs/luci-static/resources/fchomo.js:435
msgid "unique identifier"
msgstr "独立标识"
-#: htdocs/luci-static/resources/fchomo.js:1526
+#: htdocs/luci-static/resources/fchomo.js:1532
msgid "unique value"
msgstr "独立值"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1582
+#: htdocs/luci-static/resources/view/fchomo/node.js:1596
msgid "up"
msgstr "Hysteria 上传速率"
-#: htdocs/luci-static/resources/view/fchomo/node.js:495
+#: htdocs/luci-static/resources/fchomo/listeners.js:512
+#: htdocs/luci-static/resources/view/fchomo/node.js:504
#: htdocs/luci-static/resources/view/fchomo/node.js:539
-#: htdocs/luci-static/resources/view/fchomo/node.js:831
-#: htdocs/luci-static/resources/view/fchomo/node.js:863
-#: htdocs/luci-static/resources/view/fchomo/server.js:555
+#: htdocs/luci-static/resources/view/fchomo/node.js:834
+#: htdocs/luci-static/resources/view/fchomo/node.js:874
msgid "v1"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:496
-#: htdocs/luci-static/resources/view/fchomo/node.js:832
-#: htdocs/luci-static/resources/view/fchomo/node.js:864
-#: htdocs/luci-static/resources/view/fchomo/server.js:556
+#: htdocs/luci-static/resources/fchomo/listeners.js:513
+#: htdocs/luci-static/resources/view/fchomo/node.js:505
+#: htdocs/luci-static/resources/view/fchomo/node.js:835
+#: htdocs/luci-static/resources/view/fchomo/node.js:875
msgid "v2"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:497
-#: htdocs/luci-static/resources/view/fchomo/node.js:833
-#: htdocs/luci-static/resources/view/fchomo/server.js:557
+#: htdocs/luci-static/resources/fchomo/listeners.js:514
+#: htdocs/luci-static/resources/view/fchomo/node.js:506
+#: htdocs/luci-static/resources/view/fchomo/node.js:836
msgid "v3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1406
-#: htdocs/luci-static/resources/fchomo.js:1409
+#: htdocs/luci-static/resources/fchomo.js:1412
+#: htdocs/luci-static/resources/fchomo.js:1415
msgid "valid JSON format"
msgstr "有效的 JSON 格式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1013
+#: htdocs/luci-static/resources/view/fchomo/node.js:1027
msgid "valid SHA256 string with %d characters"
msgstr "包含 %d 个字符的有效 SHA256 字符串"
-#: htdocs/luci-static/resources/fchomo.js:1431
-#: htdocs/luci-static/resources/fchomo.js:1434
+#: htdocs/luci-static/resources/fchomo.js:1437
+#: htdocs/luci-static/resources/fchomo.js:1440
msgid "valid URL"
msgstr "有效网址"
-#: htdocs/luci-static/resources/fchomo.js:1444
+#: htdocs/luci-static/resources/fchomo.js:1450
msgid "valid base64 key with %d characters"
msgstr "包含 %d 个字符的有效 base64 密钥"
-#: htdocs/luci-static/resources/fchomo.js:1504
#: htdocs/luci-static/resources/fchomo.js:1510
+#: htdocs/luci-static/resources/fchomo.js:1516
msgid "valid format: 2x, 2p, 4v"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1491
+#: htdocs/luci-static/resources/fchomo.js:1497
msgid "valid key length with %d characters"
msgstr "包含 %d 个字符的有效密钥"
-#: htdocs/luci-static/resources/fchomo.js:1369
+#: htdocs/luci-static/resources/fchomo.js:1375
msgid "valid port value"
msgstr "有效端口值"
-#: htdocs/luci-static/resources/fchomo.js:1419
+#: htdocs/luci-static/resources/fchomo.js:1425
msgid "valid uuid"
msgstr "有效 uuid"
-#: htdocs/luci-static/resources/fchomo.js:386
+#: htdocs/luci-static/resources/fchomo.js:392
msgid "vless-mlkem768"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:385
+#: htdocs/luci-static/resources/fchomo.js:391
msgid "vless-x25519"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:320
+#: htdocs/luci-static/resources/fchomo.js:326
msgid "xchacha20-ietf-poly1305"
msgstr ""
@@ -3513,7 +3587,7 @@ msgstr ""
msgid "yacd-meta"
msgstr "yacd-meta"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1218
+#: htdocs/luci-static/resources/view/fchomo/node.js:1232
msgid "yamux"
msgstr ""
@@ -3525,10 +3599,13 @@ msgstr ""
msgid "zero"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1187
+#: htdocs/luci-static/resources/fchomo.js:1193
msgid "🡇"
msgstr ""
+#~ msgid "QUIC congestion controller."
+#~ msgstr "QUIC 拥塞控制器。"
+
#~ msgid ""
#~ "Uplink keeps the Sudoku protocol, and downlink characteristics are "
#~ "consistent with uplink characteristics."
diff --git a/small/luci-app-fchomo/po/zh_Hant/fchomo.po b/small/luci-app-fchomo/po/zh_Hant/fchomo.po
index f5b5a1e570..2e87b96a64 100644
--- a/small/luci-app-fchomo/po/zh_Hant/fchomo.po
+++ b/small/luci-app-fchomo/po/zh_Hant/fchomo.po
@@ -12,30 +12,30 @@ msgstr ""
msgid "%s log"
msgstr "%s 日誌"
-#: htdocs/luci-static/resources/fchomo.js:223
-#: htdocs/luci-static/resources/fchomo.js:224
-#: htdocs/luci-static/resources/fchomo.js:225
-#: htdocs/luci-static/resources/fchomo.js:226
-#: htdocs/luci-static/resources/fchomo.js:227
-#: htdocs/luci-static/resources/fchomo.js:228
+#: htdocs/luci-static/resources/fchomo.js:229
+#: htdocs/luci-static/resources/fchomo.js:230
+#: htdocs/luci-static/resources/fchomo.js:231
+#: htdocs/luci-static/resources/fchomo.js:232
+#: htdocs/luci-static/resources/fchomo.js:233
+#: htdocs/luci-static/resources/fchomo.js:234
msgid "%s ports"
msgstr "%s 連接埠"
-#: htdocs/luci-static/resources/fchomo.js:588
-#: htdocs/luci-static/resources/fchomo.js:591
+#: htdocs/luci-static/resources/fchomo.js:594
+#: htdocs/luci-static/resources/fchomo.js:597
#: htdocs/luci-static/resources/view/fchomo/client.js:315
msgid "(Imported)"
msgstr "(已導入)"
+#: htdocs/luci-static/resources/fchomo/listeners.js:840
+#: htdocs/luci-static/resources/fchomo/listeners.js:848
+#: htdocs/luci-static/resources/fchomo/listeners.js:857
#: htdocs/luci-static/resources/view/fchomo/global.js:543
#: htdocs/luci-static/resources/view/fchomo/global.js:549
-#: htdocs/luci-static/resources/view/fchomo/node.js:1028
-#: htdocs/luci-static/resources/view/fchomo/node.js:1034
#: htdocs/luci-static/resources/view/fchomo/node.js:1042
#: htdocs/luci-static/resources/view/fchomo/node.js:1048
-#: htdocs/luci-static/resources/view/fchomo/server.js:846
-#: htdocs/luci-static/resources/view/fchomo/server.js:854
-#: htdocs/luci-static/resources/view/fchomo/server.js:863
+#: htdocs/luci-static/resources/view/fchomo/node.js:1056
+#: htdocs/luci-static/resources/view/fchomo/node.js:1062
msgid "(mTLS)"
msgstr ""
@@ -46,19 +46,19 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1056
#: htdocs/luci-static/resources/view/fchomo/client.js:1057
#: htdocs/luci-static/resources/view/fchomo/client.js:1278
-#: htdocs/luci-static/resources/view/fchomo/node.js:1734
-#: htdocs/luci-static/resources/view/fchomo/node.js:1740
+#: htdocs/luci-static/resources/view/fchomo/node.js:1748
#: htdocs/luci-static/resources/view/fchomo/node.js:1754
-#: htdocs/luci-static/resources/view/fchomo/node.js:1760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1768
+#: htdocs/luci-static/resources/view/fchomo/node.js:1774
msgid "-- Please choose --"
msgstr "-- 請選擇 --"
-#: htdocs/luci-static/resources/fchomo.js:375
+#: htdocs/luci-static/resources/fchomo.js:381
msgid "0-RTT reuse."
msgstr "0-RTT 重用。"
-#: htdocs/luci-static/resources/fchomo.js:372
-#: htdocs/luci-static/resources/fchomo.js:376
+#: htdocs/luci-static/resources/fchomo.js:378
+#: htdocs/luci-static/resources/fchomo.js:382
msgid "1-RTT only."
msgstr "僅限 1-RTT。"
@@ -66,15 +66,15 @@ msgstr "僅限 1-RTT。"
msgid "163Music"
msgstr "網易雲音樂"
-#: htdocs/luci-static/resources/fchomo.js:322
+#: htdocs/luci-static/resources/fchomo.js:328
msgid "2022-blake3-aes-128-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:323
+#: htdocs/luci-static/resources/fchomo.js:329
msgid "2022-blake3-aes-256-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:324
+#: htdocs/luci-static/resources/fchomo.js:330
msgid "2022-blake3-chacha20-poly1305"
msgstr ""
@@ -82,14 +82,24 @@ msgstr ""
msgid "0 or 1 only."
msgstr "僅限 0 或 1。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1035
+#: htdocs/luci-static/resources/fchomo/listeners.js:818
+#: htdocs/luci-static/resources/fchomo/listeners.js:833
+#: htdocs/luci-static/resources/fchomo/listeners.js:858
#: htdocs/luci-static/resources/view/fchomo/node.js:1049
-#: htdocs/luci-static/resources/view/fchomo/server.js:824
-#: htdocs/luci-static/resources/view/fchomo/server.js:839
-#: htdocs/luci-static/resources/view/fchomo/server.js:864
+#: htdocs/luci-static/resources/view/fchomo/node.js:1063
msgid "Save your configuration before uploading files!"
msgstr "上傳文件前請先保存配置!"
+#: htdocs/luci-static/resources/fchomo/listeners.js:239
+#: htdocs/luci-static/resources/view/fchomo/node.js:379
+msgid ""
+"A base64 string is used to fine-tune network behavior.* will be used if empty."
msgstr "CORS 允許的來源,留空則使用 *。"
-#: htdocs/luci-static/resources/fchomo.js:704
+#: htdocs/luci-static/resources/fchomo.js:710
msgid "Cancel"
msgstr "取消"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1007
+#: htdocs/luci-static/resources/view/fchomo/node.js:1021
msgid "Cert fingerprint"
msgstr "憑證指紋"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1008
+#: htdocs/luci-static/resources/view/fchomo/node.js:1022
msgid ""
"Certificate fingerprint. Used to implement SSL Pinning and prevent MitM."
msgstr "憑證指紋。用於實現 SSL憑證固定 並防止 MitM。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1028
-#: htdocs/luci-static/resources/view/fchomo/server.js:816
+#: htdocs/luci-static/resources/fchomo/listeners.js:810
+#: htdocs/luci-static/resources/view/fchomo/node.js:1042
msgid "Certificate path"
msgstr "憑證路徑"
@@ -428,16 +444,16 @@ msgstr "大陸 IPv6 庫版本"
msgid "China list version"
msgstr "大陸網域清單版本"
+#: htdocs/luci-static/resources/fchomo/listeners.js:213
+#: htdocs/luci-static/resources/fchomo/listeners.js:306
#: htdocs/luci-static/resources/view/fchomo/node.js:332
-#: htdocs/luci-static/resources/view/fchomo/node.js:385
+#: htdocs/luci-static/resources/view/fchomo/node.js:391
#: htdocs/luci-static/resources/view/fchomo/node.js:641
-#: htdocs/luci-static/resources/view/fchomo/server.js:269
-#: htdocs/luci-static/resources/view/fchomo/server.js:356
msgid "Chipher"
msgstr "加密方法"
-#: htdocs/luci-static/resources/view/fchomo/node.js:394
-#: htdocs/luci-static/resources/view/fchomo/server.js:365
+#: htdocs/luci-static/resources/fchomo/listeners.js:315
+#: htdocs/luci-static/resources/view/fchomo/node.js:400
msgid "Chipher must be enabled if obfuscate downlink is disabled."
msgstr "如果下行鏈路混淆功能已停用,則必須啟用加密。"
@@ -453,29 +469,29 @@ msgstr ""
"點擊此處下載"
"最新的初始包。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:633
+#: htdocs/luci-static/resources/fchomo/listeners.js:849
#: htdocs/luci-static/resources/view/fchomo/global.js:550
-#: htdocs/luci-static/resources/view/fchomo/node.js:905
-#: htdocs/luci-static/resources/view/fchomo/node.js:1029
+#: htdocs/luci-static/resources/view/fchomo/node.js:916
#: htdocs/luci-static/resources/view/fchomo/node.js:1043
-#: htdocs/luci-static/resources/view/fchomo/server.js:645
-#: htdocs/luci-static/resources/view/fchomo/server.js:855
+#: htdocs/luci-static/resources/view/fchomo/node.js:1057
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:22
msgid "Client"
msgstr "客戶端"
-#: htdocs/luci-static/resources/view/fchomo/server.js:854
+#: htdocs/luci-static/resources/fchomo/listeners.js:848
msgid "Client Auth Certificate path"
msgstr "客戶端認證憑證路徑"
-#: htdocs/luci-static/resources/view/fchomo/server.js:846
+#: htdocs/luci-static/resources/fchomo/listeners.js:840
msgid "Client Auth type"
msgstr "客戶端認證類型"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1074
+#: htdocs/luci-static/resources/view/fchomo/node.js:1088
msgid "Client fingerprint"
msgstr "客戶端指紋"
-#: htdocs/luci-static/resources/view/fchomo/server.js:352
+#: htdocs/luci-static/resources/fchomo/listeners.js:302
msgid "Client key"
msgstr "客戶端密鑰"
@@ -487,22 +503,21 @@ msgstr "客戶端狀態"
msgid "Collecting data..."
msgstr "收集資料中..."
-#: htdocs/luci-static/resources/fchomo.js:221
-#: htdocs/luci-static/resources/fchomo.js:222
+#: htdocs/luci-static/resources/fchomo.js:227
+#: htdocs/luci-static/resources/fchomo.js:228
msgid "Common ports (bypass P2P traffic)"
msgstr "常用連接埠(繞過 P2P 流量)"
-#: htdocs/luci-static/resources/fchomo.js:1303
+#: htdocs/luci-static/resources/fchomo.js:1309
msgid "Complete"
msgstr "完成"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1555
+#: htdocs/luci-static/resources/view/fchomo/node.js:1569
msgid "Configuration Items"
msgstr "配置項"
-#: htdocs/luci-static/resources/view/fchomo/node.js:515
-#: htdocs/luci-static/resources/view/fchomo/node.js:717
-#: htdocs/luci-static/resources/view/fchomo/server.js:454
+#: htdocs/luci-static/resources/fchomo/listeners.js:537
+#: htdocs/luci-static/resources/view/fchomo/node.js:854
msgid "Congestion controller"
msgstr "擁塞控制器"
@@ -510,19 +525,19 @@ msgstr "擁塞控制器"
msgid "Connection check"
msgstr "連接檢查"
-#: htdocs/luci-static/resources/fchomo.js:573
+#: htdocs/luci-static/resources/fchomo.js:579
msgid "Content copied to clipboard!"
msgstr "內容已複製到剪貼簿!"
#: htdocs/luci-static/resources/view/fchomo/client.js:670
-#: htdocs/luci-static/resources/view/fchomo/node.js:1465
-#: htdocs/luci-static/resources/view/fchomo/node.js:1491
+#: htdocs/luci-static/resources/view/fchomo/node.js:1479
+#: htdocs/luci-static/resources/view/fchomo/node.js:1505
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:332
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:358
msgid "Content will not be verified, Please make sure you enter it correctly."
msgstr "內容將不會被驗證,請確保輸入正確。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1464
+#: htdocs/luci-static/resources/view/fchomo/node.js:1478
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:331
msgid "Contents"
msgstr "內容"
@@ -531,7 +546,7 @@ msgstr "內容"
msgid "Contents have been saved."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:575
+#: htdocs/luci-static/resources/fchomo.js:581
msgid "Copy"
msgstr "複製"
@@ -547,7 +562,7 @@ msgstr "Cron 表達式"
msgid "Custom Direct List"
msgstr "自訂直連清單"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1526
+#: htdocs/luci-static/resources/view/fchomo/node.js:1540
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:393
msgid "Custom HTTP header."
msgstr "自訂 HTTP header。"
@@ -556,8 +571,8 @@ msgstr "自訂 HTTP header。"
msgid "Custom Proxy List"
msgstr "自訂代理清單"
-#: htdocs/luci-static/resources/view/fchomo/node.js:407
-#: htdocs/luci-static/resources/view/fchomo/server.js:378
+#: htdocs/luci-static/resources/fchomo/listeners.js:328
+#: htdocs/luci-static/resources/view/fchomo/node.js:413
msgid "Custom byte layout"
msgstr "自訂位元組佈局"
@@ -566,7 +581,7 @@ msgid ""
"Custom internal hosts. Support yaml or json format."
msgstr "自訂內部 hosts。支援 yaml 或 json 格式。"
-#: htdocs/luci-static/resources/fchomo.js:170
+#: htdocs/luci-static/resources/fchomo.js:175
msgid "DIRECT"
msgstr ""
@@ -583,7 +598,7 @@ msgstr " DNS 連接埠"
#: htdocs/luci-static/resources/view/fchomo/client.js:1428
#: htdocs/luci-static/resources/view/fchomo/client.js:1437
#: htdocs/luci-static/resources/view/fchomo/node.js:712
-#: htdocs/luci-static/resources/view/fchomo/node.js:792
+#: htdocs/luci-static/resources/view/fchomo/node.js:795
msgid "DNS server"
msgstr "DNS 伺服器"
@@ -611,15 +626,15 @@ msgstr "預設 DNS(由 WAN 下發)"
msgid "Default DNS server"
msgstr "預設 DNS 伺服器"
-#: htdocs/luci-static/resources/view/fchomo/node.js:763
+#: htdocs/luci-static/resources/view/fchomo/node.js:766
msgid "Destination addresses allowed to be forwarded via Wireguard."
msgstr "允許通過 WireGuard 轉發的目的位址"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1733
+#: htdocs/luci-static/resources/view/fchomo/node.js:1747
msgid "Destination provider"
msgstr "落地供應商"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1739
+#: htdocs/luci-static/resources/view/fchomo/node.js:1753
msgid "Destination proxy node"
msgstr "落地代理節點"
@@ -627,8 +642,8 @@ msgstr "落地代理節點"
msgid "Dial fields"
msgstr "撥號欄位"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1746
-#: htdocs/luci-static/resources/view/fchomo/node.js:1766
+#: htdocs/luci-static/resources/view/fchomo/node.js:1760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1780
msgid "Different chain head/tail"
msgstr "不同的鏈頭/鏈尾"
@@ -648,9 +663,9 @@ msgstr "直連 IPv6 位址"
msgid "Direct MAC-s"
msgstr "直連 MAC 位址"
+#: htdocs/luci-static/resources/fchomo/listeners.js:193
#: htdocs/luci-static/resources/view/fchomo/global.js:403
#: htdocs/luci-static/resources/view/fchomo/node.js:298
-#: htdocs/luci-static/resources/view/fchomo/server.js:249
msgid "Disable"
msgstr "停用"
@@ -666,7 +681,7 @@ msgstr "停用 quic-go 的 通用分段卸載(GSO)"
msgid "Disable ICMP Forwarding"
msgstr "禁用 ICMP 轉發"
-#: htdocs/luci-static/resources/view/fchomo/node.js:956
+#: htdocs/luci-static/resources/view/fchomo/node.js:967
msgid "Disable SNI"
msgstr "停用 SNI"
@@ -694,46 +709,46 @@ msgstr ""
msgid "Domain"
msgstr "網域"
-#: htdocs/luci-static/resources/view/fchomo/node.js:957
+#: htdocs/luci-static/resources/view/fchomo/node.js:968
msgid "Donot send server name in ClientHello."
msgstr "不要在 ClientHello 中傳送伺服器名稱。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1577
-#: htdocs/luci-static/resources/view/fchomo/node.js:1021
-#: htdocs/luci-static/resources/view/fchomo/node.js:1595
+#: htdocs/luci-static/resources/view/fchomo/node.js:1035
+#: htdocs/luci-static/resources/view/fchomo/node.js:1609
msgid "Donot verifying server certificate."
msgstr "不驗證伺服器憑證。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1274
+#: htdocs/luci-static/resources/view/fchomo/node.js:1288
msgid "Download bandwidth"
msgstr "下載頻寬"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1275
+#: htdocs/luci-static/resources/view/fchomo/node.js:1289
msgid "Download bandwidth in Mbps."
msgstr "下載頻寬(單位:Mbps)。"
-#: htdocs/luci-static/resources/fchomo.js:1182
+#: htdocs/luci-static/resources/fchomo.js:1188
msgid "Download failed: %s"
msgstr "下載失敗: %s"
-#: htdocs/luci-static/resources/fchomo.js:1180
+#: htdocs/luci-static/resources/fchomo.js:1186
msgid "Download successful."
msgstr "下載成功。"
-#: htdocs/luci-static/resources/fchomo.js:156
+#: htdocs/luci-static/resources/fchomo.js:161
msgid "Dual stack"
msgstr "雙棧"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1068
+#: htdocs/luci-static/resources/view/fchomo/node.js:1082
msgid "ECH HTTPS record query servername"
msgstr "ECH HTTPS 記錄查詢網域"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1062
-#: htdocs/luci-static/resources/view/fchomo/server.js:912
+#: htdocs/luci-static/resources/fchomo/listeners.js:906
+#: htdocs/luci-static/resources/view/fchomo/node.js:1076
msgid "ECH config"
msgstr "ECH 配置"
-#: htdocs/luci-static/resources/view/fchomo/server.js:871
+#: htdocs/luci-static/resources/fchomo/listeners.js:865
msgid "ECH key"
msgstr "ECH 密鑰"
@@ -749,14 +764,18 @@ msgstr ""
msgid "ETag support"
msgstr "ETag 支援"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1187
+#: htdocs/luci-static/resources/view/fchomo/node.js:1201
msgid "Early Data first packet length limit."
msgstr "前置數據長度閾值"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1193
+#: htdocs/luci-static/resources/view/fchomo/node.js:1207
msgid "Early Data header name"
msgstr "前置數據標頭"
+#: htdocs/luci-static/resources/view/fchomo/inbound.js:20
+msgid "Edit inbound"
+msgstr "編輯入站"
+
#: htdocs/luci-static/resources/view/fchomo/node.js:203
msgid "Edit node"
msgstr "編輯節點"
@@ -765,15 +784,16 @@ msgstr "編輯節點"
msgid "Edit ruleset"
msgstr "編輯規則集"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1462
+#: htdocs/luci-static/resources/view/fchomo/node.js:1476
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:329
msgid "Editer"
msgstr "編輯器"
-#: htdocs/luci-static/resources/fchomo.js:366
+#: htdocs/luci-static/resources/fchomo.js:372
msgid "Eliminate encryption header characteristics"
msgstr "消除加密頭特徵"
+#: htdocs/luci-static/resources/fchomo/listeners.js:132
#: htdocs/luci-static/resources/view/fchomo/client.js:931
#: htdocs/luci-static/resources/view/fchomo/client.js:1024
#: htdocs/luci-static/resources/view/fchomo/client.js:1262
@@ -784,12 +804,11 @@ msgstr "消除加密頭特徵"
#: htdocs/luci-static/resources/view/fchomo/global.js:401
#: htdocs/luci-static/resources/view/fchomo/global.js:680
#: htdocs/luci-static/resources/view/fchomo/node.js:234
-#: htdocs/luci-static/resources/view/fchomo/node.js:1435
-#: htdocs/luci-static/resources/view/fchomo/node.js:1631
-#: htdocs/luci-static/resources/view/fchomo/node.js:1720
+#: htdocs/luci-static/resources/view/fchomo/node.js:1449
+#: htdocs/luci-static/resources/view/fchomo/node.js:1645
+#: htdocs/luci-static/resources/view/fchomo/node.js:1734
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:257
-#: htdocs/luci-static/resources/view/fchomo/server.js:157
-#: htdocs/luci-static/resources/view/fchomo/server.js:184
+#: htdocs/luci-static/resources/view/fchomo/server.js:49
msgid "Enable"
msgstr "啟用"
@@ -814,49 +833,49 @@ msgstr ""
"為出站連線啟用 IP4P 轉換"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1056
+#: htdocs/luci-static/resources/view/fchomo/node.js:1070
msgid "Enable ECH"
msgstr "啟用 ECH"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1262
+#: htdocs/luci-static/resources/view/fchomo/node.js:1276
msgid "Enable TCP Brutal"
msgstr "啟用 TCP Brutal"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1263
+#: htdocs/luci-static/resources/view/fchomo/node.js:1277
msgid "Enable TCP Brutal congestion control algorithm"
msgstr "啟用 TCP Brutal 擁塞控制演算法。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1251
+#: htdocs/luci-static/resources/view/fchomo/node.js:1265
msgid "Enable multiplexing only for TCP."
msgstr "僅為 TCP 啟用多路復用。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:434
-#: htdocs/luci-static/resources/view/fchomo/server.js:423
+#: htdocs/luci-static/resources/fchomo/listeners.js:373
+#: htdocs/luci-static/resources/view/fchomo/node.js:440
msgid "Enable obfuscate for downlink"
msgstr "啟用下行鏈路混淆"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1245
+#: htdocs/luci-static/resources/view/fchomo/node.js:1259
msgid "Enable padding"
msgstr "啟用填充"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1256
+#: htdocs/luci-static/resources/view/fchomo/node.js:1270
msgid "Enable statistic"
msgstr "啟用統計"
-#: htdocs/luci-static/resources/view/fchomo/node.js:857
-#: htdocs/luci-static/resources/view/fchomo/node.js:1577
+#: htdocs/luci-static/resources/view/fchomo/node.js:868
+#: htdocs/luci-static/resources/view/fchomo/node.js:1591
msgid ""
"Enable the SUoT protocol, requires server support. Conflict with Multiplex."
msgstr "啟用 SUoT 協議,需要服務端支援。與多路復用衝突。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:199
#: htdocs/luci-static/resources/view/fchomo/node.js:304
-#: htdocs/luci-static/resources/view/fchomo/server.js:255
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/server.js:608
+#: htdocs/luci-static/resources/fchomo/listeners.js:596
msgid "Encryption method"
msgstr "加密方法"
@@ -883,7 +902,7 @@ msgid ""
"if empty."
msgstr "超過此限制將會觸發強制健康檢查。留空則使用 5。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1689
+#: htdocs/luci-static/resources/view/fchomo/node.js:1703
msgid "Exclude matched node types."
msgstr "排除匹配的節點類型。"
@@ -896,7 +915,7 @@ msgstr ""
"rel=\"noreferrer noopener\">此處。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1161
-#: htdocs/luci-static/resources/view/fchomo/node.js:1682
+#: htdocs/luci-static/resources/view/fchomo/node.js:1696
msgid "Exclude nodes that meet keywords or regexps."
msgstr "排除匹配關鍵字或表達式的節點。"
@@ -905,64 +924,65 @@ msgid "Expand/Collapse result"
msgstr "展開/收起 結果"
#: htdocs/luci-static/resources/view/fchomo/client.js:1121
-#: htdocs/luci-static/resources/view/fchomo/node.js:1667
+#: htdocs/luci-static/resources/view/fchomo/node.js:1681
msgid "Expected HTTP code. 204 will be used if empty."
msgstr "預期的 HTTP code。留空則使用 204。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1123
-#: htdocs/luci-static/resources/view/fchomo/node.js:1669
+#: htdocs/luci-static/resources/view/fchomo/node.js:1683
msgid "Expected status"
msgstr "預期狀態"
-#: htdocs/luci-static/resources/fchomo.js:423
-#: htdocs/luci-static/resources/fchomo.js:426
#: htdocs/luci-static/resources/fchomo.js:429
-#: htdocs/luci-static/resources/fchomo.js:1320
-#: htdocs/luci-static/resources/fchomo.js:1328
-#: htdocs/luci-static/resources/fchomo.js:1336
-#: htdocs/luci-static/resources/fchomo.js:1359
-#: htdocs/luci-static/resources/fchomo.js:1362
-#: htdocs/luci-static/resources/fchomo.js:1369
-#: htdocs/luci-static/resources/fchomo.js:1385
-#: htdocs/luci-static/resources/fchomo.js:1394
-#: htdocs/luci-static/resources/fchomo.js:1406
-#: htdocs/luci-static/resources/fchomo.js:1409
-#: htdocs/luci-static/resources/fchomo.js:1419
-#: htdocs/luci-static/resources/fchomo.js:1431
-#: htdocs/luci-static/resources/fchomo.js:1434
-#: htdocs/luci-static/resources/fchomo.js:1444
-#: htdocs/luci-static/resources/fchomo.js:1454
-#: htdocs/luci-static/resources/fchomo.js:1489
-#: htdocs/luci-static/resources/fchomo.js:1491
-#: htdocs/luci-static/resources/fchomo.js:1504
+#: htdocs/luci-static/resources/fchomo.js:432
+#: htdocs/luci-static/resources/fchomo.js:435
+#: htdocs/luci-static/resources/fchomo.js:1326
+#: htdocs/luci-static/resources/fchomo.js:1334
+#: htdocs/luci-static/resources/fchomo.js:1342
+#: htdocs/luci-static/resources/fchomo.js:1365
+#: htdocs/luci-static/resources/fchomo.js:1368
+#: htdocs/luci-static/resources/fchomo.js:1375
+#: htdocs/luci-static/resources/fchomo.js:1391
+#: htdocs/luci-static/resources/fchomo.js:1400
+#: htdocs/luci-static/resources/fchomo.js:1412
+#: htdocs/luci-static/resources/fchomo.js:1415
+#: htdocs/luci-static/resources/fchomo.js:1425
+#: htdocs/luci-static/resources/fchomo.js:1437
+#: htdocs/luci-static/resources/fchomo.js:1440
+#: htdocs/luci-static/resources/fchomo.js:1450
+#: htdocs/luci-static/resources/fchomo.js:1460
+#: htdocs/luci-static/resources/fchomo.js:1495
+#: htdocs/luci-static/resources/fchomo.js:1497
#: htdocs/luci-static/resources/fchomo.js:1510
-#: htdocs/luci-static/resources/fchomo.js:1517
-#: htdocs/luci-static/resources/fchomo.js:1526
+#: htdocs/luci-static/resources/fchomo.js:1516
+#: htdocs/luci-static/resources/fchomo.js:1523
+#: htdocs/luci-static/resources/fchomo.js:1532
+#: htdocs/luci-static/resources/fchomo/listeners.js:315
+#: htdocs/luci-static/resources/fchomo/listeners.js:359
+#: htdocs/luci-static/resources/fchomo/listeners.js:625
+#: htdocs/luci-static/resources/fchomo/listeners.js:656
+#: htdocs/luci-static/resources/fchomo/listeners.js:757
#: htdocs/luci-static/resources/view/fchomo/client.js:68
#: htdocs/luci-static/resources/view/fchomo/client.js:1018
#: htdocs/luci-static/resources/view/fchomo/client.js:1508
#: htdocs/luci-static/resources/view/fchomo/global.js:880
-#: htdocs/luci-static/resources/view/fchomo/node.js:394
-#: htdocs/luci-static/resources/view/fchomo/node.js:427
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
-#: htdocs/luci-static/resources/view/fchomo/node.js:928
-#: htdocs/luci-static/resources/view/fchomo/node.js:1013
-#: htdocs/luci-static/resources/view/fchomo/node.js:1746
-#: htdocs/luci-static/resources/view/fchomo/node.js:1766
+#: htdocs/luci-static/resources/view/fchomo/node.js:400
+#: htdocs/luci-static/resources/view/fchomo/node.js:433
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
+#: htdocs/luci-static/resources/view/fchomo/node.js:939
+#: htdocs/luci-static/resources/view/fchomo/node.js:1027
+#: htdocs/luci-static/resources/view/fchomo/node.js:1760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1780
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:284
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:298
-#: htdocs/luci-static/resources/view/fchomo/server.js:365
-#: htdocs/luci-static/resources/view/fchomo/server.js:409
-#: htdocs/luci-static/resources/view/fchomo/server.js:637
-#: htdocs/luci-static/resources/view/fchomo/server.js:668
-#: htdocs/luci-static/resources/view/fchomo/server.js:769
msgid "Expecting: %s"
msgstr "請輸入:%s"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1123
-#: htdocs/luci-static/resources/view/fchomo/node.js:1130
-#: htdocs/luci-static/resources/view/fchomo/server.js:979
-#: htdocs/luci-static/resources/view/fchomo/server.js:986
+#: htdocs/luci-static/resources/fchomo/listeners.js:973
+#: htdocs/luci-static/resources/fchomo/listeners.js:980
+#: htdocs/luci-static/resources/view/fchomo/node.js:1137
+#: htdocs/luci-static/resources/view/fchomo/node.js:1144
msgid "Expecting: only support %s."
msgstr "請輸入:僅支援 %s."
@@ -981,23 +1001,24 @@ msgstr "實驗性"
msgid "Factor"
msgstr "條件"
-#: htdocs/luci-static/resources/fchomo.js:1261
+#: htdocs/luci-static/resources/fchomo.js:1267
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:1214
+#: htdocs/luci-static/resources/fchomo.js:1220
msgid "Failed to generate %s, error: %s."
msgstr "生成 %s 失敗,錯誤:%s。"
-#: htdocs/luci-static/resources/fchomo.js:1626
+#: htdocs/luci-static/resources/fchomo.js:1632
msgid "Failed to upload %s, error: %s."
msgstr "上傳 %s 失敗,錯誤:%s。"
-#: htdocs/luci-static/resources/fchomo.js:1645
+#: htdocs/luci-static/resources/fchomo.js:1651
msgid "Failed to upload, error: %s."
msgstr "上傳失敗,錯誤:%s。"
-#: htdocs/luci-static/resources/fchomo.js:213
+#: htdocs/luci-static/resources/fchomo.js:219
+#: htdocs/luci-static/resources/fchomo/listeners.js:398
msgid "Fallback"
msgstr "自動回退"
@@ -1011,7 +1032,7 @@ msgid "Fallback filter"
msgstr "後備過濾器"
#: htdocs/luci-static/resources/view/fchomo/client.js:1156
-#: htdocs/luci-static/resources/view/fchomo/node.js:1676
+#: htdocs/luci-static/resources/view/fchomo/node.js:1690
msgid "Filter nodes that meet keywords or regexps."
msgstr "過濾匹配關鍵字或表達式的節點。"
@@ -1036,12 +1057,12 @@ msgstr "兜底 DNS 伺服器 (用於未被投毒汙染的網域)"
msgid "Final DNS server (For poisoned domains)"
msgstr "兜底 DNS 伺服器 (用於已被投毒汙染的網域)"
-#: htdocs/luci-static/resources/view/fchomo/server.js:188
+#: htdocs/luci-static/resources/fchomo/listeners.js:136
msgid "Firewall"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:466
#: htdocs/luci-static/resources/view/fchomo/node.js:627
-#: htdocs/luci-static/resources/view/fchomo/server.js:518
msgid "Flow"
msgstr "流控"
@@ -1054,8 +1075,8 @@ msgstr ""
"noopener\">%s."
#: htdocs/luci-static/resources/view/fchomo/client.js:1122
-#: htdocs/luci-static/resources/view/fchomo/node.js:1545
-#: htdocs/luci-static/resources/view/fchomo/node.js:1668
+#: htdocs/luci-static/resources/view/fchomo/node.js:1559
+#: htdocs/luci-static/resources/view/fchomo/node.js:1682
msgid ""
"For format see %s."
@@ -1064,7 +1085,7 @@ msgstr ""
"a>."
#: htdocs/luci-static/resources/view/fchomo/node.js:707
-#: htdocs/luci-static/resources/view/fchomo/node.js:787
+#: htdocs/luci-static/resources/view/fchomo/node.js:790
msgid "Force DNS remote resolution."
msgstr "強制 DNS 遠端解析。"
@@ -1083,7 +1104,7 @@ msgstr "格式"
msgid "FullCombo Shark!"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1149
+#: htdocs/luci-static/resources/view/fchomo/node.js:1163
msgid "GET"
msgstr ""
@@ -1095,10 +1116,10 @@ msgstr "GFW 網域清單版本"
msgid "General"
msgstr "常規"
+#: htdocs/luci-static/resources/fchomo/listeners.js:119
#: htdocs/luci-static/resources/view/fchomo/client.js:1009
#: htdocs/luci-static/resources/view/fchomo/node.js:222
-#: htdocs/luci-static/resources/view/fchomo/node.js:1425
-#: htdocs/luci-static/resources/view/fchomo/server.js:171
+#: htdocs/luci-static/resources/view/fchomo/node.js:1439
msgid "General fields"
msgstr "常規欄位"
@@ -1106,16 +1127,16 @@ msgstr "常規欄位"
msgid "General settings"
msgstr "常規設定"
-#: htdocs/luci-static/resources/fchomo.js:524
-#: htdocs/luci-static/resources/fchomo.js:526
-#: htdocs/luci-static/resources/fchomo.js:540
-#: htdocs/luci-static/resources/fchomo.js:542
+#: htdocs/luci-static/resources/fchomo.js:530
+#: htdocs/luci-static/resources/fchomo.js:532
+#: htdocs/luci-static/resources/fchomo.js:546
+#: htdocs/luci-static/resources/fchomo.js:548
+#: htdocs/luci-static/resources/fchomo/listeners.js:293
+#: htdocs/luci-static/resources/fchomo/listeners.js:334
+#: htdocs/luci-static/resources/fchomo/listeners.js:336
+#: htdocs/luci-static/resources/fchomo/listeners.js:729
+#: htdocs/luci-static/resources/fchomo/listeners.js:898
#: htdocs/luci-static/resources/view/fchomo/global.js:587
-#: htdocs/luci-static/resources/view/fchomo/server.js:343
-#: htdocs/luci-static/resources/view/fchomo/server.js:384
-#: htdocs/luci-static/resources/view/fchomo/server.js:386
-#: htdocs/luci-static/resources/view/fchomo/server.js:741
-#: htdocs/luci-static/resources/view/fchomo/server.js:904
msgid "Generate"
msgstr "生成"
@@ -1166,7 +1187,7 @@ msgstr "全域填充"
msgid "Google"
msgstr "Google"
-#: htdocs/luci-static/resources/fchomo.js:226
+#: htdocs/luci-static/resources/fchomo.js:232
msgid "Google FCM"
msgstr ""
@@ -1178,48 +1199,49 @@ msgstr "授予 fchomo 存取 UCI 配置的權限"
msgid "Group"
msgstr "組"
-#: htdocs/luci-static/resources/fchomo.js:139
-#: htdocs/luci-static/resources/fchomo.js:171
-#: htdocs/luci-static/resources/view/fchomo/node.js:810
-#: htdocs/luci-static/resources/view/fchomo/node.js:1112
-#: htdocs/luci-static/resources/view/fchomo/node.js:1123
-#: htdocs/luci-static/resources/view/fchomo/server.js:979
+#: htdocs/luci-static/resources/fchomo.js:143
+#: htdocs/luci-static/resources/fchomo.js:176
+#: htdocs/luci-static/resources/fchomo/listeners.js:973
+#: htdocs/luci-static/resources/view/fchomo/node.js:813
+#: htdocs/luci-static/resources/view/fchomo/node.js:1126
+#: htdocs/luci-static/resources/view/fchomo/node.js:1137
msgid "HTTP"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/node.js:267
-#: htdocs/luci-static/resources/view/fchomo/node.js:1171
-#: htdocs/luci-static/resources/view/fchomo/node.js:1525
+#: htdocs/luci-static/resources/view/fchomo/node.js:1185
+#: htdocs/luci-static/resources/view/fchomo/node.js:1539
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:392
msgid "HTTP header"
msgstr "HTTP header"
-#: htdocs/luci-static/resources/view/fchomo/node.js:440
-#: htdocs/luci-static/resources/view/fchomo/server.js:429
+#: htdocs/luci-static/resources/fchomo/listeners.js:379
+#: htdocs/luci-static/resources/view/fchomo/node.js:446
msgid "HTTP mask"
msgstr "HTTP 偽裝"
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
-#: htdocs/luci-static/resources/view/fchomo/server.js:434
+#: htdocs/luci-static/resources/fchomo/listeners.js:384
+#: htdocs/luci-static/resources/view/fchomo/node.js:451
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
msgid "HTTP mask mode"
msgstr "HTTP 偽裝模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:469
+#: htdocs/luci-static/resources/view/fchomo/node.js:476
msgid "HTTP mask multiplex"
msgstr "HTTP 偽裝多路復用"
-#: htdocs/luci-static/resources/view/fchomo/node.js:454
-#: htdocs/luci-static/resources/view/fchomo/node.js:459
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
+#: htdocs/luci-static/resources/view/fchomo/node.js:466
msgid "HTTP mask: %s"
msgstr "HTTP 偽裝: %s"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1148
+#: htdocs/luci-static/resources/view/fchomo/node.js:1162
msgid "HTTP request method"
msgstr "HTTP 請求方法"
-#: htdocs/luci-static/resources/view/fchomo/node.js:465
-#: htdocs/luci-static/resources/view/fchomo/server.js:443
+#: htdocs/luci-static/resources/fchomo/listeners.js:394
+#: htdocs/luci-static/resources/view/fchomo/node.js:472
msgid "HTTP root path"
msgstr "HTTP 根路徑"
@@ -1227,15 +1249,15 @@ msgstr "HTTP 根路徑"
msgid "HTTP/3"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:263
+#: htdocs/luci-static/resources/fchomo/listeners.js:207
msgid ""
"HTTP3 server behavior when authentication fails.%s will be used if empty."
msgstr "單位為位元組。留空則使用 %s。"
@@ -1423,15 +1449,15 @@ msgstr "單位為毫秒。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1108
#: htdocs/luci-static/resources/view/fchomo/client.js:1137
-#: htdocs/luci-static/resources/view/fchomo/node.js:1654
+#: htdocs/luci-static/resources/view/fchomo/node.js:1668
msgid "In millisecond. %s will be used if empty."
msgstr "單位為毫秒。留空則使用 %s。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:367
+#: htdocs/luci-static/resources/fchomo/listeners.js:418
+#: htdocs/luci-static/resources/fchomo/listeners.js:425
#: htdocs/luci-static/resources/view/fchomo/node.js:601
#: htdocs/luci-static/resources/view/fchomo/node.js:608
-#: htdocs/luci-static/resources/view/fchomo/server.js:417
-#: htdocs/luci-static/resources/view/fchomo/server.js:470
-#: htdocs/luci-static/resources/view/fchomo/server.js:477
msgid "In seconds."
msgstr "單位為秒。"
@@ -1440,14 +1466,14 @@ msgstr "單位為秒。"
#: htdocs/luci-static/resources/view/fchomo/global.js:430
#: htdocs/luci-static/resources/view/fchomo/global.js:515
#: htdocs/luci-static/resources/view/fchomo/node.js:280
-#: htdocs/luci-static/resources/view/fchomo/node.js:1509
-#: htdocs/luci-static/resources/view/fchomo/node.js:1647
+#: htdocs/luci-static/resources/view/fchomo/node.js:1523
+#: htdocs/luci-static/resources/view/fchomo/node.js:1661
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:376
msgid "In seconds. %s will be used if empty."
msgstr "單位為秒。留空則使用 %s。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:917
-#: htdocs/luci-static/resources/view/fchomo/server.js:657
+#: htdocs/luci-static/resources/fchomo/listeners.js:645
+#: htdocs/luci-static/resources/view/fchomo/node.js:928
msgid ""
"In the order of one Padding-Length and one Padding-"
"Interval, infinite concatenation."
@@ -1456,6 +1482,8 @@ msgstr ""
"序,無限連接。"
#: htdocs/luci-static/resources/view/fchomo/global.js:449
+#: htdocs/luci-static/resources/view/fchomo/inbound.js:28
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:38
msgid "Inbound"
msgstr "入站"
@@ -1487,7 +1515,7 @@ msgstr "引入所有代理節點。"
msgid "Info"
msgstr "訊息"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1442
+#: htdocs/luci-static/resources/view/fchomo/node.js:1456
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:272
msgid "Inline"
msgstr "內嵌"
@@ -1497,25 +1525,26 @@ msgid "Interface Control"
msgstr "介面控制"
#: htdocs/luci-static/resources/fchomo.js:49
-#: htdocs/luci-static/resources/fchomo.js:155
-#: htdocs/luci-static/resources/fchomo.js:348
+#: htdocs/luci-static/resources/fchomo.js:160
+#: htdocs/luci-static/resources/fchomo.js:354
msgid "Keep default"
msgstr "保持預設"
-#: htdocs/luci-static/resources/view/fchomo/node.js:379
-#: htdocs/luci-static/resources/view/fchomo/server.js:299
+#: htdocs/luci-static/resources/fchomo/listeners.js:249
+#: htdocs/luci-static/resources/view/fchomo/node.js:385
msgid "Key"
msgstr "密鑰"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1042
-#: htdocs/luci-static/resources/view/fchomo/server.js:831
+#: htdocs/luci-static/resources/fchomo/listeners.js:825
+#: htdocs/luci-static/resources/view/fchomo/node.js:1056
msgid "Key path"
msgstr "憑證路徑"
-#: htdocs/luci-static/resources/view/fchomo/server.js:676
+#: htdocs/luci-static/resources/fchomo/listeners.js:664
msgid "Keypairs"
msgstr "密鑰對"
+#: htdocs/luci-static/resources/fchomo/listeners.js:127
#: htdocs/luci-static/resources/view/fchomo/client.js:1014
#: htdocs/luci-static/resources/view/fchomo/client.js:1257
#: htdocs/luci-static/resources/view/fchomo/client.js:1349
@@ -1523,24 +1552,23 @@ msgstr "密鑰對"
#: htdocs/luci-static/resources/view/fchomo/client.js:1719
#: htdocs/luci-static/resources/view/fchomo/client.js:1775
#: htdocs/luci-static/resources/view/fchomo/node.js:229
-#: htdocs/luci-static/resources/view/fchomo/node.js:1430
-#: htdocs/luci-static/resources/view/fchomo/node.js:1715
+#: htdocs/luci-static/resources/view/fchomo/node.js:1444
+#: htdocs/luci-static/resources/view/fchomo/node.js:1729
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:252
-#: htdocs/luci-static/resources/view/fchomo/server.js:179
msgid "Label"
msgstr "標籤"
#: htdocs/luci-static/resources/view/fchomo/client.js:1114
-#: htdocs/luci-static/resources/view/fchomo/node.js:1660
+#: htdocs/luci-static/resources/view/fchomo/node.js:1674
msgid "Lazy"
msgstr "懶惰狀態"
-#: htdocs/luci-static/resources/view/fchomo/node.js:447
-#: htdocs/luci-static/resources/view/fchomo/server.js:436
+#: htdocs/luci-static/resources/fchomo/listeners.js:386
+#: htdocs/luci-static/resources/view/fchomo/node.js:453
msgid "Legacy"
msgstr "傳統"
-#: htdocs/luci-static/resources/view/fchomo/server.js:527
+#: htdocs/luci-static/resources/fchomo/listeners.js:475
msgid ""
"Legacy protocol support (VMess MD5 Authentication) is provided for "
"compatibility purposes only, use of alterId > 1 is not recommended."
@@ -1552,16 +1580,16 @@ msgstr ""
msgid "Less compatibility and sometimes better performance."
msgstr "有時效能較好。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:969
-#: htdocs/luci-static/resources/view/fchomo/server.js:812
+#: htdocs/luci-static/resources/fchomo/listeners.js:806
+#: htdocs/luci-static/resources/view/fchomo/node.js:980
msgid "List of supported application level protocols, in order of preference."
msgstr "支援的應用層協議協商清單,依序排列。"
-#: htdocs/luci-static/resources/view/fchomo/server.js:199
+#: htdocs/luci-static/resources/fchomo/listeners.js:147
msgid "Listen address"
msgstr "監聽位址"
-#: htdocs/luci-static/resources/view/fchomo/server.js:176
+#: htdocs/luci-static/resources/fchomo/listeners.js:124
msgid "Listen fields"
msgstr "監聽欄位"
@@ -1569,8 +1597,8 @@ msgstr "監聽欄位"
msgid "Listen interfaces"
msgstr "監聽介面"
+#: htdocs/luci-static/resources/fchomo/listeners.js:152
#: htdocs/luci-static/resources/view/fchomo/client.js:1374
-#: htdocs/luci-static/resources/view/fchomo/server.js:204
msgid "Listen port"
msgstr "監聽埠"
@@ -1578,26 +1606,26 @@ msgstr "監聽埠"
msgid "Listen ports"
msgstr "監聽埠"
-#: htdocs/luci-static/resources/fchomo.js:215
+#: htdocs/luci-static/resources/fchomo.js:221
msgid "Load balance"
msgstr "負載均衡"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1440
+#: htdocs/luci-static/resources/view/fchomo/node.js:1454
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:270
msgid "Local"
msgstr "本地"
#: htdocs/luci-static/resources/view/fchomo/node.js:694
-#: htdocs/luci-static/resources/view/fchomo/node.js:734
+#: htdocs/luci-static/resources/view/fchomo/node.js:737
msgid "Local IPv6 address"
msgstr "本地 IPv6 位址"
#: htdocs/luci-static/resources/view/fchomo/node.js:686
-#: htdocs/luci-static/resources/view/fchomo/node.js:726
+#: htdocs/luci-static/resources/view/fchomo/node.js:729
msgid "Local address"
msgstr "本地位址"
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:70
msgid "Log"
msgstr "日誌"
@@ -1613,21 +1641,21 @@ msgstr "日誌為空。"
msgid "Log level"
msgstr "日誌等級"
-#: htdocs/luci-static/resources/fchomo.js:423
+#: htdocs/luci-static/resources/fchomo.js:429
msgid "Lowercase only"
msgstr "僅限小寫"
#: htdocs/luci-static/resources/view/fchomo/global.js:502
#: htdocs/luci-static/resources/view/fchomo/node.js:700
-#: htdocs/luci-static/resources/view/fchomo/node.js:780
+#: htdocs/luci-static/resources/view/fchomo/node.js:783
msgid "MTU"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:185
+#: htdocs/luci-static/resources/fchomo.js:190
msgid "Masque"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:262
+#: htdocs/luci-static/resources/fchomo/listeners.js:206
msgid "Masquerade"
msgstr "偽裝"
@@ -1659,12 +1687,12 @@ msgstr "匹配回應通過 ipcidr"
msgid "Match rule set."
msgstr "匹配規則集。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1186
+#: htdocs/luci-static/resources/view/fchomo/node.js:1200
msgid "Max Early Data"
msgstr "前置數據最大值"
+#: htdocs/luci-static/resources/fchomo/listeners.js:411
#: htdocs/luci-static/resources/view/fchomo/node.js:543
-#: htdocs/luci-static/resources/view/fchomo/server.js:463
msgid "Max UDP relay packet size"
msgstr "UDP 中繼數據包最大尺寸"
@@ -1672,8 +1700,8 @@ msgstr "UDP 中繼數據包最大尺寸"
msgid "Max count of failures"
msgstr "最大失敗次數"
+#: htdocs/luci-static/resources/fchomo/listeners.js:180
#: htdocs/luci-static/resources/view/fchomo/node.js:291
-#: htdocs/luci-static/resources/view/fchomo/server.js:236
msgid "Max download speed"
msgstr "最大下載速度"
@@ -1681,17 +1709,17 @@ msgstr "最大下載速度"
msgid "Max open streams"
msgstr "限制打開流的數量"
+#: htdocs/luci-static/resources/fchomo/listeners.js:174
#: htdocs/luci-static/resources/view/fchomo/node.js:285
-#: htdocs/luci-static/resources/view/fchomo/server.js:230
msgid "Max upload speed"
msgstr "最大上傳速度"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1223
-#: htdocs/luci-static/resources/view/fchomo/node.js:1239
+#: htdocs/luci-static/resources/view/fchomo/node.js:1237
+#: htdocs/luci-static/resources/view/fchomo/node.js:1253
msgid "Maximum connections"
msgstr "最大連線數"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1237
+#: htdocs/luci-static/resources/view/fchomo/node.js:1251
msgid ""
"Maximum multiplexed streams in a connection before opening a new connection."
"%s and %s."
@@ -1699,24 +1727,24 @@ msgstr ""
"在開啟新連線之前,連線中的最大多路復用流數量。%s 和 "
"%s 衝突。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:419
-#: htdocs/luci-static/resources/view/fchomo/server.js:401
+#: htdocs/luci-static/resources/fchomo/listeners.js:351
+#: htdocs/luci-static/resources/view/fchomo/node.js:425
msgid "Maximum padding rate"
msgstr "最大填充率"
-#: htdocs/luci-static/resources/view/fchomo/node.js:427
-#: htdocs/luci-static/resources/view/fchomo/server.js:409
+#: htdocs/luci-static/resources/fchomo/listeners.js:359
+#: htdocs/luci-static/resources/view/fchomo/node.js:433
msgid ""
"Maximum padding rate must be greater than or equal to the minimum padding "
"rate."
msgstr "最大填充率必須大於等于最小填充率。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1236
+#: htdocs/luci-static/resources/view/fchomo/node.js:1250
msgid "Maximum streams"
msgstr "最大流數量"
-#: htdocs/luci-static/resources/fchomo.js:143
-#: htdocs/luci-static/resources/fchomo.js:175
+#: htdocs/luci-static/resources/fchomo.js:147
+#: htdocs/luci-static/resources/fchomo.js:180
msgid "Mieru"
msgstr ""
@@ -1728,7 +1756,7 @@ msgstr "Mihomo 客戶端"
#: htdocs/luci-static/resources/view/fchomo/log.js:158
#: htdocs/luci-static/resources/view/fchomo/log.js:163
-#: htdocs/luci-static/resources/view/fchomo/server.js:131
+#: htdocs/luci-static/resources/view/fchomo/server.js:23
msgid "Mihomo server"
msgstr "Mihomo 服務端"
@@ -1736,22 +1764,22 @@ msgstr "Mihomo 服務端"
msgid "Min of idle sessions to keep"
msgstr "要保留的最少閒置會話數"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1230
+#: htdocs/luci-static/resources/view/fchomo/node.js:1244
msgid ""
"Minimum multiplexed streams in a connection before opening a new connection."
msgstr "在開啟新連線之前,連線中的最小多路復用流數量。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:412
-#: htdocs/luci-static/resources/view/fchomo/server.js:394
+#: htdocs/luci-static/resources/fchomo/listeners.js:344
+#: htdocs/luci-static/resources/view/fchomo/node.js:418
msgid "Minimum padding rate"
msgstr "最小填充率"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1229
-#: htdocs/luci-static/resources/view/fchomo/node.js:1239
+#: htdocs/luci-static/resources/view/fchomo/node.js:1243
+#: htdocs/luci-static/resources/view/fchomo/node.js:1253
msgid "Minimum streams"
msgstr "最小流數量"
-#: htdocs/luci-static/resources/fchomo.js:141
+#: htdocs/luci-static/resources/fchomo.js:145
#: htdocs/luci-static/resources/view/fchomo/global.js:497
msgid "Mixed"
msgstr "混合"
@@ -1764,12 +1792,12 @@ msgstr "混合 系統 TCP 堆栈和 gVisor UDP 堆栈
msgid "Mixed port"
msgstr "混合連接埠"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1209
+#: htdocs/luci-static/resources/view/fchomo/node.js:1223
msgid "Multiplex"
msgstr "多路復用"
+#: htdocs/luci-static/resources/fchomo/listeners.js:123
#: htdocs/luci-static/resources/view/fchomo/node.js:226
-#: htdocs/luci-static/resources/view/fchomo/server.js:175
msgid "Multiplex fields"
msgstr "多路復用欄位"
@@ -1782,7 +1810,11 @@ msgstr "多路復用"
msgid "NOT"
msgstr "NOT"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1515
+#: htdocs/luci-static/resources/fchomo/listeners.js:528
+msgid "Name of the Proxy group as outbound."
+msgstr "出站代理組的名稱。"
+
+#: htdocs/luci-static/resources/view/fchomo/node.js:1529
msgid "Name of the Proxy group to download provider."
msgstr "用於下載供應商訂閱的代理組名稱。"
@@ -1790,14 +1822,22 @@ msgstr "用於下載供應商訂閱的代理組名稱。"
msgid "Name of the Proxy group to download rule set."
msgstr "用於下載規則集訂閱的代理組名稱。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:522
+msgid "Name of the Sub rule used for inbound matching."
+msgstr "用於入站匹配的子規則名稱。"
+
#: htdocs/luci-static/resources/view/fchomo/node.js:527
msgid "Native UDP"
msgstr "原生 UDP"
-#: htdocs/luci-static/resources/fchomo.js:365
+#: htdocs/luci-static/resources/fchomo.js:371
msgid "Native appearance"
msgstr "原生外觀"
+#: htdocs/luci-static/resources/fchomo/listeners.js:545
+msgid "Network type"
+msgstr "網路類型"
+
#: htdocs/luci-static/resources/view/fchomo/global.js:443
msgid "No Authentication IP ranges"
msgstr "無需認證的 IP 範圍"
@@ -1807,11 +1847,11 @@ msgid "No add'l params"
msgstr "無附加參數"
#: htdocs/luci-static/resources/view/fchomo/client.js:1115
-#: htdocs/luci-static/resources/view/fchomo/node.js:1661
+#: htdocs/luci-static/resources/view/fchomo/node.js:1675
msgid "No testing is performed when this provider node is not in use."
msgstr "當此供應商的節點未使用時,不執行任何測試。"
-#: htdocs/luci-static/resources/fchomo.js:670
+#: htdocs/luci-static/resources/fchomo.js:676
msgid "No valid %s found."
msgstr "未找到有效的%s。"
@@ -1821,22 +1861,22 @@ msgstr "未找到有效的規則集連結。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1041
#: htdocs/luci-static/resources/view/fchomo/node.js:217
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:38
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:46
msgid "Node"
msgstr "節點"
#: htdocs/luci-static/resources/view/fchomo/client.js:1160
-#: htdocs/luci-static/resources/view/fchomo/node.js:1681
+#: htdocs/luci-static/resources/view/fchomo/node.js:1695
msgid "Node exclude filter"
msgstr "排除節點"
#: htdocs/luci-static/resources/view/fchomo/client.js:1165
-#: htdocs/luci-static/resources/view/fchomo/node.js:1688
+#: htdocs/luci-static/resources/view/fchomo/node.js:1702
msgid "Node exclude type"
msgstr "排除節點類型"
#: htdocs/luci-static/resources/view/fchomo/client.js:1155
-#: htdocs/luci-static/resources/view/fchomo/node.js:1675
+#: htdocs/luci-static/resources/view/fchomo/node.js:1689
msgid "Node filter"
msgstr "過濾節點"
@@ -1844,7 +1884,7 @@ msgstr "過濾節點"
msgid "Node switch tolerance"
msgstr "節點切換容差"
-#: htdocs/luci-static/resources/fchomo.js:392
+#: htdocs/luci-static/resources/fchomo.js:398
msgid "None"
msgstr "無"
@@ -1852,41 +1892,41 @@ msgstr "無"
msgid "Not Installed"
msgstr "未安裝"
-#: htdocs/luci-static/resources/fchomo.js:1140
+#: htdocs/luci-static/resources/fchomo.js:1146
msgid "Not Running"
msgstr "未在運作"
-#: htdocs/luci-static/resources/view/fchomo/node.js:472
+#: htdocs/luci-static/resources/view/fchomo/node.js:479
msgid "OFF"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:474
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
msgid "ON"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:809
+#: htdocs/luci-static/resources/view/fchomo/node.js:812
msgid "Obfs Mode"
msgstr "Obfs 模式"
+#: htdocs/luci-static/resources/fchomo/listeners.js:198
#: htdocs/luci-static/resources/view/fchomo/node.js:303
-#: htdocs/luci-static/resources/view/fchomo/server.js:254
msgid "Obfuscate password"
msgstr "混淆密碼"
+#: htdocs/luci-static/resources/fchomo/listeners.js:192
+#: htdocs/luci-static/resources/fchomo/listeners.js:322
#: htdocs/luci-static/resources/view/fchomo/node.js:297
-#: htdocs/luci-static/resources/view/fchomo/node.js:401
-#: htdocs/luci-static/resources/view/fchomo/server.js:248
-#: htdocs/luci-static/resources/view/fchomo/server.js:372
+#: htdocs/luci-static/resources/view/fchomo/node.js:407
msgid "Obfuscate type"
msgstr "混淆類型"
-#: htdocs/luci-static/resources/view/fchomo/node.js:402
-#: htdocs/luci-static/resources/view/fchomo/server.js:373
+#: htdocs/luci-static/resources/fchomo/listeners.js:323
+#: htdocs/luci-static/resources/view/fchomo/node.js:408
msgid "Obfuscated as ASCII data stream"
msgstr "混淆為 ASCII 資料流"
-#: htdocs/luci-static/resources/view/fchomo/node.js:403
-#: htdocs/luci-static/resources/view/fchomo/server.js:374
+#: htdocs/luci-static/resources/fchomo/listeners.js:324
+#: htdocs/luci-static/resources/view/fchomo/node.js:409
msgid "Obfuscated as low-entropy data stream"
msgstr "混淆為低熵資料流"
@@ -1898,7 +1938,7 @@ msgstr "0-63 範圍內的一個或多個數字,以逗號分隔"
msgid "Only process traffic from specific interfaces. Leave empty for all."
msgstr "只處理來自指定介面的流量。留空表示全部。"
-#: htdocs/luci-static/resources/fchomo.js:1134
+#: htdocs/luci-static/resources/fchomo.js:1140
msgid "Open Dashboard"
msgstr "打開面板"
@@ -1912,11 +1952,11 @@ msgid "Override destination"
msgstr "覆蓋目標位址"
#: htdocs/luci-static/resources/view/fchomo/client.js:1010
-#: htdocs/luci-static/resources/view/fchomo/node.js:1426
+#: htdocs/luci-static/resources/view/fchomo/node.js:1440
msgid "Override fields"
msgstr "覆蓋欄位"
-#: htdocs/luci-static/resources/view/fchomo/node.js:510
+#: htdocs/luci-static/resources/view/fchomo/node.js:519
msgid "Override the IP address of the server that DNS response."
msgstr "覆蓋 DNS 回應的伺服器的 IP 位址。"
@@ -1932,7 +1972,7 @@ msgstr "使用嗅探到的網域覆寫連線目標。"
msgid "Override the existing ECS in original request."
msgstr "覆蓋原始請求中已有的 ECS。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1069
+#: htdocs/luci-static/resources/view/fchomo/node.js:1083
msgid "Overrides the domain name used for HTTPS record queries."
msgstr "覆蓋用於 HTTPS 記錄查詢的網域。"
@@ -1940,11 +1980,11 @@ msgstr "覆蓋用於 HTTPS 記錄查詢的網域。"
msgid "Overview"
msgstr "概覽"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1150
+#: htdocs/luci-static/resources/view/fchomo/node.js:1164
msgid "POST"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1151
+#: htdocs/luci-static/resources/view/fchomo/node.js:1165
msgid "PUT"
msgstr ""
@@ -1952,31 +1992,31 @@ msgstr ""
msgid "Packet encoding"
msgstr "數據包編碼"
-#: htdocs/luci-static/resources/view/fchomo/server.js:507
+#: htdocs/luci-static/resources/fchomo/listeners.js:455
msgid "Padding scheme"
msgstr "填充方案"
-#: htdocs/luci-static/resources/view/fchomo/node.js:915
-#: htdocs/luci-static/resources/view/fchomo/server.js:655
+#: htdocs/luci-static/resources/fchomo/listeners.js:643
+#: htdocs/luci-static/resources/view/fchomo/node.js:926
msgid "Paddings"
msgstr "填充 (Paddings)"
+#: htdocs/luci-static/resources/fchomo/listeners.js:165
+#: htdocs/luci-static/resources/fchomo/listeners.js:221
+#: htdocs/luci-static/resources/fchomo/listeners.js:505
#: htdocs/luci-static/resources/view/fchomo/node.js:261
#: htdocs/luci-static/resources/view/fchomo/node.js:340
-#: htdocs/luci-static/resources/view/fchomo/node.js:824
-#: htdocs/luci-static/resources/view/fchomo/server.js:221
-#: htdocs/luci-static/resources/view/fchomo/server.js:277
-#: htdocs/luci-static/resources/view/fchomo/server.js:548
+#: htdocs/luci-static/resources/view/fchomo/node.js:827
msgid "Password"
msgstr "密碼"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1490
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:1504
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:357
-#: htdocs/luci-static/resources/view/fchomo/server.js:595
msgid "Payload"
msgstr "Payload"
-#: htdocs/luci-static/resources/view/fchomo/node.js:748
+#: htdocs/luci-static/resources/view/fchomo/node.js:751
msgid "Peer pubkic key"
msgstr "對端公鑰"
@@ -1986,11 +2026,11 @@ msgid ""
"it is not needed."
msgstr "效能可能會略有下降,建議僅在需要時開啟。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:775
+#: htdocs/luci-static/resources/view/fchomo/node.js:778
msgid "Periodically sends data packets to maintain connection persistence."
msgstr "定期發送資料包以維持連線持久性。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:774
+#: htdocs/luci-static/resources/view/fchomo/node.js:777
msgid "Persistent keepalive"
msgstr "持久連接"
@@ -2013,8 +2053,8 @@ msgid ""
"standards."
msgstr "連結格式標準請參考 %s。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1463
-#: htdocs/luci-static/resources/view/fchomo/node.js:1489
+#: htdocs/luci-static/resources/view/fchomo/node.js:1477
+#: htdocs/luci-static/resources/view/fchomo/node.js:1503
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:330
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:356
msgid ""
@@ -2029,25 +2069,25 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/client.js:1445
#: htdocs/luci-static/resources/view/fchomo/client.js:1697
#: htdocs/luci-static/resources/view/fchomo/client.js:1749
-#: htdocs/luci-static/resources/view/fchomo/node.js:1333
+#: htdocs/luci-static/resources/view/fchomo/node.js:1347
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:144
msgid "Please type %s fields of mihomo config."
msgstr "請輸入 mihomo 配置的 %s 欄位。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:798
-#: htdocs/luci-static/resources/view/fchomo/server.js:534
+#: htdocs/luci-static/resources/fchomo/listeners.js:491
+#: htdocs/luci-static/resources/view/fchomo/node.js:801
msgid "Plugin"
msgstr "插件"
-#: htdocs/luci-static/resources/view/fchomo/node.js:809
-#: htdocs/luci-static/resources/view/fchomo/node.js:816
-#: htdocs/luci-static/resources/view/fchomo/node.js:824
-#: htdocs/luci-static/resources/view/fchomo/node.js:830
-#: htdocs/luci-static/resources/view/fchomo/node.js:838
-#: htdocs/luci-static/resources/view/fchomo/node.js:844
-#: htdocs/luci-static/resources/view/fchomo/server.js:541
-#: htdocs/luci-static/resources/view/fchomo/server.js:548
-#: htdocs/luci-static/resources/view/fchomo/server.js:554
+#: htdocs/luci-static/resources/fchomo/listeners.js:498
+#: htdocs/luci-static/resources/fchomo/listeners.js:505
+#: htdocs/luci-static/resources/fchomo/listeners.js:511
+#: htdocs/luci-static/resources/view/fchomo/node.js:812
+#: htdocs/luci-static/resources/view/fchomo/node.js:819
+#: htdocs/luci-static/resources/view/fchomo/node.js:827
+#: htdocs/luci-static/resources/view/fchomo/node.js:833
+#: htdocs/luci-static/resources/view/fchomo/node.js:841
+#: htdocs/luci-static/resources/view/fchomo/node.js:847
msgid "Plugin:"
msgstr "插件:"
@@ -2055,7 +2095,7 @@ msgstr "插件:"
msgid "Port"
msgstr "連接埠"
-#: htdocs/luci-static/resources/fchomo.js:1371
+#: htdocs/luci-static/resources/fchomo.js:1377
msgid "Port %s alrealy exists!"
msgstr "連接埠 %s 已存在!"
@@ -2071,21 +2111,21 @@ msgstr "連接埠範圍"
msgid "Ports"
msgstr "連接埠"
+#: htdocs/luci-static/resources/fchomo/listeners.js:152
#: htdocs/luci-static/resources/view/fchomo/node.js:274
-#: htdocs/luci-static/resources/view/fchomo/server.js:204
msgid "Ports pool"
msgstr "連接埠池"
-#: htdocs/luci-static/resources/view/fchomo/node.js:487
-#: htdocs/luci-static/resources/view/fchomo/node.js:755
+#: htdocs/luci-static/resources/view/fchomo/node.js:496
+#: htdocs/luci-static/resources/view/fchomo/node.js:758
msgid "Pre-shared key"
msgstr "預先共用金鑰"
-#: htdocs/luci-static/resources/fchomo.js:159
+#: htdocs/luci-static/resources/fchomo.js:164
msgid "Prefer IPv4"
msgstr "優先 IPv4"
-#: htdocs/luci-static/resources/fchomo.js:160
+#: htdocs/luci-static/resources/fchomo.js:165
msgid "Prefer IPv6"
msgstr "優先 IPv6"
@@ -2096,10 +2136,10 @@ msgstr "防止某些情況下的 ICMP 環回問題。 Ping 不會顯示實際延
#: htdocs/luci-static/resources/view/fchomo/global.js:736
#: htdocs/luci-static/resources/view/fchomo/global.js:753
-#: htdocs/luci-static/resources/view/fchomo/node.js:1297
-#: htdocs/luci-static/resources/view/fchomo/node.js:1303
-#: htdocs/luci-static/resources/view/fchomo/node.js:1610
-#: htdocs/luci-static/resources/view/fchomo/node.js:1617
+#: htdocs/luci-static/resources/view/fchomo/node.js:1311
+#: htdocs/luci-static/resources/view/fchomo/node.js:1317
+#: htdocs/luci-static/resources/view/fchomo/node.js:1624
+#: htdocs/luci-static/resources/view/fchomo/node.js:1631
msgid "Priority: Proxy Node > Global."
msgstr "優先權: 代理節點 > 全域。"
@@ -2112,7 +2152,7 @@ msgid "Priv-key passphrase"
msgstr "金鑰密碼"
#: htdocs/luci-static/resources/view/fchomo/node.js:671
-#: htdocs/luci-static/resources/view/fchomo/node.js:740
+#: htdocs/luci-static/resources/view/fchomo/node.js:743
msgid "Private key"
msgstr "私鑰"
@@ -2121,7 +2161,7 @@ msgid "Process matching mode"
msgstr "進程匹配模式"
#: htdocs/luci-static/resources/view/fchomo/global.js:684
-#: htdocs/luci-static/resources/view/fchomo/node.js:1215
+#: htdocs/luci-static/resources/view/fchomo/node.js:1229
msgid "Protocol"
msgstr "協議"
@@ -2136,13 +2176,13 @@ msgid ""
msgstr "協議參數。 如啟用會隨機浪費流量(在 v2ray 中預設為啟用且無法停用)。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1055
-#: htdocs/luci-static/resources/view/fchomo/node.js:1316
-#: htdocs/luci-static/resources/view/fchomo/node.js:1325
-#: htdocs/luci-static/resources/view/fchomo/node.js:1726
+#: htdocs/luci-static/resources/view/fchomo/node.js:1330
+#: htdocs/luci-static/resources/view/fchomo/node.js:1339
+#: htdocs/luci-static/resources/view/fchomo/node.js:1740
msgid "Provider"
msgstr "供應商"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1496
+#: htdocs/luci-static/resources/view/fchomo/node.js:1510
msgid "Provider URL"
msgstr "供應商訂閱 URL"
@@ -2165,18 +2205,19 @@ msgid "Proxy MAC-s"
msgstr "代理 MAC 位址"
#: htdocs/luci-static/resources/view/fchomo/node.js:208
-#: htdocs/luci-static/resources/view/fchomo/node.js:1725
+#: htdocs/luci-static/resources/view/fchomo/node.js:1739
msgid "Proxy Node"
msgstr "代理節點"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1701
-#: htdocs/luci-static/resources/view/fchomo/node.js:1710
+#: htdocs/luci-static/resources/view/fchomo/node.js:1715
+#: htdocs/luci-static/resources/view/fchomo/node.js:1724
msgid "Proxy chain"
msgstr "代理鏈"
+#: htdocs/luci-static/resources/fchomo/listeners.js:527
#: htdocs/luci-static/resources/view/fchomo/client.js:783
#: htdocs/luci-static/resources/view/fchomo/client.js:1543
-#: htdocs/luci-static/resources/view/fchomo/node.js:1514
+#: htdocs/luci-static/resources/view/fchomo/node.js:1528
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:381
msgid "Proxy group"
msgstr "代理組"
@@ -2194,57 +2235,53 @@ msgid "Proxy routerself"
msgstr "代理路由器自身"
#: htdocs/luci-static/resources/view/fchomo/node.js:528
+#: htdocs/luci-static/resources/view/fchomo/node.js:723
msgid "QUIC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:516
-#: htdocs/luci-static/resources/view/fchomo/server.js:455
-msgid "QUIC congestion controller."
-msgstr "QUIC 壅塞控制器。"
-
#: htdocs/luci-static/resources/view/fchomo/client.js:926
-#: htdocs/luci-static/resources/view/fchomo/server.js:152
+#: htdocs/luci-static/resources/view/fchomo/server.js:44
msgid "Quick Reload"
msgstr "快速重載"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1083
-#: htdocs/luci-static/resources/view/fchomo/server.js:919
+#: htdocs/luci-static/resources/fchomo/listeners.js:913
+#: htdocs/luci-static/resources/view/fchomo/node.js:1097
msgid "REALITY"
msgstr "REALITY"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1098
+#: htdocs/luci-static/resources/view/fchomo/node.js:1112
msgid "REALITY X25519MLKEM768 PQC support"
msgstr "REALITY X25519MLKEM768 後量子加密支援"
-#: htdocs/luci-static/resources/view/fchomo/server.js:956
+#: htdocs/luci-static/resources/fchomo/listeners.js:950
msgid "REALITY certificate issued to"
msgstr "REALITY 證書頒發給"
-#: htdocs/luci-static/resources/view/fchomo/server.js:924
+#: htdocs/luci-static/resources/fchomo/listeners.js:918
msgid "REALITY handshake server"
msgstr "REALITY 握手伺服器"
-#: htdocs/luci-static/resources/view/fchomo/server.js:931
+#: htdocs/luci-static/resources/fchomo/listeners.js:925
msgid "REALITY private key"
msgstr "REALITY 私鑰"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1088
-#: htdocs/luci-static/resources/view/fchomo/server.js:946
+#: htdocs/luci-static/resources/fchomo/listeners.js:940
+#: htdocs/luci-static/resources/view/fchomo/node.js:1102
msgid "REALITY public key"
msgstr "REALITY 公鑰"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1093
-#: htdocs/luci-static/resources/view/fchomo/server.js:950
+#: htdocs/luci-static/resources/fchomo/listeners.js:944
+#: htdocs/luci-static/resources/view/fchomo/node.js:1107
msgid "REALITY short ID"
msgstr "REALITY 標識符"
-#: htdocs/luci-static/resources/view/fchomo/node.js:905
-#: htdocs/luci-static/resources/view/fchomo/server.js:626
-#: htdocs/luci-static/resources/view/fchomo/server.js:645
+#: htdocs/luci-static/resources/fchomo/listeners.js:614
+#: htdocs/luci-static/resources/fchomo/listeners.js:633
+#: htdocs/luci-static/resources/view/fchomo/node.js:916
msgid "RTT"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:357
+#: htdocs/luci-static/resources/fchomo.js:363
msgid "Random"
msgstr "隨機"
@@ -2252,7 +2289,7 @@ msgstr "隨機"
msgid "Random will be used if empty."
msgstr "留空將使用隨機令牌。"
-#: htdocs/luci-static/resources/fchomo.js:367
+#: htdocs/luci-static/resources/fchomo.js:373
msgid "Randomized traffic characteristics"
msgstr "隨機化流量特徵"
@@ -2276,10 +2313,10 @@ msgstr "Redirect TCP + Tun UDP"
msgid "Refresh every %s seconds."
msgstr "每 %s 秒刷新。"
-#: htdocs/luci-static/resources/fchomo.js:1127
+#: htdocs/luci-static/resources/fchomo.js:1133
#: htdocs/luci-static/resources/view/fchomo/client.js:927
#: htdocs/luci-static/resources/view/fchomo/global.js:193
-#: htdocs/luci-static/resources/view/fchomo/server.js:153
+#: htdocs/luci-static/resources/view/fchomo/server.js:45
msgid "Reload"
msgstr "重載"
@@ -2287,43 +2324,43 @@ msgstr "重載"
msgid "Reload All"
msgstr "重載所有"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1441
+#: htdocs/luci-static/resources/view/fchomo/node.js:1455
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:271
msgid "Remote"
msgstr "遠端"
#: htdocs/luci-static/resources/view/fchomo/node.js:706
-#: htdocs/luci-static/resources/view/fchomo/node.js:786
+#: htdocs/luci-static/resources/view/fchomo/node.js:789
msgid "Remote DNS resolve"
msgstr "遠端 DNS 解析"
-#: htdocs/luci-static/resources/fchomo.js:1292
+#: htdocs/luci-static/resources/fchomo.js:1298
msgid "Remove"
msgstr "移除"
-#: htdocs/luci-static/resources/fchomo.js:1297
-#: htdocs/luci-static/resources/view/fchomo/node.js:1417
-#: htdocs/luci-static/resources/view/fchomo/node.js:1419
+#: htdocs/luci-static/resources/fchomo.js:1303
+#: htdocs/luci-static/resources/view/fchomo/node.js:1431
+#: htdocs/luci-static/resources/view/fchomo/node.js:1433
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:244
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:246
msgid "Remove idles"
msgstr "移除閒置"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1543
+#: htdocs/luci-static/resources/view/fchomo/node.js:1557
msgid "Replace name"
msgstr "名稱替換"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1544
+#: htdocs/luci-static/resources/view/fchomo/node.js:1558
msgid "Replace node name."
msgstr "替換節點名稱"
-#: htdocs/luci-static/resources/fchomo.js:341
+#: htdocs/luci-static/resources/fchomo.js:347
msgid "Request"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1157
-#: htdocs/luci-static/resources/view/fchomo/node.js:1164
-#: htdocs/luci-static/resources/view/fchomo/server.js:998
+#: htdocs/luci-static/resources/fchomo/listeners.js:992
+#: htdocs/luci-static/resources/view/fchomo/node.js:1171
+#: htdocs/luci-static/resources/view/fchomo/node.js:1178
msgid "Request path"
msgstr "請求路徑"
@@ -2331,20 +2368,20 @@ msgstr "請求路徑"
msgid "Request timeout"
msgstr "請求逾時"
-#: htdocs/luci-static/resources/fchomo.js:344
+#: htdocs/luci-static/resources/fchomo.js:350
msgid "Require and verify"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:342
+#: htdocs/luci-static/resources/fchomo.js:348
msgid "Require any"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:375
-#: htdocs/luci-static/resources/view/fchomo/node.js:1099
+#: htdocs/luci-static/resources/fchomo.js:381
+#: htdocs/luci-static/resources/view/fchomo/node.js:1113
msgid "Requires server support."
msgstr "需要伺服器支援。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:769
+#: htdocs/luci-static/resources/view/fchomo/node.js:772
msgid "Reserved field bytes"
msgstr "保留字段位元組"
@@ -2352,7 +2389,7 @@ msgstr "保留字段位元組"
msgid "Resources management"
msgstr "資源管理"
-#: htdocs/luci-static/resources/view/fchomo/node.js:844
+#: htdocs/luci-static/resources/view/fchomo/node.js:847
msgid "Restls script"
msgstr "Restls 劇本"
@@ -2366,12 +2403,12 @@ msgid ""
"Returns the string input for icon in the API to display in this proxy group."
msgstr "在 API 傳回 icon 所輸入的字串,以在該代理組顯示。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:473
+#: htdocs/luci-static/resources/view/fchomo/node.js:480
msgid "Reuse HTTP connections to reduce RTT for each connection establishment."
msgstr "重用 HTTP 連接以減少每次建立連接的 RTT。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:470
-#: htdocs/luci-static/resources/view/fchomo/node.js:474
+#: htdocs/luci-static/resources/view/fchomo/node.js:477
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
msgid "Reusing a single tunnel to carry multiple target connections within it."
msgstr "複用單條隧道使其內部承載多條目標連線。"
@@ -2388,8 +2425,8 @@ msgstr "路由 DSCP"
msgid "Routing GFW"
msgstr "路由 GFW 流量"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1302
-#: htdocs/luci-static/resources/view/fchomo/node.js:1616
+#: htdocs/luci-static/resources/view/fchomo/node.js:1316
+#: htdocs/luci-static/resources/view/fchomo/node.js:1630
msgid "Routing mark"
msgstr "路由標記"
@@ -2441,7 +2478,7 @@ msgstr "規則集"
msgid "Rule set URL"
msgstr "規則集訂閱 URL"
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:46
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:54
msgid "Ruleset"
msgstr "規則集"
@@ -2449,27 +2486,27 @@ msgstr "規則集"
msgid "Ruleset-URI-Scheme"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1140
+#: htdocs/luci-static/resources/fchomo.js:1146
msgid "Running"
msgstr "正在運作"
-#: htdocs/luci-static/resources/fchomo.js:223
+#: htdocs/luci-static/resources/fchomo.js:229
msgid "SMTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:140
+#: htdocs/luci-static/resources/fchomo.js:144
msgid "SOCKS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:172
+#: htdocs/luci-static/resources/fchomo.js:177
msgid "SOCKS5"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:193
msgid "SSH"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:224
+#: htdocs/luci-static/resources/fchomo.js:230
msgid "STUN"
msgstr ""
@@ -2477,20 +2514,20 @@ msgstr ""
msgid "SUB-RULE"
msgstr "SUB-RULE"
-#: htdocs/luci-static/resources/view/fchomo/node.js:862
+#: htdocs/luci-static/resources/view/fchomo/node.js:873
msgid "SUoT version"
msgstr "SUoT 版本"
+#: htdocs/luci-static/resources/fchomo/listeners.js:194
#: htdocs/luci-static/resources/view/fchomo/node.js:299
-#: htdocs/luci-static/resources/view/fchomo/server.js:250
msgid "Salamander"
msgstr "Salamander"
-#: htdocs/luci-static/resources/fchomo.js:165
+#: htdocs/luci-static/resources/fchomo.js:170
msgid "Same dstaddr requests. Same node"
msgstr "相同 目標位址 請求。相同節點"
-#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:171
msgid "Same srcaddr and dstaddr requests. Same node"
msgstr "相同 來源位址 和 目標位址 請求。相同節點"
@@ -2498,7 +2535,7 @@ msgstr "相同 來源位址 和 目標位址 請求。相同節點"
msgid "Segment maximum size"
msgstr "分段最大尺寸"
-#: htdocs/luci-static/resources/fchomo.js:212
+#: htdocs/luci-static/resources/fchomo.js:218
msgid "Select"
msgstr "手動選擇"
@@ -2506,20 +2543,20 @@ msgstr "手動選擇"
msgid "Select Dashboard"
msgstr "選擇面板"
-#: htdocs/luci-static/resources/fchomo.js:381
+#: htdocs/luci-static/resources/fchomo.js:387
msgid "Send padding randomly 0-3333 bytes with 50% probability."
msgstr "以 50% 的機率發送隨機 0 到 3333 位元組的填充。"
-#: htdocs/luci-static/resources/fchomo.js:370
-#: htdocs/luci-static/resources/fchomo.js:371
+#: htdocs/luci-static/resources/fchomo.js:376
+#: htdocs/luci-static/resources/fchomo.js:377
msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse."
msgstr "發送 300-600 秒的隨機票證,以供客戶端 0-RTT 重用。"
-#: htdocs/luci-static/resources/view/fchomo/server.js:166
-#: htdocs/luci-static/resources/view/fchomo/server.js:626
-#: htdocs/luci-static/resources/view/fchomo/server.js:817
-#: htdocs/luci-static/resources/view/fchomo/server.js:832
-#: root/usr/share/luci/menu.d/luci-app-fchomo.json:54
+#: htdocs/luci-static/resources/fchomo/listeners.js:614
+#: htdocs/luci-static/resources/fchomo/listeners.js:811
+#: htdocs/luci-static/resources/fchomo/listeners.js:826
+#: htdocs/luci-static/resources/view/fchomo/server.js:58
+#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
msgid "Server"
msgstr "服務端"
@@ -2527,7 +2564,7 @@ msgstr "服務端"
msgid "Server address"
msgstr "伺服器位址"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1142
+#: htdocs/luci-static/resources/view/fchomo/node.js:1156
msgid "Server hostname"
msgstr "伺服器主機名稱"
@@ -2539,27 +2576,27 @@ msgstr "服務端狀態"
msgid "Service status"
msgstr "服務狀態"
-#: htdocs/luci-static/resources/fchomo.js:142
-#: htdocs/luci-static/resources/fchomo.js:173
+#: htdocs/luci-static/resources/fchomo.js:146
+#: htdocs/luci-static/resources/fchomo.js:178
msgid "Shadowsocks"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:437
#: htdocs/luci-static/resources/view/fchomo/node.js:582
-#: htdocs/luci-static/resources/view/fchomo/server.js:489
msgid "Shadowsocks chipher"
msgstr "Shadowsocks 加密方法"
+#: htdocs/luci-static/resources/fchomo/listeners.js:432
#: htdocs/luci-static/resources/view/fchomo/node.js:577
-#: htdocs/luci-static/resources/view/fchomo/server.js:484
msgid "Shadowsocks encrypt"
msgstr "Shadowsocks 加密"
+#: htdocs/luci-static/resources/fchomo/listeners.js:445
#: htdocs/luci-static/resources/view/fchomo/node.js:590
-#: htdocs/luci-static/resources/view/fchomo/server.js:497
msgid "Shadowsocks password"
msgstr "Shadowsocks 密碼"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1257
+#: htdocs/luci-static/resources/view/fchomo/node.js:1271
msgid "Show connections in the dashboard for breaking connections easier."
msgstr "在面板中顯示連線以便於打斷連線。"
@@ -2567,18 +2604,18 @@ msgstr "在面板中顯示連線以便於打斷連線。"
msgid "Silent"
msgstr "靜音"
-#: htdocs/luci-static/resources/fchomo.js:164
+#: htdocs/luci-static/resources/fchomo.js:169
msgid "Simple round-robin all nodes"
msgstr "簡單輪替所有節點"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1502
+#: htdocs/luci-static/resources/view/fchomo/node.js:1516
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:369
msgid "Size limit"
msgstr "大小限制"
#: htdocs/luci-static/resources/view/fchomo/client.js:1576
-#: htdocs/luci-static/resources/view/fchomo/node.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1594
+#: htdocs/luci-static/resources/view/fchomo/node.js:1034
+#: htdocs/luci-static/resources/view/fchomo/node.js:1608
msgid "Skip cert verify"
msgstr "跳過憑證驗證"
@@ -2594,7 +2631,7 @@ msgstr "跳過嗅探目標位址"
msgid "Skiped sniffing src address"
msgstr "跳過嗅探來源位址"
-#: htdocs/luci-static/resources/fchomo.js:177
+#: htdocs/luci-static/resources/fchomo.js:182
msgid "Snell"
msgstr ""
@@ -2610,7 +2647,7 @@ msgstr "嗅探器"
msgid "Sniffer settings"
msgstr "嗅探器設定"
-#: htdocs/luci-static/resources/fchomo.js:413
+#: htdocs/luci-static/resources/fchomo.js:419
msgid "Specify a ID"
msgstr "指定一個ID"
@@ -2625,11 +2662,11 @@ msgstr "指定需要被代理的目標連接埠。多個連接埠必須以逗號
msgid "Stack"
msgstr "堆栈"
-#: htdocs/luci-static/resources/fchomo.js:227
+#: htdocs/luci-static/resources/fchomo.js:233
msgid "Steam Client"
msgstr "Steam 客戶端"
-#: htdocs/luci-static/resources/fchomo.js:228
+#: htdocs/luci-static/resources/fchomo.js:234
msgid "Steam P2P"
msgstr ""
@@ -2638,6 +2675,7 @@ msgstr ""
msgid "Strategy"
msgstr "策略"
+#: htdocs/luci-static/resources/fchomo/listeners.js:521
#: htdocs/luci-static/resources/view/fchomo/client.js:1303
#: htdocs/luci-static/resources/view/fchomo/client.js:1312
msgid "Sub rule"
@@ -2647,7 +2685,7 @@ msgstr "子規則"
msgid "Sub rule group"
msgstr "子規則組"
-#: htdocs/luci-static/resources/fchomo.js:673
+#: htdocs/luci-static/resources/fchomo.js:679
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:215
msgid "Successfully imported %s %s of total %s."
msgstr "已成功匯入 %s 個%s (共 %s 個)。"
@@ -2656,12 +2694,12 @@ msgstr "已成功匯入 %s 個%s (共 %s 個)。"
msgid "Successfully updated."
msgstr "更新成功。"
-#: htdocs/luci-static/resources/fchomo.js:1642
+#: htdocs/luci-static/resources/fchomo.js:1648
msgid "Successfully uploaded."
msgstr "已成功上傳。"
-#: htdocs/luci-static/resources/fchomo.js:144
-#: htdocs/luci-static/resources/fchomo.js:176
+#: htdocs/luci-static/resources/fchomo.js:148
+#: htdocs/luci-static/resources/fchomo.js:181
msgid "Sudoku"
msgstr ""
@@ -2681,20 +2719,21 @@ msgstr "系統"
msgid "System DNS"
msgstr "系統 DNS"
-#: htdocs/luci-static/resources/fchomo.js:139
-#: htdocs/luci-static/resources/fchomo.js:144
-#: htdocs/luci-static/resources/fchomo.js:145
-#: htdocs/luci-static/resources/fchomo.js:146
-#: htdocs/luci-static/resources/fchomo.js:147
+#: htdocs/luci-static/resources/fchomo.js:143
#: htdocs/luci-static/resources/fchomo.js:148
-#: htdocs/luci-static/resources/fchomo.js:171
+#: htdocs/luci-static/resources/fchomo.js:149
+#: htdocs/luci-static/resources/fchomo.js:150
+#: htdocs/luci-static/resources/fchomo.js:151
+#: htdocs/luci-static/resources/fchomo.js:152
#: htdocs/luci-static/resources/fchomo.js:176
-#: htdocs/luci-static/resources/fchomo.js:177
-#: htdocs/luci-static/resources/fchomo.js:178
-#: htdocs/luci-static/resources/fchomo.js:179
-#: htdocs/luci-static/resources/fchomo.js:180
#: htdocs/luci-static/resources/fchomo.js:181
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:182
+#: htdocs/luci-static/resources/fchomo.js:183
+#: htdocs/luci-static/resources/fchomo.js:184
+#: htdocs/luci-static/resources/fchomo.js:185
+#: htdocs/luci-static/resources/fchomo.js:186
+#: htdocs/luci-static/resources/fchomo.js:193
+#: htdocs/luci-static/resources/fchomo/listeners.js:546
#: htdocs/luci-static/resources/view/fchomo/client.js:589
#: htdocs/luci-static/resources/view/fchomo/client.js:679
msgid "TCP"
@@ -2704,7 +2743,7 @@ msgstr "TCP"
msgid "TCP concurrency"
msgstr "TCP 併發"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1250
+#: htdocs/luci-static/resources/view/fchomo/node.js:1264
msgid "TCP only"
msgstr "僅 TCP"
@@ -2716,54 +2755,61 @@ msgstr "TCP-Keep-Alive 閒置逾時"
msgid "TCP-Keep-Alive interval"
msgstr "TCP-Keep-Alive 間隔"
-#: htdocs/luci-static/resources/fchomo.js:140
-#: htdocs/luci-static/resources/fchomo.js:141
-#: htdocs/luci-static/resources/fchomo.js:142
-#: htdocs/luci-static/resources/fchomo.js:143
-#: htdocs/luci-static/resources/fchomo.js:170
-#: htdocs/luci-static/resources/fchomo.js:172
-#: htdocs/luci-static/resources/fchomo.js:173
+#: htdocs/luci-static/resources/fchomo.js:144
+#: htdocs/luci-static/resources/fchomo.js:145
+#: htdocs/luci-static/resources/fchomo.js:146
+#: htdocs/luci-static/resources/fchomo.js:147
+#: htdocs/luci-static/resources/fchomo.js:155
+#: htdocs/luci-static/resources/fchomo.js:156
#: htdocs/luci-static/resources/fchomo.js:175
+#: htdocs/luci-static/resources/fchomo.js:177
+#: htdocs/luci-static/resources/fchomo.js:178
+#: htdocs/luci-static/resources/fchomo.js:180
+#: htdocs/luci-static/resources/fchomo.js:191
msgid "TCP/UDP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1281
-#: htdocs/luci-static/resources/view/fchomo/node.js:1561
+#: htdocs/luci-static/resources/view/fchomo/node.js:1295
+#: htdocs/luci-static/resources/view/fchomo/node.js:1575
msgid "TFO"
msgstr "TCP 快速開啟 (TFO)"
+#: htdocs/luci-static/resources/fchomo/listeners.js:768
#: htdocs/luci-static/resources/view/fchomo/global.js:529
-#: htdocs/luci-static/resources/view/fchomo/node.js:454
-#: htdocs/luci-static/resources/view/fchomo/node.js:811
-#: htdocs/luci-static/resources/view/fchomo/node.js:937
-#: htdocs/luci-static/resources/view/fchomo/server.js:780
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
+#: htdocs/luci-static/resources/view/fchomo/node.js:814
+#: htdocs/luci-static/resources/view/fchomo/node.js:948
msgid "TLS"
msgstr "TLS"
-#: htdocs/luci-static/resources/view/fchomo/node.js:968
-#: htdocs/luci-static/resources/view/fchomo/server.js:811
+#: htdocs/luci-static/resources/fchomo/listeners.js:805
+#: htdocs/luci-static/resources/view/fchomo/node.js:979
msgid "TLS ALPN"
msgstr "TLS ALPN"
-#: htdocs/luci-static/resources/view/fchomo/node.js:962
+#: htdocs/luci-static/resources/view/fchomo/node.js:973
msgid "TLS SNI"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:121
#: htdocs/luci-static/resources/view/fchomo/node.js:224
-#: htdocs/luci-static/resources/view/fchomo/server.js:173
msgid "TLS fields"
msgstr "TLS欄位"
-#: htdocs/luci-static/resources/fchomo.js:149
-#: htdocs/luci-static/resources/fchomo.js:184
+#: htdocs/luci-static/resources/fchomo.js:153
+#: htdocs/luci-static/resources/fchomo.js:189
msgid "TUIC"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:225
+#: htdocs/luci-static/resources/fchomo.js:231
msgid "TURN"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:243
+#: htdocs/luci-static/resources/fchomo/listeners.js:484
+msgid "Target address"
+msgstr "目標位址"
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:187
msgid ""
"Tell the client to use the BBR flow control algorithm instead of Hysteria CC."
msgstr "讓客戶端使用 BBR 流控演算法。"
@@ -2773,34 +2819,34 @@ msgstr "讓客戶端使用 BBR 流控演算法。"
msgid "The %s address used by local machine in the Cloudflare WARP network."
msgstr "Cloudflare WARP 網路中使用的本機 %s 位址。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:727
-#: htdocs/luci-static/resources/view/fchomo/node.js:735
+#: htdocs/luci-static/resources/view/fchomo/node.js:730
+#: htdocs/luci-static/resources/view/fchomo/node.js:738
msgid "The %s address used by local machine in the Wireguard network."
msgstr "WireGuard 網路中使用的本機 %s 位址。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1043
-#: htdocs/luci-static/resources/view/fchomo/server.js:832
+#: htdocs/luci-static/resources/fchomo/listeners.js:826
+#: htdocs/luci-static/resources/view/fchomo/node.js:1057
msgid "The %s private key, in PEM format."
msgstr "%s私鑰,需要 PEM 格式。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:811
+#: htdocs/luci-static/resources/fchomo/listeners.js:849
#: htdocs/luci-static/resources/view/fchomo/global.js:550
-#: htdocs/luci-static/resources/view/fchomo/node.js:1029
-#: htdocs/luci-static/resources/view/fchomo/server.js:817
-#: htdocs/luci-static/resources/view/fchomo/server.js:855
+#: htdocs/luci-static/resources/view/fchomo/node.js:1043
msgid "The %s public key, in PEM format."
msgstr "%s公鑰,需要 PEM 格式。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1063
+#: htdocs/luci-static/resources/view/fchomo/node.js:1077
msgid ""
"The ECH parameter of the HTTPS record for the domain. Leave empty to resolve "
"via DNS."
msgstr "網域的 HTTPS 記錄的 ECH 參數。留空則透過 DNS 解析。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:380
+#: htdocs/luci-static/resources/view/fchomo/node.js:386
msgid "The ED25519 available private key or UUID provided by Sudoku server."
msgstr "Sudoku 伺服器提供的 ED25519 可用私鑰 或 UUID。"
-#: htdocs/luci-static/resources/view/fchomo/server.js:300
+#: htdocs/luci-static/resources/fchomo/listeners.js:250
msgid "The ED25519 master public key or UUID generated by Sudoku."
msgstr "Sudoku 產生的 ED25519 主公鑰 或 UUID。"
@@ -2808,8 +2854,8 @@ msgstr "Sudoku 產生的 ED25519 主公鑰 或 UUID。"
msgid "The default value is 2:00 every day."
msgstr "預設值為每天 2:00。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:918
-#: htdocs/luci-static/resources/view/fchomo/server.js:658
+#: htdocs/luci-static/resources/fchomo/listeners.js:646
+#: htdocs/luci-static/resources/view/fchomo/node.js:929
msgid ""
"The first padding must have a probability of 100% and at least 35 bytes."
msgstr "首個填充必須為 100% 的機率並且至少 35 位元組。"
@@ -2824,19 +2870,19 @@ msgstr "匹配 %s 的將被視為未被投毒汙染。"
msgid "The matching %s will be deemed as poisoned."
msgstr "匹配 %s 的將被視為已被投毒汙染。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:916
-#: htdocs/luci-static/resources/view/fchomo/server.js:656
+#: htdocs/luci-static/resources/fchomo/listeners.js:644
+#: htdocs/luci-static/resources/view/fchomo/node.js:927
msgid "The server and client can set different padding parameters."
msgstr "伺服器和客戶端可以設定不同的填充參數。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:907
#: htdocs/luci-static/resources/view/fchomo/global.js:594
-#: htdocs/luci-static/resources/view/fchomo/server.js:913
msgid "This ECH parameter needs to be added to the HTTPS record of the domain."
msgstr "此 ECH 參數需要加入到網域的 HTTPS 記錄中。"
#: htdocs/luci-static/resources/view/fchomo/client.js:1579
-#: htdocs/luci-static/resources/view/fchomo/node.js:1023
-#: htdocs/luci-static/resources/view/fchomo/node.js:1597
+#: htdocs/luci-static/resources/view/fchomo/node.js:1037
+#: htdocs/luci-static/resources/view/fchomo/node.js:1611
msgid ""
"This is DANGEROUS, your traffic is almost like "
"PLAIN TEXT! Use at your own risk!"
@@ -2875,28 +2921,33 @@ msgstr "Tproxy Fwmark/fwmask"
msgid "Tproxy port"
msgstr "Tproxy 連接埠"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1753
+#: htdocs/luci-static/resources/fchomo/listeners.js:238
+#: htdocs/luci-static/resources/view/fchomo/node.js:378
+msgid "Traffic pattern"
+msgstr "流量模式"
+
+#: htdocs/luci-static/resources/view/fchomo/node.js:1767
msgid "Transit proxy group"
msgstr "中轉代理組"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1759
+#: htdocs/luci-static/resources/view/fchomo/node.js:1773
msgid "Transit proxy node"
msgstr "中轉代理節點"
+#: htdocs/luci-static/resources/fchomo/listeners.js:231
+#: htdocs/luci-static/resources/fchomo/listeners.js:958
#: htdocs/luci-static/resources/view/fchomo/node.js:355
-#: htdocs/luci-static/resources/view/fchomo/node.js:1105
-#: htdocs/luci-static/resources/view/fchomo/server.js:287
-#: htdocs/luci-static/resources/view/fchomo/server.js:964
+#: htdocs/luci-static/resources/view/fchomo/node.js:1119
msgid "Transport"
msgstr "傳輸層"
+#: htdocs/luci-static/resources/fchomo/listeners.js:122
#: htdocs/luci-static/resources/view/fchomo/node.js:225
-#: htdocs/luci-static/resources/view/fchomo/server.js:174
msgid "Transport fields"
msgstr "傳輸層欄位"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1110
-#: htdocs/luci-static/resources/view/fchomo/server.js:969
+#: htdocs/luci-static/resources/fchomo/listeners.js:963
+#: htdocs/luci-static/resources/view/fchomo/node.js:1124
msgid "Transport type"
msgstr "傳輸層類型"
@@ -2904,11 +2955,16 @@ msgstr "傳輸層類型"
msgid "Treat the destination IP as the source IP."
msgstr "將 目標 IP 視為 來源 IP。"
-#: htdocs/luci-static/resources/fchomo.js:147
-#: htdocs/luci-static/resources/fchomo.js:180
+#: htdocs/luci-static/resources/fchomo.js:151
+#: htdocs/luci-static/resources/fchomo.js:185
msgid "Trojan"
msgstr ""
+#: htdocs/luci-static/resources/fchomo.js:155
+#: htdocs/luci-static/resources/fchomo.js:191
+msgid "TrustTunnel"
+msgstr ""
+
#: htdocs/luci-static/resources/view/fchomo/global.js:764
msgid "Tun Fwmark/fwmask"
msgstr "Tun Fwmark/fwmask"
@@ -2925,30 +2981,35 @@ msgstr "Tun 設定"
msgid "Tun stack."
msgstr "Tun 堆栈"
+#: htdocs/luci-static/resources/fchomo.js:156
+msgid "Tunnel"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:141
#: htdocs/luci-static/resources/view/fchomo/client.js:530
#: htdocs/luci-static/resources/view/fchomo/client.js:643
#: htdocs/luci-static/resources/view/fchomo/client.js:737
#: htdocs/luci-static/resources/view/fchomo/client.js:842
#: htdocs/luci-static/resources/view/fchomo/client.js:1028
#: htdocs/luci-static/resources/view/fchomo/node.js:238
-#: htdocs/luci-static/resources/view/fchomo/node.js:1439
-#: htdocs/luci-static/resources/view/fchomo/node.js:1724
+#: htdocs/luci-static/resources/view/fchomo/node.js:1453
+#: htdocs/luci-static/resources/view/fchomo/node.js:1738
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:269
-#: htdocs/luci-static/resources/view/fchomo/server.js:193
msgid "Type"
msgstr "類型"
-#: htdocs/luci-static/resources/fchomo.js:149
-#: htdocs/luci-static/resources/fchomo.js:150
-#: htdocs/luci-static/resources/fchomo.js:183
-#: htdocs/luci-static/resources/fchomo.js:184
-#: htdocs/luci-static/resources/fchomo.js:185
-#: htdocs/luci-static/resources/fchomo.js:186
+#: htdocs/luci-static/resources/fchomo.js:153
+#: htdocs/luci-static/resources/fchomo.js:154
+#: htdocs/luci-static/resources/fchomo.js:188
+#: htdocs/luci-static/resources/fchomo.js:189
+#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo.js:192
+#: htdocs/luci-static/resources/fchomo/listeners.js:547
+#: htdocs/luci-static/resources/fchomo/listeners.js:551
#: htdocs/luci-static/resources/view/fchomo/client.js:588
#: htdocs/luci-static/resources/view/fchomo/client.js:678
-#: htdocs/luci-static/resources/view/fchomo/node.js:851
-#: htdocs/luci-static/resources/view/fchomo/node.js:1571
-#: htdocs/luci-static/resources/view/fchomo/server.js:563
+#: htdocs/luci-static/resources/view/fchomo/node.js:862
+#: htdocs/luci-static/resources/view/fchomo/node.js:1585
msgid "UDP"
msgstr "UDP"
@@ -2972,19 +3033,19 @@ msgstr "UDP 包中繼模式。"
msgid "UDP relay mode"
msgstr "UDP 中繼模式"
-#: htdocs/luci-static/resources/fchomo.js:214
+#: htdocs/luci-static/resources/fchomo.js:220
msgid "URL test"
msgstr "自動選擇"
-#: htdocs/luci-static/resources/view/fchomo/node.js:503
+#: htdocs/luci-static/resources/fchomo/listeners.js:247
+#: htdocs/luci-static/resources/fchomo/listeners.js:405
+#: htdocs/luci-static/resources/fchomo/listeners.js:460
+#: htdocs/luci-static/resources/view/fchomo/node.js:512
#: htdocs/luci-static/resources/view/fchomo/node.js:621
-#: htdocs/luci-static/resources/view/fchomo/server.js:297
-#: htdocs/luci-static/resources/view/fchomo/server.js:448
-#: htdocs/luci-static/resources/view/fchomo/server.js:512
msgid "UUID"
msgstr "UUID"
-#: htdocs/luci-static/resources/fchomo.js:1185
+#: htdocs/luci-static/resources/fchomo.js:1191
msgid "Unable to download unsupported type: %s"
msgstr "無法下載不支援的類型: %s"
@@ -3009,8 +3070,8 @@ msgstr "未知錯誤。"
msgid "Unknown error: %s"
msgstr "未知錯誤:%s"
-#: htdocs/luci-static/resources/view/fchomo/node.js:856
-#: htdocs/luci-static/resources/view/fchomo/node.js:1576
+#: htdocs/luci-static/resources/view/fchomo/node.js:867
+#: htdocs/luci-static/resources/view/fchomo/node.js:1590
msgid "UoT"
msgstr "UDP over TCP (UoT)"
@@ -3018,22 +3079,22 @@ msgstr "UDP over TCP (UoT)"
msgid "Update failed."
msgstr "更新失敗。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1508
+#: htdocs/luci-static/resources/view/fchomo/node.js:1522
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:375
msgid "Update interval"
msgstr "更新間隔"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1268
+#: htdocs/luci-static/resources/view/fchomo/node.js:1282
msgid "Upload bandwidth"
msgstr "上傳頻寬"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1269
+#: htdocs/luci-static/resources/view/fchomo/node.js:1283
msgid "Upload bandwidth in Mbps."
msgstr "上傳頻寬(單位:Mbps)。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1034
-#: htdocs/luci-static/resources/view/fchomo/server.js:823
-#: htdocs/luci-static/resources/view/fchomo/server.js:863
+#: htdocs/luci-static/resources/fchomo/listeners.js:817
+#: htdocs/luci-static/resources/fchomo/listeners.js:857
+#: htdocs/luci-static/resources/view/fchomo/node.js:1048
msgid "Upload certificate"
msgstr "上傳憑證"
@@ -3041,17 +3102,17 @@ msgstr "上傳憑證"
msgid "Upload initial package"
msgstr "上傳初始資源包"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1048
-#: htdocs/luci-static/resources/view/fchomo/server.js:838
+#: htdocs/luci-static/resources/fchomo/listeners.js:832
+#: htdocs/luci-static/resources/view/fchomo/node.js:1062
msgid "Upload key"
msgstr "上傳金鑰"
+#: htdocs/luci-static/resources/fchomo/listeners.js:820
+#: htdocs/luci-static/resources/fchomo/listeners.js:835
+#: htdocs/luci-static/resources/fchomo/listeners.js:860
#: htdocs/luci-static/resources/view/fchomo/global.js:306
-#: htdocs/luci-static/resources/view/fchomo/node.js:1037
#: htdocs/luci-static/resources/view/fchomo/node.js:1051
-#: htdocs/luci-static/resources/view/fchomo/server.js:826
-#: htdocs/luci-static/resources/view/fchomo/server.js:841
-#: htdocs/luci-static/resources/view/fchomo/server.js:866
+#: htdocs/luci-static/resources/view/fchomo/node.js:1065
msgid "Upload..."
msgstr "上傳..."
@@ -3075,7 +3136,7 @@ msgstr "用於解析 DNS 伺服器的網域。必須是 IP。"
msgid "Used to resolve the domain of the Proxy node."
msgstr "用於解析代理節點的網域。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:963
+#: htdocs/luci-static/resources/view/fchomo/node.js:974
msgid "Used to verify the hostname on the returned certificates."
msgstr "用於驗證傳回的憑證上的主機名稱。"
@@ -3083,8 +3144,8 @@ msgstr "用於驗證傳回的憑證上的主機名稱。"
msgid "User Authentication"
msgstr "使用者認證"
+#: htdocs/luci-static/resources/fchomo/listeners.js:160
#: htdocs/luci-static/resources/view/fchomo/node.js:256
-#: htdocs/luci-static/resources/view/fchomo/server.js:216
msgid "Username"
msgstr "使用者名稱"
@@ -3092,50 +3153,50 @@ msgstr "使用者名稱"
msgid "Users filter mode"
msgstr "使用者過濾模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1198
+#: htdocs/luci-static/resources/view/fchomo/node.js:1212
msgid "V2ray HTTPUpgrade"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1203
+#: htdocs/luci-static/resources/view/fchomo/node.js:1217
msgid "V2ray HTTPUpgrade fast open"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:146
-#: htdocs/luci-static/resources/fchomo.js:179
+#: htdocs/luci-static/resources/fchomo.js:150
+#: htdocs/luci-static/resources/fchomo.js:184
msgid "VLESS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:145
-#: htdocs/luci-static/resources/fchomo.js:178
+#: htdocs/luci-static/resources/fchomo.js:149
+#: htdocs/luci-static/resources/fchomo.js:183
msgid "VMess"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1445
-#: htdocs/luci-static/resources/view/fchomo/node.js:1730
+#: htdocs/luci-static/resources/view/fchomo/node.js:1459
+#: htdocs/luci-static/resources/view/fchomo/node.js:1744
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:312
msgid "Value"
msgstr "可視化值"
-#: htdocs/luci-static/resources/fchomo.js:343
+#: htdocs/luci-static/resources/fchomo.js:349
msgid "Verify if given"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:830
-#: htdocs/luci-static/resources/view/fchomo/server.js:554
+#: htdocs/luci-static/resources/fchomo/listeners.js:511
+#: htdocs/luci-static/resources/view/fchomo/node.js:503
+#: htdocs/luci-static/resources/view/fchomo/node.js:833
msgid "Version"
msgstr "版本"
-#: htdocs/luci-static/resources/view/fchomo/node.js:838
+#: htdocs/luci-static/resources/view/fchomo/node.js:841
msgid "Version hint"
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:120
#: htdocs/luci-static/resources/view/fchomo/node.js:223
-#: htdocs/luci-static/resources/view/fchomo/server.js:172
msgid "Vless Encryption fields"
msgstr "Vless Encryption 欄位"
-#: htdocs/luci-static/resources/fchomo.js:380
+#: htdocs/luci-static/resources/fchomo.js:386
msgid "Wait a random 0-111 milliseconds with 75% probability."
msgstr "以 75% 的機率等待隨機 0-111 毫秒。"
@@ -3143,16 +3204,19 @@ msgstr "以 75% 的機率等待隨機 0-111 毫秒。"
msgid "Warning"
msgstr "警告"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1115
-#: htdocs/luci-static/resources/view/fchomo/node.js:1126
-#: htdocs/luci-static/resources/view/fchomo/node.js:1131
-#: htdocs/luci-static/resources/view/fchomo/server.js:971
-#: htdocs/luci-static/resources/view/fchomo/server.js:982
-#: htdocs/luci-static/resources/view/fchomo/server.js:987
+#: htdocs/luci-static/resources/fchomo/listeners.js:390
+#: htdocs/luci-static/resources/fchomo/listeners.js:965
+#: htdocs/luci-static/resources/fchomo/listeners.js:976
+#: htdocs/luci-static/resources/fchomo/listeners.js:981
+#: htdocs/luci-static/resources/view/fchomo/node.js:457
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+#: htdocs/luci-static/resources/view/fchomo/node.js:1129
+#: htdocs/luci-static/resources/view/fchomo/node.js:1140
+#: htdocs/luci-static/resources/view/fchomo/node.js:1145
msgid "WebSocket"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:132
+#: htdocs/luci-static/resources/view/fchomo/server.js:24
msgid "When used as a server, HomeProxy is a better choice."
msgstr "用作服務端時,HomeProxy 是更好的選擇。"
@@ -3160,23 +3224,23 @@ msgstr "用作服務端時,HomeProxy 是更好的選擇。"
msgid "White list"
msgstr "白名單"
-#: htdocs/luci-static/resources/fchomo.js:186
+#: htdocs/luci-static/resources/fchomo.js:192
msgid "WireGuard"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:749
+#: htdocs/luci-static/resources/view/fchomo/node.js:752
msgid "WireGuard peer public key."
msgstr "WireGuard 對端公鑰。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:756
+#: htdocs/luci-static/resources/view/fchomo/node.js:759
msgid "WireGuard pre-shared key."
msgstr "WireGuard 預先共用金鑰。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:741
+#: htdocs/luci-static/resources/view/fchomo/node.js:744
msgid "WireGuard requires base64-encoded private keys."
msgstr "WireGuard 要求 base64 編碼的私鑰。"
-#: htdocs/luci-static/resources/view/fchomo/server.js:617
+#: htdocs/luci-static/resources/fchomo/listeners.js:605
msgid "XOR mode"
msgstr "XOR 模式"
@@ -3192,23 +3256,23 @@ msgstr "Yaml 格式文本"
msgid "YouTube"
msgstr "YouTube"
-#: htdocs/luci-static/resources/fchomo.js:1624
+#: htdocs/luci-static/resources/fchomo.js:1630
msgid "Your %s was successfully uploaded. Size: %sB."
msgstr "您的 %s 已成功上傳。大小:%sB。"
-#: htdocs/luci-static/resources/fchomo.js:316
-#: htdocs/luci-static/resources/fchomo.js:329
-#: htdocs/luci-static/resources/fchomo.js:334
+#: htdocs/luci-static/resources/fchomo.js:322
+#: htdocs/luci-static/resources/fchomo.js:335
+#: htdocs/luci-static/resources/fchomo.js:340
#: htdocs/luci-static/resources/view/fchomo/node.js:646
msgid "aes-128-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:317
+#: htdocs/luci-static/resources/fchomo.js:323
msgid "aes-192-gcm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:318
-#: htdocs/luci-static/resources/fchomo.js:335
+#: htdocs/luci-static/resources/fchomo.js:324
+#: htdocs/luci-static/resources/fchomo.js:341
msgid "aes-256-gcm"
msgstr ""
@@ -3220,15 +3284,15 @@ msgstr "自動"
msgid "bbr"
msgstr "bbr"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1039
-#: htdocs/luci-static/resources/view/fchomo/server.js:828
-#: htdocs/luci-static/resources/view/fchomo/server.js:868
+#: htdocs/luci-static/resources/fchomo/listeners.js:822
+#: htdocs/luci-static/resources/fchomo/listeners.js:862
+#: htdocs/luci-static/resources/view/fchomo/node.js:1053
msgid "certificate"
msgstr "憑證"
-#: htdocs/luci-static/resources/fchomo.js:319
-#: htdocs/luci-static/resources/fchomo.js:330
+#: htdocs/luci-static/resources/fchomo.js:325
#: htdocs/luci-static/resources/fchomo.js:336
+#: htdocs/luci-static/resources/fchomo.js:342
msgid "chacha20-ietf-poly1305"
msgstr ""
@@ -3240,8 +3304,8 @@ msgstr ""
msgid "cubic"
msgstr "cubic"
-#: htdocs/luci-static/resources/view/fchomo/server.js:569
-#: htdocs/luci-static/resources/view/fchomo/server.js:600
+#: htdocs/luci-static/resources/fchomo/listeners.js:557
+#: htdocs/luci-static/resources/fchomo/listeners.js:588
msgid "decryption"
msgstr "decryption"
@@ -3249,36 +3313,36 @@ msgstr "decryption"
msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)"
msgstr "dnsmasq 自行選擇上游服務器。 (可能影響 CDN 準確性)"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1588
+#: htdocs/luci-static/resources/view/fchomo/node.js:1602
msgid "down"
msgstr "Hysteria 下載速率"
-#: htdocs/luci-static/resources/view/fchomo/node.js:870
-#: htdocs/luci-static/resources/view/fchomo/node.js:893
-#: htdocs/luci-static/resources/view/fchomo/server.js:604
+#: htdocs/luci-static/resources/fchomo/listeners.js:592
+#: htdocs/luci-static/resources/view/fchomo/node.js:881
+#: htdocs/luci-static/resources/view/fchomo/node.js:904
msgid "encryption"
msgstr "encryption"
-#: htdocs/luci-static/resources/view/fchomo/node.js:435
-#: htdocs/luci-static/resources/view/fchomo/server.js:424
+#: htdocs/luci-static/resources/fchomo/listeners.js:374
+#: htdocs/luci-static/resources/view/fchomo/node.js:441
msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink."
msgstr "false = 頻寬最佳化下行 true = 純 Sudoku 下行。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1114
-#: htdocs/luci-static/resources/view/fchomo/node.js:1125
-#: htdocs/luci-static/resources/view/fchomo/node.js:1130
-#: htdocs/luci-static/resources/view/fchomo/server.js:970
-#: htdocs/luci-static/resources/view/fchomo/server.js:981
-#: htdocs/luci-static/resources/view/fchomo/server.js:986
+#: htdocs/luci-static/resources/fchomo/listeners.js:964
+#: htdocs/luci-static/resources/fchomo/listeners.js:975
+#: htdocs/luci-static/resources/fchomo/listeners.js:980
+#: htdocs/luci-static/resources/view/fchomo/node.js:1128
+#: htdocs/luci-static/resources/view/fchomo/node.js:1139
+#: htdocs/luci-static/resources/view/fchomo/node.js:1144
msgid "gRPC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1181
+#: htdocs/luci-static/resources/view/fchomo/node.js:1195
msgid "gRPC User-Agent"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1177
-#: htdocs/luci-static/resources/view/fchomo/server.js:1005
+#: htdocs/luci-static/resources/fchomo/listeners.js:999
+#: htdocs/luci-static/resources/view/fchomo/node.js:1191
msgid "gRPC service name"
msgstr "gRPC 服務名稱"
@@ -3286,11 +3350,11 @@ msgstr "gRPC 服務名稱"
msgid "gVisor"
msgstr "gVisor"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1219
+#: htdocs/luci-static/resources/view/fchomo/node.js:1233
msgid "h2mux"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/server.js:769
+#: htdocs/luci-static/resources/fchomo/listeners.js:757
msgid "least one keypair required"
msgstr "至少需要一對密鑰"
@@ -3304,17 +3368,17 @@ msgstr "metacubexd"
#: htdocs/luci-static/resources/view/fchomo/client.js:1480
#: htdocs/luci-static/resources/view/fchomo/client.js:1711
#: htdocs/luci-static/resources/view/fchomo/client.js:1767
-#: htdocs/luci-static/resources/view/fchomo/node.js:1411
+#: htdocs/luci-static/resources/view/fchomo/node.js:1425
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:232
msgid "mihomo config"
msgstr "mihomo 配置"
-#: htdocs/luci-static/resources/fchomo.js:362
+#: htdocs/luci-static/resources/fchomo.js:368
msgid "mlkem768x25519plus"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1285
-#: htdocs/luci-static/resources/view/fchomo/node.js:1566
+#: htdocs/luci-static/resources/view/fchomo/node.js:1299
+#: htdocs/luci-static/resources/view/fchomo/node.js:1580
msgid "mpTCP"
msgstr "多路徑 TCP (mpTCP)"
@@ -3326,21 +3390,21 @@ msgstr "new_reno"
msgid "no-resolve"
msgstr "no-resolve"
-#: htdocs/luci-static/resources/fchomo.js:1359
-#: htdocs/luci-static/resources/fchomo.js:1454
-#: htdocs/luci-static/resources/fchomo.js:1489
-#: htdocs/luci-static/resources/fchomo.js:1517
+#: htdocs/luci-static/resources/fchomo.js:1365
+#: htdocs/luci-static/resources/fchomo.js:1460
+#: htdocs/luci-static/resources/fchomo.js:1495
+#: htdocs/luci-static/resources/fchomo.js:1523
msgid "non-empty value"
msgstr "非空值"
-#: htdocs/luci-static/resources/fchomo.js:314
-#: htdocs/luci-static/resources/fchomo.js:328
-#: htdocs/luci-static/resources/fchomo.js:340
+#: htdocs/luci-static/resources/fchomo.js:320
+#: htdocs/luci-static/resources/fchomo.js:334
+#: htdocs/luci-static/resources/fchomo.js:346
+#: htdocs/luci-static/resources/fchomo/listeners.js:492
#: htdocs/luci-static/resources/view/fchomo/node.js:644
#: htdocs/luci-static/resources/view/fchomo/node.js:664
-#: htdocs/luci-static/resources/view/fchomo/node.js:799
+#: htdocs/luci-static/resources/view/fchomo/node.js:802
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:308
-#: htdocs/luci-static/resources/view/fchomo/server.js:535
msgid "none"
msgstr "無"
@@ -3352,19 +3416,25 @@ msgstr "未找到"
msgid "not included \",\""
msgstr "不包含 \",\""
-#: htdocs/luci-static/resources/fchomo.js:200
+#: htdocs/luci-static/resources/fchomo.js:206
+#: htdocs/luci-static/resources/fchomo/listeners.js:523
+#: htdocs/luci-static/resources/fchomo/listeners.js:524
msgid "null"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:800
+#: htdocs/luci-static/resources/view/fchomo/node.js:803
msgid "obfs-simple"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
-msgid "only applies when %s is stream/poll/auto."
-msgstr "僅當 %s 為 stream/poll/auto 時適用。"
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
+msgid "only applies when %s is %s."
+msgstr "僅當 %s 為 %s 時適用。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1546
+#: htdocs/luci-static/resources/view/fchomo/node.js:486
+msgid "only applies when %s is not %s."
+msgstr "僅當 %s 不為 %s 時適用。"
+
+#: htdocs/luci-static/resources/view/fchomo/node.js:1560
msgid "override.proxy-name"
msgstr ""
@@ -3372,13 +3442,13 @@ msgstr ""
msgid "packet addr (v2ray-core v5+)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:449
-#: htdocs/luci-static/resources/view/fchomo/server.js:438
+#: htdocs/luci-static/resources/fchomo/listeners.js:388
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
msgid "poll"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1053
-#: htdocs/luci-static/resources/view/fchomo/server.js:843
+#: htdocs/luci-static/resources/fchomo/listeners.js:837
+#: htdocs/luci-static/resources/view/fchomo/node.js:1067
msgid "private key"
msgstr "私鑰"
@@ -3391,7 +3461,7 @@ msgstr "razord-meta"
msgid "requires front-end adaptation using the API."
msgstr "需要使用 API 的前端適配。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:804
+#: htdocs/luci-static/resources/view/fchomo/node.js:807
msgid "restls"
msgstr ""
@@ -3399,17 +3469,17 @@ msgstr ""
msgid "rule-set"
msgstr "規則集"
-#: htdocs/luci-static/resources/view/fchomo/node.js:803
-#: htdocs/luci-static/resources/view/fchomo/server.js:536
+#: htdocs/luci-static/resources/fchomo/listeners.js:493
+#: htdocs/luci-static/resources/view/fchomo/node.js:806
msgid "shadow-tls"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1217
+#: htdocs/luci-static/resources/view/fchomo/node.js:1231
msgid "smux"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:448
-#: htdocs/luci-static/resources/view/fchomo/server.js:437
+#: htdocs/luci-static/resources/fchomo/listeners.js:387
+#: htdocs/luci-static/resources/view/fchomo/node.js:454
msgid "split-stream"
msgstr ""
@@ -3417,7 +3487,11 @@ msgstr ""
msgid "src"
msgstr "src"
-#: htdocs/luci-static/resources/view/fchomo/server.js:296
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
+msgid "stream/poll/auto"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:246
msgid "sudoku-keypair"
msgstr ""
@@ -3425,87 +3499,87 @@ msgstr ""
msgid "unchecked"
msgstr "未檢查"
-#: htdocs/luci-static/resources/fchomo.js:426
+#: htdocs/luci-static/resources/fchomo.js:432
msgid "unique UCI identifier"
msgstr "獨立 UCI 識別"
-#: htdocs/luci-static/resources/fchomo.js:429
+#: htdocs/luci-static/resources/fchomo.js:435
msgid "unique identifier"
msgstr "獨立標識"
-#: htdocs/luci-static/resources/fchomo.js:1526
+#: htdocs/luci-static/resources/fchomo.js:1532
msgid "unique value"
msgstr "獨立值"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1582
+#: htdocs/luci-static/resources/view/fchomo/node.js:1596
msgid "up"
msgstr "Hysteria 上傳速率"
-#: htdocs/luci-static/resources/view/fchomo/node.js:495
+#: htdocs/luci-static/resources/fchomo/listeners.js:512
+#: htdocs/luci-static/resources/view/fchomo/node.js:504
#: htdocs/luci-static/resources/view/fchomo/node.js:539
-#: htdocs/luci-static/resources/view/fchomo/node.js:831
-#: htdocs/luci-static/resources/view/fchomo/node.js:863
-#: htdocs/luci-static/resources/view/fchomo/server.js:555
+#: htdocs/luci-static/resources/view/fchomo/node.js:834
+#: htdocs/luci-static/resources/view/fchomo/node.js:874
msgid "v1"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:496
-#: htdocs/luci-static/resources/view/fchomo/node.js:832
-#: htdocs/luci-static/resources/view/fchomo/node.js:864
-#: htdocs/luci-static/resources/view/fchomo/server.js:556
+#: htdocs/luci-static/resources/fchomo/listeners.js:513
+#: htdocs/luci-static/resources/view/fchomo/node.js:505
+#: htdocs/luci-static/resources/view/fchomo/node.js:835
+#: htdocs/luci-static/resources/view/fchomo/node.js:875
msgid "v2"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:497
-#: htdocs/luci-static/resources/view/fchomo/node.js:833
-#: htdocs/luci-static/resources/view/fchomo/server.js:557
+#: htdocs/luci-static/resources/fchomo/listeners.js:514
+#: htdocs/luci-static/resources/view/fchomo/node.js:506
+#: htdocs/luci-static/resources/view/fchomo/node.js:836
msgid "v3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1406
-#: htdocs/luci-static/resources/fchomo.js:1409
+#: htdocs/luci-static/resources/fchomo.js:1412
+#: htdocs/luci-static/resources/fchomo.js:1415
msgid "valid JSON format"
msgstr "有效的 JSON 格式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1013
+#: htdocs/luci-static/resources/view/fchomo/node.js:1027
msgid "valid SHA256 string with %d characters"
msgstr "包含 %d 個字元的有效 SHA256 字串"
-#: htdocs/luci-static/resources/fchomo.js:1431
-#: htdocs/luci-static/resources/fchomo.js:1434
+#: htdocs/luci-static/resources/fchomo.js:1437
+#: htdocs/luci-static/resources/fchomo.js:1440
msgid "valid URL"
msgstr "有效網址"
-#: htdocs/luci-static/resources/fchomo.js:1444
+#: htdocs/luci-static/resources/fchomo.js:1450
msgid "valid base64 key with %d characters"
msgstr "包含 %d 個字元的有效 base64 金鑰"
-#: htdocs/luci-static/resources/fchomo.js:1504
#: htdocs/luci-static/resources/fchomo.js:1510
+#: htdocs/luci-static/resources/fchomo.js:1516
msgid "valid format: 2x, 2p, 4v"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1491
+#: htdocs/luci-static/resources/fchomo.js:1497
msgid "valid key length with %d characters"
msgstr "包含 %d 個字元的有效金鑰"
-#: htdocs/luci-static/resources/fchomo.js:1369
+#: htdocs/luci-static/resources/fchomo.js:1375
msgid "valid port value"
msgstr "有效連接埠值"
-#: htdocs/luci-static/resources/fchomo.js:1419
+#: htdocs/luci-static/resources/fchomo.js:1425
msgid "valid uuid"
msgstr "有效 uuid"
-#: htdocs/luci-static/resources/fchomo.js:386
+#: htdocs/luci-static/resources/fchomo.js:392
msgid "vless-mlkem768"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:385
+#: htdocs/luci-static/resources/fchomo.js:391
msgid "vless-x25519"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:320
+#: htdocs/luci-static/resources/fchomo.js:326
msgid "xchacha20-ietf-poly1305"
msgstr ""
@@ -3513,7 +3587,7 @@ msgstr ""
msgid "yacd-meta"
msgstr "yacd-meta"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1218
+#: htdocs/luci-static/resources/view/fchomo/node.js:1232
msgid "yamux"
msgstr ""
@@ -3525,10 +3599,13 @@ msgstr ""
msgid "zero"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1187
+#: htdocs/luci-static/resources/fchomo.js:1193
msgid "🡇"
msgstr ""
+#~ msgid "QUIC congestion controller."
+#~ msgstr "QUIC 壅塞控制器。"
+
#~ msgid ""
#~ "Uplink keeps the Sudoku protocol, and downlink characteristics are "
#~ "consistent with uplink characteristics."
diff --git a/small/luci-app-fchomo/root/etc/init.d/fchomo b/small/luci-app-fchomo/root/etc/init.d/fchomo
index ddbb35d903..5c8a3e347e 100755
--- a/small/luci-app-fchomo/root/etc/init.d/fchomo
+++ b/small/luci-app-fchomo/root/etc/init.d/fchomo
@@ -45,6 +45,31 @@ opmc() { # @less_25_12
$OPM $action "$@"
}
+# add_firewall
+add_firewall() {
+ local enabled auto_firewall listen port
+ config_get_bool enabled "$1" "enabled" "1"
+ config_get_bool auto_firewall "$1" "auto_firewall" "1"
+ config_get listen "$1" "listen" "::"
+ config_get port "$1" "port"
+
+ [ "$enabled" = "0" ] && return 0
+ [ "$auto_firewall" = "0" ] && return 0
+
+ json_add_object ''
+ json_add_string type rule
+ json_add_string target ACCEPT
+ json_add_string name "$1"
+ #json_add_string family '' # '' = IPv4 and IPv6
+ json_add_string proto 'tcp udp'
+ json_add_string direction in
+ json_add_string src "*"
+ #json_add_string dest '' # '' = input
+ json_add_string dest_ip "$(echo "$listen" | grep -vE '^(0\.\d+\.\d+\.\d+|::)$')"
+ json_add_string dest_port "$port"
+ json_close_object
+}
+
config_load "$CONF"
# define global var: DEF_WAN DEF_WAN6 NIC_* NIC6_*
@@ -333,6 +358,15 @@ start_service() {
procd_set_param stderr 1
procd_set_param respawn
+ # add_firewall
+ procd_open_data
+ # configure firewall
+ json_add_array firewall
+ # meta l4proto %s th dport %s counter accept comment "!%s: accept server instance [%s]"
+ config_foreach add_firewall "inbound"
+ json_close_array
+ procd_close_data
+
procd_close_instance
fi
fi
@@ -380,30 +414,6 @@ start_service() {
procd_set_param respawn
# add_firewall
- add_firewall() {
- local enabled auto_firewall listen port
- config_get_bool enabled "$1" "enabled" "1"
- config_get_bool auto_firewall "$1" "auto_firewall" "1"
- config_get listen "$1" "listen" "::"
- config_get port "$1" "port"
-
- [ "$enabled" = "0" ] && return 0
- [ "$auto_firewall" = "0" ] && return 0
-
- json_add_object ''
- json_add_string type rule
- json_add_string target ACCEPT
- json_add_string name "$1"
- #json_add_string family '' # '' = IPv4 and IPv6
- json_add_string proto 'tcp udp'
- json_add_string direction in
- json_add_string src "*"
- #json_add_string dest '' # '' = input
- json_add_string dest_ip "$(echo "$listen" | grep -vE '^(0\.\d+\.\d+\.\d+|::)$')"
- json_add_string dest_port "$port"
- json_close_object
- }
- #
procd_open_data
# configure firewall
json_add_array firewall
diff --git a/small/luci-app-fchomo/root/etc/uci-defaults/99_luci-app-fchomo-migration_node b/small/luci-app-fchomo/root/etc/uci-defaults/99_luci-app-fchomo-migration_node
index 691f6c9f5d..2cb34b6ca8 100755
--- a/small/luci-app-fchomo/root/etc/uci-defaults/99_luci-app-fchomo-migration_node
+++ b/small/luci-app-fchomo/root/etc/uci-defaults/99_luci-app-fchomo-migration_node
@@ -34,6 +34,22 @@ migrate() {
uci_set "$CONF" "$1" vless_encryption_encryption "$vless_encryption"
fi
fi
+
+ # tuic_congestion_controller -> congestion_controller
+ if isDefined "$1" tuic_congestion_controller; then
+ local tuic_congestion_controller
+ config_get tuic_congestion_controller "$1" tuic_congestion_controller ""
+ uci_remove "$CONF" "$1" tuic_congestion_controller
+ uci_set "$CONF" "$1" congestion_controller "$tuic_congestion_controller"
+ fi
+
+ # masque_congestion_controller -> congestion_controller
+ if isDefined "$1" masque_congestion_controller; then
+ local masque_congestion_controller
+ config_get masque_congestion_controller "$1" masque_congestion_controller ""
+ uci_remove "$CONF" "$1" masque_congestion_controller
+ uci_set "$CONF" "$1" congestion_controller "$masque_congestion_controller"
+ fi
}
config_foreach migrate node
diff --git a/small/luci-app-fchomo/root/etc/uci-defaults/99_luci-app-fchomo-migration_server b/small/luci-app-fchomo/root/etc/uci-defaults/99_luci-app-fchomo-migration_server
new file mode 100755
index 0000000000..320d75e5c7
--- /dev/null
+++ b/small/luci-app-fchomo/root/etc/uci-defaults/99_luci-app-fchomo-migration_server
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Migration script for fchomo server
+# Used to migrate LuCI application server option.
+
+. /lib/functions.sh
+. /usr/share/libubox/jshn.sh
+
+CONF=fchomo
+
+config_load "$CONF"
+
+# isDefined