Browse Source

Merge remote-tracking branch 'origin/dev' into dev

ffdfgdfg 5 years ago
parent
commit
3fa7590400
6 changed files with 48 additions and 31 deletions
  1. 16 16
      build.sh
  2. 7 5
      lib/config/config.go
  3. 16 8
      lib/mux/pconn.go
  4. 3 1
      lib/mux/pmux.go
  5. 4 1
      server/server.go
  6. 2 0
      web/controllers/login.go

+ 16 - 16
build.sh

@@ -10,75 +10,75 @@ cp upx-3.95-amd64_linux/upx ./
 
 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -extldflags -static -extldflags -static"  ./cmd/npc/npc.go
 
-tar -czvf linux_amd64_client.tar.gz npc conf/npc.conf
+tar -czvf linux_amd64_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 CGO_ENABLED=0 GOOS=linux GOARCH=386 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf linux_386_client.tar.gz npc conf/npc.conf
+tar -czvf linux_386_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 CGO_ENABLED=0 GOOS=freebsd GOARCH=386 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf freebsd_386_client.tar.gz npc conf/npc.conf
+tar -czvf freebsd_386_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 CGO_ENABLED=0 GOOS=freebsd GOARCH=amd64 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf freebsd_amd64_client.tar.gz npc conf/npc.conf
+tar -czvf freebsd_amd64_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 CGO_ENABLED=0 GOOS=freebsd GOARCH=arm go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf freebsd_arm_client.tar.gz npc conf/npc.conf
+tar -czvf freebsd_arm_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf linux_arm_v7_client.tar.gz npc conf/npc.conf
+tar -czvf linux_arm_v7_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=6 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf linux_arm_v6_client.tar.gz npc conf/npc.conf
+tar -czvf linux_arm_v6_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=5 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf linux_arm_v5_client.tar.gz npc conf/npc.conf
+tar -czvf linux_arm_v5_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 
 CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf linux_arm64_client.tar.gz npc conf/npc.conf
+tar -czvf linux_arm64_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 
 CGO_ENABLED=0 GOOS=linux GOARCH=mips64 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf linux_mips64_client.tar.gz npc conf/npc.conf
+tar -czvf linux_mips64_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 
 CGO_ENABLED=0 GOOS=linux GOARCH=mips64le go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf linux_mips64le_client.tar.gz npc conf/npc.conf
+tar -czvf linux_mips64le_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 
 CGO_ENABLED=0 GOOS=linux GOARCH=mipsle go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf linux_mipsle_client.tar.gz npc conf/npc.conf
+tar -czvf linux_mipsle_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 
 CGO_ENABLED=0 GOOS=linux GOARCH=mips go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf linux_mips_client.tar.gz npc conf/npc.conf
+tar -czvf linux_mips_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 
 CGO_ENABLED=0 GOOS=windows GOARCH=386 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf win_386_client.tar.gz npc.exe conf/npc.conf
+tar -czvf win_386_client.tar.gz npc.exe conf/npc.conf conf/multi_account.conf
 
 
 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf win_amd64_client.tar.gz npc.exe conf/npc.conf
+tar -czvf win_amd64_client.tar.gz npc.exe conf/npc.conf conf/multi_account.conf
 
 
 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/npc/npc.go
 
-tar -czvf macos_client.tar.gz npc conf/npc.conf
+tar -czvf macos_client.tar.gz npc conf/npc.conf conf/multi_account.conf
 
 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -extldflags -static -extldflags -static" ./cmd/nps/nps.go
 

+ 7 - 5
lib/config/config.go

