From 23cb634242837f1a4d411be75316a61b13f3a6e0 Mon Sep 17 00:00:00 2001 From: xiaorouji <60100640+xiaorouji@users.noreply.github.com> Date: Wed, 6 Sep 2023 15:19:06 +0800 Subject: [PATCH] luci: fix depends --- .../model/cbi/passwall/client/type/ray.lua | 60 ++++++++----------- .../model/cbi/passwall/server/type/ray.lua | 9 +++ 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua index 2f15d6108..0d82ed311 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua @@ -102,7 +102,7 @@ add_v2ray_depends(o) o = s:option(Value, option_name("iface"), translate("Interface")) o.default = "eth1" -o:depends({ [option_name("protocol")] = "_iface" }) +add_xray_depends(o, { [option_name("protocol")] = "_iface" }) local nodes_table = {} local balancers_table = {} @@ -130,7 +130,7 @@ end -- 负载均衡列表 local o = s:option(DynamicList, option_name("balancing_node"), translate("Load balancing node list"), translate("Load balancing node list, document")) -o:depends({ [option_name("protocol")] = "_balancing" }) +add_xray_depends(o, { [option_name("protocol")] = "_balancing" }) add_v2ray_depends(o, { [option_name("protocol")] = "_balancing" }) for k, v in pairs(nodes_table) do o:value(v.id, v.remarks) end @@ -162,11 +162,11 @@ o.description = translate("The interval between initiating probes. Every time th -- [[ 分流模块 ]] if #nodes_table > 0 then o = s:option(Flag, option_name("preproxy_enabled"), translate("Preproxy")) - o:depends({ [option_name("protocol")] = "_shunt" }) + add_xray_depends(o, { [option_name("protocol")] = "_shunt" }) add_v2ray_depends(o, { [option_name("protocol")] = "_shunt" }) o = s:option(Value, option_name("main_node"), string.format('%s', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including Default) has a separate switch that controls whether this rule uses the pre-proxy or not.")) - o:depends({ [option_name("protocol")] = "_shunt", [option_name("preproxy_enabled")] = true }) + add_xray_depends(o, { [option_name("protocol")] = "_shunt", [option_name("preproxy_enabled")] = true }) add_v2ray_depends(o, { [option_name("protocol")] = "_shunt", [option_name("preproxy_enabled")] = true }) for k, v in pairs(balancers_table) do o:value(v.id, v.remarks) @@ -186,7 +186,7 @@ uci:foreach(appname, "shunt_rules", function(e) o:value("_default", translate("Default")) o:value("_direct", translate("Direct Connection")) o:value("_blackhole", translate("Blackhole")) - o:depends({ [option_name("protocol")] = "_shunt" }) + add_xray_depends(o, { [option_name("protocol")] = "_shunt" }) add_v2ray_depends(o, { [option_name("protocol")] = "_shunt" }) if #nodes_table > 0 then @@ -215,10 +215,12 @@ o.rawhtml = true o.cfgvalue = function(t, n) return string.format('%s', translate("No shunt rules? Click me to go to add.")) end -o:depends({ [option_name("protocol")] = "_shunt" }) +add_xray_depends(o, { [option_name("protocol")] = "_shunt" }) +add_v2ray_depends(o, { [option_name("protocol")] = "_shunt" }) local o = s:option(Value, option_name("default_node"), string.format('* %s', translate("Default"))) -o:depends({ [option_name("protocol")] = "_shunt" }) +add_xray_depends(o, { [option_name("protocol")] = "_shunt" }) +add_v2ray_depends(o, { [option_name("protocol")] = "_shunt" }) o:value("_direct", translate("Direct Connection")) o:value("_blackhole", translate("Blackhole")) @@ -248,45 +250,33 @@ o.description = "
" -o:depends({ [option_name("protocol")] = "_shunt" }) +add_xray_depends(o, { [option_name("protocol")] = "_shunt" }) +add_v2ray_depends(o, { [option_name("protocol")] = "_shunt" }) o = s:option(ListValue, option_name("domainMatcher"), translate("Domain matcher")) o:value("hybrid") o:value("linear") -o:depends({ [option_name("protocol")] = "_shunt" }) +add_xray_depends(o, { [option_name("protocol")] = "_shunt" }) +add_v2ray_depends(o, { [option_name("protocol")] = "_shunt" }) -- [[ 分流模块 End ]] o = s:option(Value, option_name("address"), translate("Address (Support Domain Name)")) -add_xray_depends(o, { [option_name("protocol")] = "vmess" }) -add_xray_depends(o, { [option_name("protocol")] = "vless" }) -add_xray_depends(o, { [option_name("protocol")] = "http" }) -add_xray_depends(o, { [option_name("protocol")] = "socks" }) -add_xray_depends(o, { [option_name("protocol")] = "shadowsocks" }) -add_xray_depends(o, { [option_name("protocol")] = "trojan" }) -add_xray_depends(o, { [option_name("protocol")] = "wireguard" }) -add_v2ray_depends(o, { [option_name("protocol")] = "vmess" }) -add_v2ray_depends(o, { [option_name("protocol")] = "vless" }) -add_v2ray_depends(o, { [option_name("protocol")] = "http" }) -add_v2ray_depends(o, { [option_name("protocol")] = "socks" }) -add_v2ray_depends(o, { [option_name("protocol")] = "shadowsocks" }) -add_v2ray_depends(o, { [option_name("protocol")] = "trojan" }) o = s:option(Value, option_name("port"), translate("Port")) o.datatype = "port" -add_xray_depends(o, { [option_name("protocol")] = "vmess" }) -add_xray_depends(o, { [option_name("protocol")] = "vless" }) -add_xray_depends(o, { [option_name("protocol")] = "http" }) -add_xray_depends(o, { [option_name("protocol")] = "socks" }) -add_xray_depends(o, { [option_name("protocol")] = "shadowsocks" }) -add_xray_depends(o, { [option_name("protocol")] = "trojan" }) -add_xray_depends(o, { [option_name("protocol")] = "wireguard" }) -add_v2ray_depends(o, { [option_name("protocol")] = "vmess" }) -add_v2ray_depends(o, { [option_name("protocol")] = "vless" }) -add_v2ray_depends(o, { [option_name("protocol")] = "http" }) -add_v2ray_depends(o, { [option_name("protocol")] = "socks" }) -add_v2ray_depends(o, { [option_name("protocol")] = "shadowsocks" }) -add_v2ray_depends(o, { [option_name("protocol")] = "trojan" }) + +local protocols = s.fields[option_name("protocol")].keylist +if #protocols > 0 then + for index, value in ipairs(protocols) do + if not value:find("_") then + add_xray_depends(s.fields[option_name("address")], { [option_name("protocol")] = value }) + add_v2ray_depends(s.fields[option_name("address")], { [option_name("protocol")] = value }) + add_xray_depends(s.fields[option_name("port")], { [option_name("protocol")] = value }) + add_v2ray_depends(s.fields[option_name("port")], { [option_name("protocol")] = value }) + end + end +end o = s:option(Value, option_name("username"), translate("Username")) add_xray_depends(o, { [option_name("protocol")] = "http" }) diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua index cfe1aa389..83b7b6762 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua @@ -528,5 +528,14 @@ for key, value in pairs(s.fields) do s.fields[key].write = rm_prefix_write s.fields[key].remove = rm_prefix_remove end + + local deps = s.fields[key].deps + if #deps > 0 then + for index, value in ipairs(deps) do + deps[index]["type"] = type_name + end + else + s.fields[key]:depends({ type = type_name }) + end end end