mirror of
https://github.com/ehang-io/nps.git
synced 2025-09-02 03:16:53 +00:00
Code optimization
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"github.com/cnlh/nps/lib/file"
|
||||
"github.com/cnlh/nps/lib/rate"
|
||||
"github.com/cnlh/nps/server"
|
||||
"github.com/cnlh/nps/vender/github.com/astaxie/beego"
|
||||
)
|
||||
|
||||
type ClientController struct {
|
||||
@@ -26,7 +27,7 @@ func (s *ClientController) List() {
|
||||
} else {
|
||||
clientId = clientIdSession.(int)
|
||||
}
|
||||
list, cnt := server.GetClientList(start, length, s.GetString("search"), clientId)
|
||||
list, cnt := server.GetClientList(start, length, s.GetString("search"), s.GetString("sort"), s.GetString("order"), clientId)
|
||||
s.AjaxTable(list, cnt, cnt)
|
||||
}
|
||||
|
||||
@@ -51,6 +52,8 @@ func (s *ClientController) Add() {
|
||||
ConfigConnAllow: s.GetBoolNoErr("config_conn_allow"),
|
||||
RateLimit: s.GetIntNoErr("rate_limit"),
|
||||
MaxConn: s.GetIntNoErr("max_conn"),
|
||||
WebUserName: s.GetString("web_username"),
|
||||
WebPassword: s.GetString("web_password"),
|
||||
Flow: &file.Flow{
|
||||
ExportFlow: 0,
|
||||
InletFlow: 0,
|
||||
@@ -98,20 +101,29 @@ func (s *ClientController) Edit() {
|
||||
if c, err := file.GetCsvDb().GetClient(id); err != nil {
|
||||
s.error()
|
||||
} else {
|
||||
if !file.GetCsvDb().VerifyVkey(s.GetString("vkey"), c.Id) {
|
||||
s.AjaxErr("Vkey duplicate, please reset")
|
||||
if s.GetString("web_username") != "" {
|
||||
if s.GetString("web_username") == beego.AppConfig.String("web_username") || !file.GetCsvDb().VerifyUserName(s.GetString("web_username"), c.Id) {
|
||||
s.AjaxErr("web login username duplicate, please reset")
|
||||
return
|
||||
}
|
||||
}
|
||||
if s.GetSession("isAdmin").(bool) {
|
||||
if !file.GetCsvDb().VerifyVkey(s.GetString("vkey"), c.Id) {
|
||||
s.AjaxErr("Vkey duplicate, please reset")
|
||||
return
|
||||
}
|
||||
c.VerifyKey = s.GetString("vkey")
|
||||
c.Flow.FlowLimit = int64(s.GetIntNoErr("flow_limit"))
|
||||
c.RateLimit = s.GetIntNoErr("rate_limit")
|
||||
c.MaxConn = s.GetIntNoErr("max_conn")
|
||||
}
|
||||
c.VerifyKey = s.GetString("vkey")
|
||||
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")
|
||||
if s.GetSession("isAdmin").(bool) {
|
||||
c.Flow.FlowLimit = int64(s.GetIntNoErr("flow_limit"))
|
||||
c.RateLimit = s.GetIntNoErr("rate_limit")
|
||||
c.MaxConn = s.GetIntNoErr("max_conn")
|
||||
}
|
||||
c.WebUserName = s.GetString("web_username")
|
||||
c.WebPassword = s.GetString("web_password")
|
||||
c.ConfigConnAllow = s.GetBoolNoErr("config_conn_allow")
|
||||
if c.Rate != nil {
|
||||
c.Rate.Stop()
|
||||
@@ -148,7 +160,7 @@ func (s *ClientController) Del() {
|
||||
if err := file.GetCsvDb().DelClient(id); err != nil {
|
||||
s.AjaxErr("delete error")
|
||||
}
|
||||
server.DelTunnelAndHostByClientId(id)
|
||||
server.DelTunnelAndHostByClientId(id, false)
|
||||
server.DelClientConnect(id)
|
||||
s.AjaxOk("delete success")
|
||||
}
|
||||
|
@@ -93,7 +93,7 @@ func (s *IndexController) Add() {
|
||||
Port: s.GetIntNoErr("port"),
|
||||
ServerIp: s.GetString("server_ip"),
|
||||
Mode: s.GetString("type"),
|
||||
Target: s.GetString("target"),
|
||||
Target: &file.Target{TargetStr: s.GetString("target")},
|
||||
Id: int(file.GetCsvDb().GetTaskId()),
|
||||
Status: true,
|
||||
Remark: s.GetString("remark"),
|
||||
@@ -145,29 +145,30 @@ func (s *IndexController) Edit() {
|
||||
if t, err := file.GetCsvDb().GetTask(id); err != nil {
|
||||
s.error()
|
||||
} else {
|
||||
var portChange bool
|
||||
if client, err := file.GetCsvDb().GetClient(s.GetIntNoErr("client_id")); err != nil {
|
||||
s.AjaxErr("modified error,the client is not exist")
|
||||
return
|
||||
} else {
|
||||
t.Client = client
|
||||
}
|
||||
if s.GetIntNoErr("port") != t.Port {
|
||||
portChange = true
|
||||
if !tool.TestServerPort(s.GetIntNoErr("port"), t.Mode) {
|
||||
s.AjaxErr("The port cannot be opened because it may has been occupied or is no longer allowed.")
|
||||
return
|
||||
}
|
||||
t.Port = s.GetIntNoErr("port")
|
||||
}
|
||||
t.ServerIp = s.GetString("server_ip")
|
||||
t.Mode = s.GetString("type")
|
||||
t.Target = s.GetString("target")
|
||||
t.Target = &file.Target{TargetStr: s.GetString("target")}
|
||||
t.Password = s.GetString("password")
|
||||
t.Id = id
|
||||
t.LocalPath = s.GetString("local_path")
|
||||
t.StripPre = s.GetString("strip_pre")
|
||||
t.Remark = s.GetString("remark")
|
||||
if portChange && !tool.TestServerPort(t.Port, t.Mode) {
|
||||
s.AjaxErr("The port cannot be opened because it may has been occupied or is no longer allowed.")
|
||||
}
|
||||
if t.Client, err = file.GetCsvDb().GetClient(s.GetIntNoErr("client_id")); err != nil {
|
||||
s.AjaxErr("modified error")
|
||||
}
|
||||
file.GetCsvDb().UpdateTask(t)
|
||||
server.StopServer(t.Id)
|
||||
server.StartTask(t.Id)
|
||||
t.TargetArr = nil
|
||||
}
|
||||
s.AjaxOk("modified success")
|
||||
}
|
||||
@@ -243,7 +244,7 @@ func (s *IndexController) AddHost() {
|
||||
h := &file.Host{
|
||||
Id: int(file.GetCsvDb().GetHostId()),
|
||||
Host: s.GetString("host"),
|
||||
Target: s.GetString("target"),
|
||||
Target: &file.Target{TargetStr: s.GetString("target")},
|
||||
HeaderChange: s.GetString("header"),
|
||||
HostChange: s.GetString("hostchange"),
|
||||
Remark: s.GetString("remark"),
|
||||
@@ -277,20 +278,29 @@ func (s *IndexController) EditHost() {
|
||||
if h, err := file.GetCsvDb().GetHostById(id); err != nil {
|
||||
s.error()
|
||||
} else {
|
||||
if h.Host != s.GetString("host") {
|
||||
tmpHost := new(file.Host)
|
||||
tmpHost.Host = s.GetString("host")
|
||||
tmpHost.Location = s.GetString("location")
|
||||
tmpHost.Scheme = s.GetString("scheme")
|
||||
if file.GetCsvDb().IsHostExist(tmpHost) {
|
||||
s.AjaxErr("host has exist")
|
||||
return
|
||||
}
|
||||
}
|
||||
if client, err := file.GetCsvDb().GetClient(s.GetIntNoErr("client_id")); err != nil {
|
||||
s.AjaxErr("modified error,the client is not exist")
|
||||
} else {
|
||||
h.Client = client
|
||||
}
|
||||
h.Host = s.GetString("host")
|
||||
h.Target = s.GetString("target")
|
||||
h.Target = &file.Target{TargetStr: s.GetString("target")}
|
||||
h.HeaderChange = s.GetString("header")
|
||||
h.HostChange = s.GetString("hostchange")
|
||||
h.Remark = s.GetString("remark")
|
||||
h.TargetArr = nil
|
||||
h.Location = s.GetString("location")
|
||||
h.Scheme = s.GetString("scheme")
|
||||
file.GetCsvDb().StoreHostToCsv()
|
||||
var err error
|
||||
if h.Client, err = file.GetCsvDb().GetClient(s.GetIntNoErr("client_id")); err != nil {
|
||||
s.AjaxErr("modified error")
|
||||
}
|
||||
h.TargetArr = nil
|
||||
}
|
||||
s.AjaxOk("modified success")
|
||||
}
|
||||
|
@@ -23,13 +23,25 @@ func (self *LoginController) Verify() {
|
||||
server.Bridge.Register.Store(common.GetIpByAddr(self.Ctx.Request.RemoteAddr), time.Now().Add(time.Hour*time.Duration(2)))
|
||||
}
|
||||
b, err := beego.AppConfig.Bool("allow_user_login")
|
||||
if err == nil && b && self.GetString("username") == "user" && !auth {
|
||||
if err == nil && b && !auth {
|
||||
file.GetCsvDb().Clients.Range(func(key, value interface{}) bool {
|
||||
v := value.(*file.Client)
|
||||
if v.VerifyKey == self.GetString("password") && v.Status {
|
||||
if !v.Status || v.NoDisplay {
|
||||
return true
|
||||
}
|
||||
if v.WebUserName == "" && v.WebPassword == "" {
|
||||
if self.GetString("username") != "user" || v.VerifyKey != self.GetString("password") {
|
||||
return true
|
||||
} else {
|
||||
auth = true
|
||||
}
|
||||
}
|
||||
if !auth && v.WebPassword == self.GetString("password") && self.GetString("username") == v.WebUserName {
|
||||
auth = true
|
||||
}
|
||||
if auth {
|
||||
self.SetSession("isAdmin", false)
|
||||
self.SetSession("clientId", v.Id)
|
||||
auth = true
|
||||
return false
|
||||
}
|
||||
return true
|
||||
|
Reference in New Issue
Block a user