diff --git a/htdocs/luci-static/resources/view/homeproxy/client.js b/htdocs/luci-static/resources/view/homeproxy/client.js index f5ce25a2..27cb2519 100644 --- a/htdocs/luci-static/resources/view/homeproxy/client.js +++ b/htdocs/luci-static/resources/view/homeproxy/client.js @@ -421,32 +421,24 @@ return view.extend({ so.rmempty = false; so.editable = true; - so = ss.option(form.ListValue, 'ip_version', _('IP version'), - _('4 or 6. Not limited if empty.')); - so.value('4', _('IPv4')); - so.value('6', _('IPv6')); - so.value('', _('Both')); - so.modalonly = true; - so = ss.option(form.ListValue, 'mode', _('Mode'), _('The default rule uses the following matching logic:
' + '(domain || domain_suffix || domain_keyword || domain_regex || geosite || geoip || ip_cidr) &&
' + + '(port || port_range) &&
' + '(source_geoip || source_ip_cidr) &&
' + + '(source_port || source_port_range) &&
' + 'other fields.')); so.value('default', _('Default')); so.default = 'default'; so.rmempty = false; so.readonly = true; - so = ss.option(form.Flag, 'invert', _('Invert'), - _('Invert match result.')); - so.default = so.disabled; - so.modalonly = true; - - so = ss.option(form.ListValue, 'network', _('Network')); - so.value('tcp', _('TCP')); - so.value('udp', _('UDP')); + so = ss.option(form.ListValue, 'ip_version', _('IP version'), + _('4 or 6. Not limited if empty.')); + so.value('4', _('IPv4')); + so.value('6', _('IPv6')); so.value('', _('Both')); + so.modalonly = true; so = ss.option(form.MultiValue, 'protocol', _('Protocol'), _('Sniffed protocol, see Sniff for details.')); @@ -455,6 +447,11 @@ return view.extend({ so.value('quic', _('QUIC')); so.value('stun', _('STUN')); + so = ss.option(form.ListValue, 'network', _('Network')); + so.value('tcp', _('TCP')); + so.value('udp', _('UDP')); + so.value('', _('Both')); + so = ss.option(form.DynamicList, 'domain', _('Domain name'), _('Match full domain.')); so.datatype = 'hostname'; @@ -526,6 +523,11 @@ return view.extend({ _('Match user name.')); so.modalonly = true; + so = ss.option(form.Flag, 'invert', _('Invert'), + _('Invert match result.')); + so.default = so.disabled; + so.modalonly = true; + so = ss.option(form.ListValue, 'outbound', _('Outbound'), _('Tag of the target outbound.')); so.load = function(section_id) { diff --git a/root/etc/homeproxy/scripts/generate_client.uc b/root/etc/homeproxy/scripts/generate_client.uc index f1a436f2..441e0f0c 100755 --- a/root/etc/homeproxy/scripts/generate_client.uc +++ b/root/etc/homeproxy/scripts/generate_client.uc @@ -573,10 +573,9 @@ if (!isEmpty(main_node)) { return null; push(config.route.rules, { - invert: cfg.invert, - ip_version: cfg.ip_version, - network: cfg.network, + ip_version: strToInt(cfg.ip_version), protocol: cfg.protocol, + network: cfg.network, domain: cfg.domain, domain_suffix: cfg.domain_suffix, domain_keyword: cfg.domain_keyword,