mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-15 18:03:30 +00:00
242 lines
7.1 KiB
Lua
242 lines
7.1 KiB
Lua
local o = require"luci.dispatcher"
|
|
local e = require("luci.model.ipkg")
|
|
local s = require"nixio.fs"
|
|
local e = luci.model.uci.cursor()
|
|
local i = "frp"
|
|
local a,t,e
|
|
local n = {}
|
|
|
|
a = Map("frp")
|
|
a.title = translate("Frp Setting")
|
|
a.description = translate("Frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.")
|
|
|
|
a:section(SimpleSection).template="frp/frp_status"
|
|
|
|
t = a:section(NamedSection, "common","frp")
|
|
t.anonymous = true
|
|
t.addremove = false
|
|
|
|
t:tab("base", translate("Basic Settings"))
|
|
t:tab("other", translate("Other Settings"))
|
|
t:tab("log", translate("Client Log"))
|
|
|
|
e = t:taboption("base", Flag, "enabled", translate("Enabled"))
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("base", Value, "server_addr", translate("Server"))
|
|
e.optional = false
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("base", Value, "server_port", translate("Port"))
|
|
e.datatype = "port"
|
|
e.optional = false
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("base", Value, "token", translate("Token"))
|
|
e.description = translate("Time duration between server of frpc and frps mustn't exceed 15 minutes.")
|
|
e.optional = false
|
|
e.password = true
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("base", Value, "user", translate("User"))
|
|
e.description = translate("Commonly used to distinguish you with other clients.")
|
|
e.optional = true
|
|
e.default = ""
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("base", Value, "vhost_http_port", translate("Vhost HTTP Port"))
|
|
e.datatype = "port"
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("base", Value, "vhost_https_port", translate("Vhost HTTPS Port"))
|
|
e.datatype = "port"
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("base", Value, "time", translate("Service registration interval"))
|
|
e.description = translate("0 means disable this feature, unit: min")
|
|
e.datatype = "range(0,59)"
|
|
e.default = 30
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("other", Flag, "login_fail_exit", translate("Exit program when first login failed"))
|
|
e.description = translate("decide if exit program when first login failed, otherwise continuous relogin to frps.")
|
|
e.default = "1"
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("other", Flag, "tcp_mux", translate("TCP Stream Multiplexing"))
|
|
e.description = translate("Default is Ture. This feature in frps.ini and frpc.ini must be same.")
|
|
e.default = "1"
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("other", Flag, "tls_enable", translate("Use TLS Connection"))
|
|
e.description = translate("if tls_enable is true, frpc will connect frps by tls.")
|
|
e.default = "0"
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("other", ListValue, "protocol", translate("Protocol Type"))
|
|
e.description = translate("Frp support kcp protocol since v0.12.0")
|
|
e.default = "tcp"
|
|
e:value("tcp", translate("TCP Protocol"))
|
|
e:value("kcp", translate("KCP Protocol"))
|
|
|
|
e = t:taboption("other", Flag, "enable_http_proxy", translate("Connect frps by HTTP PROXY"))
|
|
e.description = translate("frpc can connect frps using HTTP PROXY")
|
|
e.default = "0"
|
|
e.rmempty = false
|
|
e:depends("protocol","tcp")
|
|
|
|
e = t:taboption("other", Value, "http_proxy", translate("HTTP PROXY"))
|
|
e.datatype = "uinteger"
|
|
e.placeholder = "http://user:pwd@192.168.1.128:8080"
|
|
e:depends("enable_http_proxy",1)
|
|
e.optional = false
|
|
|
|
e = t:taboption("other", Flag, "enable_cpool", translate("Enable Connection Pool"))
|
|
e.description = translate("This feature is fit for a large number of short connections.")
|
|
e.rmempty = false
|
|
|
|
e = t:taboption("other", Value, "pool_count", translate("Connection Pool"))
|
|
e.description = translate("Connections will be established in advance.")
|
|
e.datatype = "uinteger"
|
|
e.default = "1"
|
|
e:depends("enable_cpool",1)
|
|
e.optional=false
|
|
|
|
e = t:taboption("other", ListValue, "log_level", translate("Log Level"))
|
|
e.default = "warn"
|
|
e:value("trace", translate("Trace"))
|
|
e:value("debug", translate("Debug"))
|
|
e:value("info", translate("Info"))
|
|
e:value("warn", translate("Warning"))
|
|
e:value("error", translate("Error"))
|
|
|
|
e = t:taboption("other", Value, "log_max_days", translate("Log Keepd Max Days"))
|
|
e.datatype = "uinteger"
|
|
e.default = "3"
|
|
e.rmempty = false
|
|
e.optional = false
|
|
|
|
e = t:taboption("other", Flag, "admin_enable", translate("Enable Web API"))
|
|
e.description = translate("set admin address for control frpc's action by http api such as reload.")
|
|
e.default = "0"
|
|
e.rmempty=false
|
|
|
|
e = t:taboption("other", Value, "admin_port", translate("Admin Web Port"))
|
|
e.datatype = "port"
|
|
e.default = 7400
|
|
e.rmempty = false
|
|
e:depends("admin_enable",1)
|
|
|
|
e = t:taboption("other", Value, "admin_user", translate("Admin Web UserName"))
|
|
e.optional = false
|
|
e.default = "admin"
|
|
e.rmempty=false
|
|
e:depends("admin_enable",1)
|
|
|
|
e = t:taboption("other", Value, "admin_pwd", translate("Admin Web PassWord"))
|
|
e.optional = false
|
|
e.default = "admin"
|
|
e.password = true
|
|
e.rmempty = false
|
|
e:depends("admin_enable",1)
|
|
|
|
e = t:taboption("log", TextValue,"log")
|
|
e.rows = 26
|
|
e.wrap = "off"
|
|
e.readonly = true
|
|
e.cfgvalue = function(t,t)
|
|
return s.readfile("/var/etc/frp/frpc.log")or""
|
|
end
|
|
e.write = function(e,e,e)
|
|
end
|
|
|
|
t = a:section(TypedSection, "proxy", translate("Services List"))
|
|
t.anonymous = true
|
|
t.addremove = true
|
|
t.template = "cbi/tblsection"
|
|
t.extedit = o.build_url("admin","services","frp","config","%s")
|
|
|
|
function t.create(e,t)
|
|
new = TypedSection.create(e,t)
|
|
luci.http.redirect(e.extedit:format(new))
|
|
end
|
|
|
|
function t.remove(e,t)
|
|
e.map.proceed = true
|
|
e.map:del(t)
|
|
luci.http.redirect(o.build_url("admin","services","frp"))
|
|
end
|
|
|
|
local o = ""
|
|
e = t:option(DummyValue, "remark", translate("Service Remark Name"))
|
|
e.width="10%"
|
|
|
|
e = t:option(DummyValue, "type", translate("Frp Protocol Type"))
|
|
e.width="10%"
|
|
|
|
e = t:option(DummyValue, "custom_domains", translate("Domain/Subdomain"))
|
|
e.width="20%"
|
|
|
|
e.cfgvalue = function(t,n)
|
|
local t = a.uci:get(i,n,"domain_type")or""
|
|
local m = a.uci:get(i,n,"type")or""
|
|
if t=="custom_domains" then
|
|
local b = a.uci:get(i,n,"custom_domains")or"" return b end
|
|
if t=="subdomain" then
|
|
local b = a.uci:get(i,n,"subdomain")or"" return b end
|
|
if t=="both_dtype" then
|
|
local b = a.uci:get(i,n,"custom_domains")or""
|
|
local c = a.uci:get(i,n,"subdomain")or""
|
|
b="%s/%s"%{b,c} return b end
|
|
if m=="tcp" or m=="udp" then
|
|
local b=a.uci:get(i,"common","server_addr")or"" return b end
|
|
end
|
|
|
|
e = t:option(DummyValue,"remote_port",translate("Remote Port"))
|
|
e.width = "10%"
|
|
e.cfgvalue = function(t,b)
|
|
local t = a.uci:get(i,b,"type")or""
|
|
if t==""or b==""then return""end
|
|
if t=="http" then
|
|
local b = a.uci:get(i,"common","vhost_http_port")or"" return b end
|
|
if t=="https" then
|
|
local b = a.uci:get(i,"common","vhost_https_port")or"" return b end
|
|
if t=="tcp" or t=="udp" then
|
|
local b = a.uci:get(i,b,"remote_port")or"" return b end
|
|
end
|
|
|
|
e = t:option(DummyValue, "local_ip", translate("Local Host Address"))
|
|
e.width = "15%"
|
|
|
|
e = t:option(DummyValue, "local_port", translate("Local Host Port"))
|
|
e.width = "10%"
|
|
|
|
e = t:option(DummyValue, "use_encryption", translate("Use Encryption"))
|
|
e.width = "15%"
|
|
|
|
e.cfgvalue = function(t,n)
|
|
local t=a.uci:get(i,n,"use_encryption")or""
|
|
local b
|
|
if t==""or b==""then return""end
|
|
if t=="1" then b="ON"
|
|
else b="OFF" end
|
|
return b
|
|
end
|
|
|
|
e = t:option(DummyValue, "use_compression", translate("Use Compression"))
|
|
e.width = "15%"
|
|
e.cfgvalue = function(t,n)
|
|
local t = a.uci:get(i,n,"use_compression")or""
|
|
local b
|
|
if t==""or b==""then return""end
|
|
if t=="1" then b="ON"
|
|
else b="OFF" end
|
|
return b
|
|
end
|
|
|
|
e = t:option(Flag, "enable", translate("Enable State"))
|
|
e.width = "10%"
|
|
e.rmempty = false
|
|
|
|
return a
|