刘河 6 роки тому
батько
коміт
f3435ebd40
2 змінених файлів з 5 додано та 3 видалено
  1. 2 1
      server/server.go
  2. 3 2
      server/tcp.go

+ 2 - 1
server/server.go

@@ -157,7 +157,8 @@ func InitCsvDb() *Csv {
 //get key by host from x
 func GetKeyByHost(host string) (h *HostList, t *ServerConfig, err error) {
 	for _, v := range CsvDb.Hosts {
-		if strings.Contains(host, v.Host) {
+		s := strings.Split(host, ":")
+		if s[0] == v.Host {
 			h = v
 			t, err = CsvDb.GetTask(v.Vkey)
 			return

+ 3 - 2
server/tcp.go

@@ -63,6 +63,7 @@ func (s *TunnelModeServer) auth(r *http.Request, c *utils.Conn, u, p string) err
 
 //与客户端建立通道
 func (s *TunnelModeServer) dealClient(c *utils.Conn, cnf *ServerConfig, addr string, method string, rb []byte) error {
+reGet:
 	link, err := s.bridge.GetTunnel(getverifyval(cnf.VerifyKey), cnf.CompressEncode, cnf.CompressDecode, cnf.Crypt, cnf.Mux)
 	defer func() {
 		if cnf.Mux {
@@ -72,7 +73,7 @@ func (s *TunnelModeServer) dealClient(c *utils.Conn, cnf *ServerConfig, addr str
 		}
 	}()
 	if err != nil {
-		log.Println(err)
+		log.Println("conn to client error:", err)
 		c.Close()
 		return err
 	}
@@ -80,7 +81,7 @@ func (s *TunnelModeServer) dealClient(c *utils.Conn, cnf *ServerConfig, addr str
 		c.Close()
 		link.Close()
 		log.Println(err)
-		return err
+		goto reGet
 	}
 	if flag, err := link.ReadFlag(); err == nil {
 		if flag == utils.CONN_SUCCESS {