@@ -241,13 +241,15 @@ func dealTunnel(s string) *file.Tunnel {
 			t.StripPre = item[1]
 		case "multi_account":
 			t.MultiAccount = &file.MultiAccount{}
-			if b, err := common.ReadAllFromFile(item[1]); err != nil {
-				panic(err)
-			} else {
-				if content, err := common.ParseStr(string(b)); err != nil {
+			if common.FileExists(item[1]){
+				if b, err := common.ReadAllFromFile(item[1]); err != nil {
 					panic(err)
 				} else {
-					t.MultiAccount.AccountMap = dealMultiUser(content)
+					if content, err := common.ParseStr(string(b)); err != nil {
+						panic(err)
+					} else {
+						t.MultiAccount.AccountMap = dealMultiUser(content)
+					}
 				}
 			}
 		}

+ 16 - 8
lib/mux/pconn.go

@@ -6,15 +6,17 @@ import (
 )
 
 type PortConn struct {
-	Conn  net.Conn
-	rs    []byte
-	start int
+	Conn     net.Conn
+	rs       []byte
+	readMore bool
+	start    int
 }
 
-func newPortConn(conn net.Conn, rs []byte) *PortConn {
+func newPortConn(conn net.Conn, rs []byte, readMore bool) *PortConn {
 	return &PortConn{
-		Conn: conn,
-		rs:   rs,
+		Conn:     conn,
+		rs:       rs,
+		readMore: readMore,
 	}
 }
 
@@ -29,9 +31,15 @@ func (pConn *PortConn) Read(b []byte) (n int, err error) {
 		defer func() {
 			pConn.start = len(pConn.rs)
 		}()
-		return copy(b, pConn.rs[pConn.start:]), nil
+		n = copy(b, pConn.rs[pConn.start:])
+		if !pConn.readMore {
+			return
+		}
 	}
-	return pConn.Conn.Read(b)
+	var n2 = 0
+	n2, err = pConn.Conn.Read(b[n:])
+	n = n + n2
+	return
 }
 
 func (pConn *PortConn) Write(b []byte) (n int, err error) {

+ 3 - 1
lib/mux/pmux.go

@@ -89,6 +89,7 @@ func (pMux *PortMux) process(conn net.Conn) {
 	var ch chan *PortConn
 	var rs []byte
 	var buffer bytes.Buffer
+	var readMore = false
 	switch common.BytesToNum(buf) {
 	case HTTP_CONNECT, HTTP_DELETE, HTTP_GET, HTTP_HEAD, HTTP_OPTIONS, HTTP_POST, HTTP_PUT, HTTP_TRACE: //http and manager
 		buffer.Reset()
@@ -123,6 +124,7 @@ func (pMux *PortMux) process(conn net.Conn) {
 	case CLIENT: // client connection
 		ch = pMux.clientConn
 	default: // https
+		readMore = true
 		ch = pMux.httpsConn
 	}
 	if len(rs) == 0 {
@@ -131,7 +133,7 @@ func (pMux *PortMux) process(conn net.Conn) {
 	timer := time.NewTimer(ACCEPT_TIME_OUT)
 	select {
 	case <-timer.C:
-	case ch <- newPortConn(conn, rs):
+	case ch <- newPortConn(conn, rs, readMore):
 	}
 }
 

+ 4 - 1
server/server.go

@@ -342,7 +342,10 @@ func GetDashboardData() map[string]interface{} {
 	data := make(map[string]interface{})
 	data["version"] = version.VERSION
 	data["hostCount"] = common.GeSynctMapLen(file.GetDb().JsonDb.Hosts)
-	data["clientCount"] = common.GeSynctMapLen(file.GetDb().JsonDb.Clients) - 1 //Remove the public key client
+	data["clientCount"] = common.GeSynctMapLen(file.GetDb().JsonDb.Clients)
+	if beego.AppConfig.String("public_vkey") != "" { //remove public vkey
+		data["clientCount"] = data["clientCount"].(int) - 1
+	}
 	dealClientData()
 	c := 0
 	var in, out int64

+ 2 - 0
web/controllers/login.go

@@ -22,6 +22,8 @@ func (self *LoginController) Verify() {
 	var auth bool
 	if self.GetString("password") == beego.AppConfig.String("web_password") && self.GetString("username") == beego.AppConfig.String("web_username") {
 		self.SetSession("isAdmin", true)
+		self.DelSession("clientId")
+		self.DelSession("username")
 		auth = true
 		server.Bridge.Register.Store(common.GetIpByAddr(self.Ctx.Input.IP()), time.Now().Add(time.Hour*time.Duration(2)))
 	}