luci-app-homeproxy: sync upstream

last commit: 41c6d74f0b
This commit is contained in:
gitea-action 2025-01-12 21:00:20 +08:00
parent c6e3c868ae
commit ca37bd58f7
4 changed files with 39 additions and 16 deletions

View File

@ -155,13 +155,13 @@ return view.extend({
o.rmempty = false; o.rmempty = false;
o = s.taboption('routing', form.Value, 'main_urltest_interval', _('Test interval'), o = s.taboption('routing', form.Value, 'main_urltest_interval', _('Test interval'),
_('The test interval in seconds. <code>180</code> will be used if empty.')); _('The test interval in seconds.'));
o.datatype = 'uinteger'; o.datatype = 'uinteger';
o.placeholder = '180'; o.placeholder = '180';
o.depends('main_node', 'urltest'); o.depends('main_node', 'urltest');
o = s.taboption('routing', form.Value, 'main_urltest_tolerance', _('Test tolerance'), o = s.taboption('routing', form.Value, 'main_urltest_tolerance', _('Test tolerance'),
_('The test tolerance in milliseconds. <code>50</code> will be used if empty.')); _('The test tolerance in milliseconds.'));
o.datatype = 'uinteger'; o.datatype = 'uinteger';
o.placeholder = '50'; o.placeholder = '50';
o.depends('main_node', 'urltest'); o.depends('main_node', 'urltest');
@ -184,13 +184,13 @@ return view.extend({
o.rmempty = false; o.rmempty = false;
o = s.taboption('routing', form.Value, 'main_udp_urltest_interval', _('Test interval'), o = s.taboption('routing', form.Value, 'main_udp_urltest_interval', _('Test interval'),
_('The test interval in seconds. <code>180</code> will be used if empty.')); _('The test interval in seconds.'));
o.datatype = 'uinteger'; o.datatype = 'uinteger';
o.placeholder = '180'; o.placeholder = '180';
o.depends('main_udp_node', 'urltest'); o.depends('main_udp_node', 'urltest');
o = s.taboption('routing', form.Value, 'main_udp_urltest_tolerance', _('Test tolerance'), o = s.taboption('routing', form.Value, 'main_udp_urltest_tolerance', _('Test tolerance'),
_('The test tolerance in milliseconds. <code>50</code> will be used if empty.')); _('The test tolerance in milliseconds.'));
o.datatype = 'uinteger'; o.datatype = 'uinteger';
o.placeholder = '50'; o.placeholder = '50';
o.depends('main_udp_node', 'urltest'); o.depends('main_udp_node', 'urltest');
@ -491,7 +491,7 @@ return view.extend({
so.modalonly = true; so.modalonly = true;
so = ss.option(form.Value, 'urltest_url', _('Test URL'), so = ss.option(form.Value, 'urltest_url', _('Test URL'),
_('The URL to test. <code>https://www.gstatic.com/generate_204</code> will be used if empty.')); _('The URL to test.'));
so.placeholder = 'https://www.gstatic.com/generate_204'; so.placeholder = 'https://www.gstatic.com/generate_204';
so.validate = function(section_id, value) { so.validate = function(section_id, value) {
if (section_id && value) { if (section_id && value) {
@ -511,7 +511,7 @@ return view.extend({
so.modalonly = true; so.modalonly = true;
so = ss.option(form.Value, 'urltest_interval', _('Test interval'), so = ss.option(form.Value, 'urltest_interval', _('Test interval'),
_('The test interval in seconds. <code>180</code> will be used if empty.')); _('The test interval in seconds.'));
so.datatype = 'uinteger'; so.datatype = 'uinteger';
so.placeholder = '180'; so.placeholder = '180';
so.validate = function(section_id, value) { so.validate = function(section_id, value) {
@ -527,14 +527,14 @@ return view.extend({
so.modalonly = true; so.modalonly = true;
so = ss.option(form.Value, 'urltest_tolerance', _('Test tolerance'), so = ss.option(form.Value, 'urltest_tolerance', _('Test tolerance'),
_('The test tolerance in milliseconds. <code>50</code> will be used if empty.')); _('The test tolerance in milliseconds.'));
so.datatype = 'uinteger'; so.datatype = 'uinteger';
so.placeholder = '50'; so.placeholder = '50';
so.depends('node', 'urltest'); so.depends('node', 'urltest');
so.modalonly = true; so.modalonly = true;
so = ss.option(form.Value, 'urltest_idle_timeout', _('Idle timeout'), so = ss.option(form.Value, 'urltest_idle_timeout', _('Idle timeout'),
_('The idle timeout in seconds. <code>1800</code> will be used if empty.')); _('The idle timeout in seconds.'));
so.datatype = 'uinteger'; so.datatype = 'uinteger';
so.placeholder = '1800'; so.placeholder = '1800';
so.depends('node', 'urltest'); so.depends('node', 'urltest');
@ -1228,7 +1228,8 @@ return view.extend({
so.depends('type', 'remote'); so.depends('type', 'remote');
so = ss.option(form.Value, 'update_interval', _('Update interval'), so = ss.option(form.Value, 'update_interval', _('Update interval'),
_('Update interval of rule set.<br/><code>1d</code> will be used if empty.')); _('Update interval of rule set.'));
so.placeholder = '1d';
so.depends('type', 'remote'); so.depends('type', 'remote');
/* Rule set settings end */ /* Rule set settings end */

View File

@ -796,9 +796,9 @@ return view.extend({
o.modalonly = true; o.modalonly = true;
o = s.option(form.Value, 'udp_timeout', _('UDP NAT expiration time'), o = s.option(form.Value, 'udp_timeout', _('UDP NAT expiration time'),
_('In seconds. <code>300</code> is used by default.')); _('In seconds.'));
o.datatype = 'uinteger'; o.datatype = 'uinteger';
o.default = '300'; o.placeholder = '300';
o.depends({'network': 'tcp', '!reverse': true}); o.depends({'network': 'tcp', '!reverse': true});
o.modalonly = true; o.modalonly = true;

View File

@ -619,7 +619,7 @@ if (!isEmpty(main_node)) {
tolerance: strToInt(main_udp_urltest_tolerance), tolerance: strToInt(main_udp_urltest_tolerance),
idle_timeout: (strToInt(main_udp_urltest_interval) > 1800) ? `${main_udp_urltest_interval * 2}s` : null, idle_timeout: (strToInt(main_udp_urltest_interval) > 1800) ? `${main_udp_urltest_interval * 2}s` : null,
}); });
urltest_nodes = [...urltest_nodes, ...filter(main_udp_urltest_nodes, ((l) => !~index(urltest_nodes, l)))]; urltest_nodes = [...urltest_nodes, ...filter(main_udp_urltest_nodes, (l) => !~index(urltest_nodes, l))];
} else if (dedicated_udp_node) { } else if (dedicated_udp_node) {
const main_udp_node_cfg = uci.get_all(uciconfig, main_udp_node) || {}; const main_udp_node_cfg = uci.get_all(uciconfig, main_udp_node) || {};
push(config.outbounds, generate_outbound(main_udp_node_cfg)); push(config.outbounds, generate_outbound(main_udp_node_cfg));
@ -650,7 +650,7 @@ if (!isEmpty(main_node)) {
idle_timeout: cfg.urltest_idle_timeout ? (cfg.urltest_idle_timeout + 's') : null, idle_timeout: cfg.urltest_idle_timeout ? (cfg.urltest_idle_timeout + 's') : null,
interrupt_exist_connections: (cfg.urltest_interrupt_exist_connections === '1') interrupt_exist_connections: (cfg.urltest_interrupt_exist_connections === '1')
}); });
urltest_nodes = [...urltest_nodes, ...filter(cfg.urltest_nodes, ((l) => !~index(urltest_nodes, l)))]; urltest_nodes = [...urltest_nodes, ...filter(cfg.urltest_nodes, (l) => !~index(urltest_nodes, l))];
} else { } else {
const outbound = uci.get_all(uciconfig, cfg.node) || {}; const outbound = uci.get_all(uciconfig, cfg.node) || {};
push(config.outbounds, generate_outbound(outbound)); push(config.outbounds, generate_outbound(outbound));
@ -661,7 +661,7 @@ if (!isEmpty(main_node)) {
} }
}); });
for (let i in filter(urltest_nodes, ((l) => !~index(routing_nodes, l)))) for (let i in filter(urltest_nodes, (l) => !~index(routing_nodes, l)))
push(config.outbounds, generate_outbound(uci.get_all(uciconfig, i))); push(config.outbounds, generate_outbound(uci.get_all(uciconfig, i)));
} }
/* Outbound end */ /* Outbound end */

View File

@ -570,7 +570,18 @@ function main() {
if (!isEmpty(main_node)) { if (!isEmpty(main_node)) {
const first_server = uci.get_first(uciconfig, ucinode); const first_server = uci.get_first(uciconfig, ucinode);
if (first_server) { if (first_server) {
if (!uci.get(uciconfig, main_node)) { let main_urltest_nodes;
if (main_node === 'urltest') {
main_urltest_nodes = filter(uci.get(uciconfig, ucimain, 'main_urltest_nodes'), (v) => {
if (!uci.get(uciconfig, v)) {
log(sprintf('Node %s is gone, removing from urltest list.', node));
return false;
}
return true;
});
}
if ((main_node === 'urltest') ? !length(main_urltest_nodes) : !uci.get(uciconfig, main_node)) {
uci.set(uciconfig, ucimain, 'main_node', first_server); uci.set(uciconfig, ucimain, 'main_node', first_server);
uci.commit(uciconfig); uci.commit(uciconfig);
need_restart = true; need_restart = true;
@ -579,7 +590,18 @@ function main() {
} }
if (!isEmpty(main_udp_node) && main_udp_node !== 'same') { if (!isEmpty(main_udp_node) && main_udp_node !== 'same') {
if (!uci.get(uciconfig, main_udp_node)) { let main_udp_urltest_nodes;
if (main_udp_node === 'urltest') {
main_udp_urltest_nodes = filter(uci.get(uciconfig, ucimain, 'main_udp_urltest_nodes'), (v) => {
if (!uci.get(uciconfig, v)) {
log(sprintf('Node %s is gone, removing from urltest list.', node));
return false;
}
return true;
});
}
if ((main_udp_node === 'urltest') ? !length(main_udp_urltest_nodes) : !uci.get(uciconfig, main_udp_node)) {
uci.set(uciconfig, ucimain, 'main_udp_node', first_server); uci.set(uciconfig, ucimain, 'main_udp_node', first_server);
uci.commit(uciconfig); uci.commit(uciconfig);
need_restart = true; need_restart = true;