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 = "
- " .. translate("'AsIs': Only use domain for routi
.. "
- " .. translate("'IPIfNonMatch': When no rule matches current domain, resolves it into IP addresses (A or AAAA records) and try all rules again.")
.. "
- " .. translate("'IPOnDemand': As long as there is a IP-based rule, resolves the domain into IP immediately.")
.. "
"
-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