Modular 、Functional enhancement

This commit is contained in:
刘河
2019-04-08 17:01:08 +08:00
parent 0c87b4119a
commit 824b12a2f8
41 changed files with 754 additions and 242 deletions

View File

@@ -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")
}
//加载模板

View File

@@ -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 {

View File

@@ -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")

View File

@@ -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)