diff --git a/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js b/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js index 9e772073d..efaa3c857 100644 --- a/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js +++ b/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js @@ -155,13 +155,13 @@ return view.extend({ o.rmempty = false; o = s.taboption('routing', form.Value, 'main_urltest_interval', _('Test interval'), - _('The test interval in seconds. 180 will be used if empty.')); + _('The test interval in seconds.')); o.datatype = 'uinteger'; o.placeholder = '180'; o.depends('main_node', 'urltest'); o = s.taboption('routing', form.Value, 'main_urltest_tolerance', _('Test tolerance'), - _('The test tolerance in milliseconds. 50 will be used if empty.')); + _('The test tolerance in milliseconds.')); o.datatype = 'uinteger'; o.placeholder = '50'; o.depends('main_node', 'urltest'); @@ -184,13 +184,13 @@ return view.extend({ o.rmempty = false; o = s.taboption('routing', form.Value, 'main_udp_urltest_interval', _('Test interval'), - _('The test interval in seconds. 180 will be used if empty.')); + _('The test interval in seconds.')); o.datatype = 'uinteger'; o.placeholder = '180'; o.depends('main_udp_node', 'urltest'); o = s.taboption('routing', form.Value, 'main_udp_urltest_tolerance', _('Test tolerance'), - _('The test tolerance in milliseconds. 50 will be used if empty.')); + _('The test tolerance in milliseconds.')); o.datatype = 'uinteger'; o.placeholder = '50'; o.depends('main_udp_node', 'urltest'); @@ -491,7 +491,7 @@ return view.extend({ so.modalonly = true; so = ss.option(form.Value, 'urltest_url', _('Test URL'), - _('The URL to test. https://www.gstatic.com/generate_204 will be used if empty.')); + _('The URL to test.')); so.placeholder = 'https://www.gstatic.com/generate_204'; so.validate = function(section_id, value) { if (section_id && value) { @@ -511,7 +511,7 @@ return view.extend({ so.modalonly = true; so = ss.option(form.Value, 'urltest_interval', _('Test interval'), - _('The test interval in seconds. 180 will be used if empty.')); + _('The test interval in seconds.')); so.datatype = 'uinteger'; so.placeholder = '180'; so.validate = function(section_id, value) { @@ -527,14 +527,14 @@ return view.extend({ so.modalonly = true; so = ss.option(form.Value, 'urltest_tolerance', _('Test tolerance'), - _('The test tolerance in milliseconds. 50 will be used if empty.')); + _('The test tolerance in milliseconds.')); so.datatype = 'uinteger'; so.placeholder = '50'; so.depends('node', 'urltest'); so.modalonly = true; so = ss.option(form.Value, 'urltest_idle_timeout', _('Idle timeout'), - _('The idle timeout in seconds. 1800 will be used if empty.')); + _('The idle timeout in seconds.')); so.datatype = 'uinteger'; so.placeholder = '1800'; so.depends('node', 'urltest'); @@ -1228,7 +1228,8 @@ return view.extend({ so.depends('type', 'remote'); so = ss.option(form.Value, 'update_interval', _('Update interval'), - _('Update interval of rule set.
1d will be used if empty.')); + _('Update interval of rule set.')); + so.placeholder = '1d'; so.depends('type', 'remote'); /* Rule set settings end */ diff --git a/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/server.js b/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/server.js index cf8c6d83d..e540fff25 100644 --- a/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/server.js +++ b/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/server.js @@ -796,9 +796,9 @@ return view.extend({ o.modalonly = true; o = s.option(form.Value, 'udp_timeout', _('UDP NAT expiration time'), - _('In seconds. 300 is used by default.')); + _('In seconds.')); o.datatype = 'uinteger'; - o.default = '300'; + o.placeholder = '300'; o.depends({'network': 'tcp', '!reverse': true}); o.modalonly = true; diff --git a/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc b/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc index 034d53d0e..f4d1d4dbb 100755 --- a/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc +++ b/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc @@ -619,7 +619,7 @@ if (!isEmpty(main_node)) { tolerance: strToInt(main_udp_urltest_tolerance), 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) { const main_udp_node_cfg = uci.get_all(uciconfig, main_udp_node) || {}; 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, 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 { const outbound = uci.get_all(uciconfig, cfg.node) || {}; 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))); } /* Outbound end */ diff --git a/luci-app-homeproxy/root/etc/homeproxy/scripts/update_subscriptions.uc b/luci-app-homeproxy/root/etc/homeproxy/scripts/update_subscriptions.uc index b10dc5edd..7d1603e7f 100755 --- a/luci-app-homeproxy/root/etc/homeproxy/scripts/update_subscriptions.uc +++ b/luci-app-homeproxy/root/etc/homeproxy/scripts/update_subscriptions.uc @@ -570,7 +570,18 @@ function main() { if (!isEmpty(main_node)) { const first_server = uci.get_first(uciconfig, ucinode); 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.commit(uciconfig); need_restart = true; @@ -579,7 +590,18 @@ function main() { } 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.commit(uciconfig); need_restart = true;