mirror of
https://github.com/ehang-io/nps.git
synced 2025-09-02 03:16:53 +00:00
Modular 、Functional enhancement
This commit is contained in:
@@ -49,6 +49,10 @@ func (s *BaseController) Prepare() {
|
||||
s.Data["allow_rate_limit"], _ = beego.AppConfig.Bool("allow_rate_limit")
|
||||
s.Data["allow_connection_num_limit"], _ = beego.AppConfig.Bool("allow_connection_num_limit")
|
||||
s.Data["allow_multi_ip"], _ = beego.AppConfig.Bool("allow_multi_ip")
|
||||
s.Data["system_info_display"], _ = beego.AppConfig.Bool("system_info_display")
|
||||
s.Data["allow_tunnel_num_limit"], _ = beego.AppConfig.Bool("allow_tunnel_num_limit")
|
||||
s.Data["allow_local_proxy"], _ = beego.AppConfig.Bool("allow_local_proxy")
|
||||
s.Data["allow_user_change_username"], _ = beego.AppConfig.Bool("allow_user_change_username")
|
||||
}
|
||||
|
||||
//加载模板
|
||||
|
@@ -54,6 +54,7 @@ func (s *ClientController) Add() {
|
||||
MaxConn: s.GetIntNoErr("max_conn"),
|
||||
WebUserName: s.GetString("web_username"),
|
||||
WebPassword: s.GetString("web_password"),
|
||||
MaxTunnelNum: s.GetIntNoErr("max_tunnel"),
|
||||
Flow: &file.Flow{
|
||||
ExportFlow: 0,
|
||||
InletFlow: 0,
|
||||
@@ -116,13 +117,17 @@ func (s *ClientController) Edit() {
|
||||
c.Flow.FlowLimit = int64(s.GetIntNoErr("flow_limit"))
|
||||
c.RateLimit = s.GetIntNoErr("rate_limit")
|
||||
c.MaxConn = s.GetIntNoErr("max_conn")
|
||||
c.MaxTunnelNum = s.GetIntNoErr("max_tunnel")
|
||||
}
|
||||
c.Remark = s.GetString("remark")
|
||||
c.Cnf.U = s.GetString("u")
|
||||
c.Cnf.P = s.GetString("p")
|
||||
c.Cnf.Compress = common.GetBoolByStr(s.GetString("compress"))
|
||||
c.Cnf.Crypt = s.GetBoolNoErr("crypt")
|
||||
c.WebUserName = s.GetString("web_username")
|
||||
b, err := beego.AppConfig.Bool("allow_user_change_username")
|
||||
if s.GetSession("isAdmin").(bool) || (err == nil && b) {
|
||||
c.WebUserName = s.GetString("web_username")
|
||||
}
|
||||
c.WebPassword = s.GetString("web_password")
|
||||
c.ConfigConnAllow = s.GetBoolNoErr("config_conn_allow")
|
||||
if c.Rate != nil {
|
||||
|
@@ -93,7 +93,7 @@ func (s *IndexController) Add() {
|
||||
Port: s.GetIntNoErr("port"),
|
||||
ServerIp: s.GetString("server_ip"),
|
||||
Mode: s.GetString("type"),
|
||||
Target: &file.Target{TargetStr: s.GetString("target")},
|
||||
Target: &file.Target{TargetStr: s.GetString("target"), LocalProxy: s.GetBoolNoErr("local_proxy")},
|
||||
Id: int(file.GetDb().JsonDb.GetTaskId()),
|
||||
Status: true,
|
||||
Remark: s.GetString("remark"),
|
||||
@@ -109,6 +109,9 @@ func (s *IndexController) Add() {
|
||||
if t.Client, err = file.GetDb().GetClient(s.GetIntNoErr("client_id")); err != nil {
|
||||
s.AjaxErr(err.Error())
|
||||
}
|
||||
if t.Client.MaxTunnelNum != 0 && t.Client.GetTunnelNum() >= t.Client.MaxTunnelNum {
|
||||
s.AjaxErr("The number of tunnels exceeds the limit")
|
||||
}
|
||||
if err := file.GetDb().NewTask(t); err != nil {
|
||||
s.AjaxErr(err.Error())
|
||||
}
|
||||
@@ -166,6 +169,7 @@ func (s *IndexController) Edit() {
|
||||
t.LocalPath = s.GetString("local_path")
|
||||
t.StripPre = s.GetString("strip_pre")
|
||||
t.Remark = s.GetString("remark")
|
||||
t.Target.LocalProxy = s.GetBoolNoErr("local_proxy")
|
||||
file.GetDb().UpdateTask(t)
|
||||
server.StopServer(t.Id)
|
||||
server.StartTask(t.Id)
|
||||
@@ -244,7 +248,7 @@ func (s *IndexController) AddHost() {
|
||||
h := &file.Host{
|
||||
Id: int(file.GetDb().JsonDb.GetHostId()),
|
||||
Host: s.GetString("host"),
|
||||
Target: &file.Target{TargetStr: s.GetString("target")},
|
||||
Target: &file.Target{TargetStr: s.GetString("target"), LocalProxy: s.GetBoolNoErr("local_proxy")},
|
||||
HeaderChange: s.GetString("header"),
|
||||
HostChange: s.GetString("hostchange"),
|
||||
Remark: s.GetString("remark"),
|
||||
@@ -304,6 +308,7 @@ func (s *IndexController) EditHost() {
|
||||
h.Scheme = s.GetString("scheme")
|
||||
h.KeyFilePath = s.GetString("key_file_path")
|
||||
h.CertFilePath = s.GetString("cert_file_path")
|
||||
h.Target.LocalProxy = s.GetBoolNoErr("local_proxy")
|
||||
file.GetDb().JsonDb.StoreHostToJsonFile()
|
||||
}
|
||||
s.AjaxOk("modified success")
|
||||
|
@@ -13,6 +13,7 @@ type LoginController struct {
|
||||
}
|
||||
|
||||
func (self *LoginController) Index() {
|
||||
self.Data["register_allow"], _ = beego.AppConfig.Bool("allow_user_register")
|
||||
self.TplName = "login/index.html"
|
||||
}
|
||||
func (self *LoginController) Verify() {
|
||||
@@ -55,6 +56,37 @@ func (self *LoginController) Verify() {
|
||||
}
|
||||
self.ServeJSON()
|
||||
}
|
||||
func (self *LoginController) Register() {
|
||||
if self.Ctx.Request.Method == "GET" {
|
||||
self.TplName = "login/register.html"
|
||||
} else {
|
||||
if b, err := beego.AppConfig.Bool("allow_user_register"); err != nil || !b {
|
||||
self.Data["json"] = map[string]interface{}{"status": 0, "msg": "register is not allow"}
|
||||
self.ServeJSON()
|
||||
return
|
||||
}
|
||||
if self.GetString("username") == "" || self.GetString("password") == "" || self.GetString("username") == beego.AppConfig.String("web_username") {
|
||||
self.Data["json"] = map[string]interface{}{"status": 0, "msg": "please check your input"}
|
||||
self.ServeJSON()
|
||||
return
|
||||
}
|
||||
t := &file.Client{
|
||||
Id: int(file.GetDb().JsonDb.GetClientId()),
|
||||
Status: true,
|
||||
Cnf: &file.Config{},
|
||||
WebUserName: self.GetString("username"),
|
||||
WebPassword: self.GetString("password"),
|
||||
Flow: &file.Flow{},
|
||||
}
|
||||
if err := file.GetDb().NewClient(t); err != nil {
|
||||
self.Data["json"] = map[string]interface{}{"status": 0, "msg": err.Error()}
|
||||
} else {
|
||||
self.Data["json"] = map[string]interface{}{"status": 1, "msg": "register success"}
|
||||
}
|
||||
self.ServeJSON()
|
||||
}
|
||||
}
|
||||
|
||||
func (self *LoginController) Out() {
|
||||
self.SetSession("auth", false)
|
||||
self.Redirect("/login/index", 302)
|
||||
|
Reference in New Issue
Block a user