| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | 
							- -- Copyright (C) 2017 yushi studio <[email protected]>
 
- -- Licensed to the public under the GNU General Public License v3.
 
- require "luci.http"
 
- require "luci.dispatcher"
 
- require "nixio.fs"
 
- local m, s, o
 
- local shadowsocksr = "shadowsocksr"
 
- local sid = arg[1]
 
- local encrypt_methods = {
 
- 	"rc4-md5",
 
- 	"rc4-md5-6",
 
- 	"rc4",
 
- 	"table",
 
- 	"aes-128-cfb",
 
- 	"aes-192-cfb",
 
- 	"aes-256-cfb",
 
- 	"aes-128-ctr",
 
- 	"aes-192-ctr",
 
- 	"aes-256-ctr",
 
- 	"bf-cfb",
 
- 	"camellia-128-cfb",
 
- 	"camellia-192-cfb",
 
- 	"camellia-256-cfb",
 
- 	"cast5-cfb",
 
- 	"des-cfb",
 
- 	"idea-cfb",
 
- 	"rc2-cfb",
 
- 	"seed-cfb",
 
- 	"salsa20",
 
- 	"chacha20",
 
- 	"chacha20-ietf",
 
- }
 
- local protocol = {
 
- 	"origin",
 
- }
 
- obfs = {
 
- 	"plain",
 
- 	"http_simple",
 
- 	"http_post",
 
- }
 
- m = Map(shadowsocksr, translate("Edit ShadowSocksR Server"))
 
- m.redirect = luci.dispatcher.build_url("admin/services/shadowsocksr/server")
 
- if m.uci:get(shadowsocksr, sid) ~= "server_config" then
 
- 	luci.http.redirect(m.redirect)
 
- 	return
 
- end
 
- -- [[ Server Setting ]]--
 
- s = m:section(NamedSection, sid, "server_config")
 
- s.anonymous = true
 
- s.addremove   = false
 
- o = s:option(Flag, "enable", translate("Enable"))
 
- o.default = 1
 
- o.rmempty = false
 
- o = s:option(ListValue, "type", translate("Server Type"))
 
- o:value("socks5", translate("Socks5"))
 
- if nixio.fs.access("/usr/bin/ss-server") then
 
- o:value("ssr", translate("ShadowsocksR"))
 
- end
 
- o.default = "socks5"
 
- o = s:option(Value, "server_port", translate("Server Port"))
 
- o.datatype = "port"
 
- o.default = 8388
 
- o.rmempty = false
 
- o = s:option(Value, "timeout", translate("Connection Timeout"))
 
- o.datatype = "uinteger"
 
- o.default = 60
 
- o.rmempty = false
 
- o:depends("type", "ssr")
 
- o = s:option(Value, "username", translate("Username"))
 
- o.rmempty = false
 
- o:depends("type", "socks5")
 
- o = s:option(Value, "password", translate("Password"))
 
- o.password = true
 
- o.rmempty = false
 
- o = s:option(ListValue, "encrypt_method", translate("Encrypt Method"))
 
- for _, v in ipairs(encrypt_methods) do o:value(v) end
 
- o.rmempty = false
 
- o:depends("type", "ssr")
 
- o = s:option(ListValue, "protocol", translate("Protocol"))
 
- for _, v in ipairs(protocol) do o:value(v) end
 
- o.rmempty = false
 
- o:depends("type", "ssr")
 
- o = s:option(ListValue, "obfs", translate("Obfs"))
 
- for _, v in ipairs(obfs) do o:value(v) end
 
- o.rmempty = false
 
- o:depends("type", "ssr")
 
- o = s:option(Value, "obfs_param", translate("Obfs param(optional)"))
 
- o:depends("type", "ssr")
 
- o = s:option(Flag, "fast_open", translate("TCP Fast Open"))
 
- o.rmempty = false
 
- o:depends("type", "ssr")
 
- return m
 
 
  |