157 lines
3.6 KiB
Lua
157 lines
3.6 KiB
Lua
local m,s,o
|
|
local bypass="bypass"
|
|
local sid=arg[1]
|
|
local A=luci.sys.call("which obfs-server >/dev/null")
|
|
local B=luci.sys.call("which v2ray-plugin >/dev/null")
|
|
|
|
local encrypt_methods_ss={
|
|
"aes-128-gcm",
|
|
"aes-192-gcm",
|
|
"aes-256-gcm",
|
|
"chacha20-ietf-poly1305",
|
|
"xchacha20-ietf-poly1305",
|
|
"rc4-md5",
|
|
"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",
|
|
"salsa20",
|
|
"chacha20",
|
|
"chacha20-ietf",
|
|
}
|
|
|
|
local encrypt_methods={
|
|
"table",
|
|
"rc4",
|
|
"rc4-md5",
|
|
"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",
|
|
}
|
|
|
|
local obfs={
|
|
"plain",
|
|
"http_simple",
|
|
"http_post",
|
|
"tls1.2_ticket_auth",
|
|
}
|
|
|
|
m=Map(bypass,translate("Edit Server"))
|
|
m.redirect=luci.dispatcher.build_url("admin/services/bypass/server")
|
|
if m.uci:get(bypass,sid)~="server_config" then
|
|
luci.http.redirect(m.redirect)
|
|
return
|
|
end
|
|
|
|
s=m:section(NamedSection,sid,"server_config")
|
|
s.anonymous=true
|
|
s.addremove=false
|
|
|
|
o=s:option(Flag,"enable",translate("Enable"))
|
|
|
|
o=s:option(ListValue,"type",translate("Server Type"))
|
|
if luci.sys.call("which ss-server >/dev/null")==0 then
|
|
o:value("ss",translate("Shadowsocks New Version"))
|
|
end
|
|
if luci.sys.call("which ssr-server >/dev/null")==0 then
|
|
o:value("ssr",translate("ShadowsocksR"))
|
|
end
|
|
if luci.sys.call("which microsocks >/dev/null")==0 then
|
|
o:value("socks5",translate("Socks5"))
|
|
end
|
|
|
|
o=s:option(Value,"server_port",translate("Server Port"))
|
|
o.datatype="port"
|
|
math.randomseed(tostring(os.time()):reverse():sub(1,7))
|
|
o.default=math.random(10240,20480)
|
|
o.rmempty=false
|
|
o.description=translate("Warning! Please do not reuse the port!")
|
|
|
|
o=s:option(Flag,"auth_enable",translate("Enable Authentication"))
|
|
o:depends("type","socks5")
|
|
|
|
o=s:option(Flag,"auth_once",translate("Enable Once Auth Mode"),
|
|
translate("Enable Once Auth,the client IP that passed the authentication will be added to the whitelist address, this IP no longer needs to be verified"))
|
|
o:depends("auth_enable",1)
|
|
|
|
o=s:option(Value,"username",translate("Username"))
|
|
o:depends("auth_enable",1)
|
|
|
|
o=s:option(Value,"password",translate("Password"))
|
|
o.password=true
|
|
o:depends("type","ssr")
|
|
o:depends("type","ss")
|
|
o:depends("auth_enable",1)
|
|
|
|
o=s:option(ListValue,"encrypt_method_ss",translate("Encrypt Method"))
|
|
for _,v in ipairs(encrypt_methods_ss) do o:value(v) end
|
|
o:depends("type","ss")
|
|
|
|
if A==0 or B==0 then
|
|
o=s:option(ListValue,"plugin",translate("Plugin"))
|
|
o:value("",translate("Disable"))
|
|
if A==0 then
|
|
o:value("obfs-server",translate("simple-obfs"))
|
|
end
|
|
if B==0 then
|
|
o:value("v2ray-plugin",translate("v2ray-plugin"))
|
|
end
|
|
o:depends("type","ss")
|
|
end
|
|
|
|
o=s:option(Value,"plugin_opts",translate("Plugin Opts"))
|
|
o:depends("plugin","obfs-local")
|
|
o:depends("plugin","v2ray-plugin")
|
|
|
|
o=s:option(ListValue,"encrypt_method",translate("Encrypt Method"))
|
|
for _,v in ipairs(encrypt_methods) do o:value(v) end
|
|
o:depends("type","ssr")
|
|
|
|
o=s:option(ListValue,"protocol",translate("Protocol"))
|
|
for _,v in ipairs(protocol) do o:value(v) end
|
|
o:depends("type","ssr")
|
|
|
|
o=s:option(ListValue,"obfs",translate("Obfs"))
|
|
for _,v in ipairs(obfs) do o:value(v) end
|
|
o:depends("type","ssr")
|
|
|
|
o=s:option(Value,"obfs_param",translate("Obfs param(optional)"))
|
|
o:depends("type","ssr")
|
|
|
|
o=s:option(Value,"timeout",translate("Connection Timeout"))
|
|
o.datatype="uinteger"
|
|
o.placeholder=60
|
|
o:depends("type","ss")
|
|
o:depends("type","ssr")
|
|
|
|
o=s:option(Flag,"fast_open",translate("TCP Fast Open"))
|
|
o:depends("type","ss")
|
|
o:depends("type","ssr")
|
|
|
|
return m
|