From: Yousong Zhou <yszhou4tech@gmail.com>
Date: Thu, 9 May 2019 06:00:52 +0000 (+0000)
Subject: luci-app-shadowsocks-libev: move plugin options to server sections
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=62d8a4fdd71540dba56fa4c982df2b753a49996d;p=oweals%2Fluci.git

luci-app-shadowsocks-libev: move plugin options to server sections

In this change, plugin options are moved from component settings to
only server settings.  This should make the configuration easier.  And
it will be less error-prone as it's impossible now for users to
inconsisitent plugin settings for instances referring to the same remote
server

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
---

diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua
index 195a31f2f..c6323b4df 100644
--- a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua
+++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua
@@ -27,7 +27,7 @@ ss.option_install_package(s, "general")
 ss.options_common(s, "advanced")
 
 if stype == "ss_server" then
-	ss.options_server(s, "general")
+	ss.options_server(s, {tab="general"})
 	o = s:taboption("general", Value, "bind_address",
 		translate("Bind address"),
 		translate("The address ss-server will initiate connection from"))
diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua
index a0d007927..ec601c4fe 100644
--- a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua
+++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua
@@ -19,13 +19,18 @@ if sname then
 	end
 	s = m:section(NamedSection, sname, "server")
 	m.title = m.title .. ' - ' .. sname
+	opts = {}
 else
 	s = m:section(TypedSection, "server")
 	s.template = 'cbi/tblsection'
 	s.addremove = true
+	s.extedit = function(self, section)
+		return 'servers/' .. section
+	end
+	opts = {row=true}
 end
 
 s:option(Flag, "disabled", translate("Disable"))
-ss.options_server(s)
+ss.options_server(s, opts)
 
 return m
diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
index a3c9ed16b..abb6ce8d4 100644
--- a/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
+++ b/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
@@ -76,9 +76,11 @@ function options_client(s, tab)
 	o.datatype = "port"
 end
 
-function options_server(s, tab)
+function options_server(s, opts)
 	local o
 	local optfunc
+	local tab = opts and opts.tab or nil
+	local row = opts and opts.row or false
 
 	if tab == nil then
 		optfunc = function(...) return s:option(...) end
@@ -96,13 +98,17 @@ function options_server(s, tab)
 	for _, m in ipairs(methods) do
 		o:value(m)
 	end
-	o = optfunc(Value, "key", translate("Key (base64)"))
-	o.datatype = "base64"
-	o.password = true
-	o.size = 12
 	o = optfunc(Value, "password", translate("Password"))
 	o.password = true
 	o.size = 12
+	if not row then
+		o = optfunc(Value, "key", translate("Key (base64)"))
+		o.datatype = "base64"
+		o.password = true
+		o.size = 12
+		optfunc(Value, "plugin", translate("Plugin"))
+		optfunc(Value, "plugin_opts", translate("Plugin Options"))
+	end
 end
 
 function options_common(s, tab)
@@ -117,8 +123,6 @@ function options_common(s, tab)
 	o.datatype = "uinteger"
 	o = s:taboption(tab, Value, "timeout", translate("Timeout (sec)"))
 	o.datatype = "uinteger"
-	s:taboption(tab, Value, "plugin", translate("Plugin"))
-	s:taboption(tab, Value, "plugin_opts", translate("Plugin Options"))
 	s:taboption(tab, Value, "user", translate("Run as"))
 
 	s:taboption(tab, Flag, "verbose", translate("Verbose"))
@@ -213,6 +217,8 @@ names_options_server = {
 	"method",
 	"key",
 	"password",
+	"plugin",
+	"plugin_opts",
 }
 
 names_options_client = {
@@ -230,8 +236,6 @@ names_options_common = {
 	"mode",
 	"mtu",
 	"timeout",
-	"plugin",
-	"plugin_opts",
 	"user",
 }