Selaa lähdekoodia

add auth in client

Joyit 1 kuukausi sitten
vanhempi
sitoutus
333aa6e2b7
3 muutettua tiedostoa jossa 12 lisäystä ja 3 poistoa
  1. 1 1
      examples/client-tpv2.go
  2. 1 1
      examples/client-wsv2.go
  3. 10 1
      hub.go

+ 1 - 1
examples/client-tpv2.go

@@ -35,7 +35,7 @@ func main() {
 			return nil
 		}
 	}, func(proto string, version uint8, channel string, auth []byte) bool {
-		return string(auth) == "tinymq"
+		return true
 	}, func(conn *tinymq.Line) {
 		log.Println("connect state", conn.State())
 	})

+ 1 - 1
examples/client-wsv2.go

@@ -38,7 +38,7 @@ func main() {
 			return nil
 		}
 	}, func(proto string, cversion uint8, hannel string, auth []byte) bool {
-		return string(auth) == "tinymq"
+		return true
 	}, func(conn *tinymq.Line) {
 		log.Println("connect state", conn.Channel(), conn.State())
 	})

+ 10 - 1
hub.go

@@ -508,7 +508,7 @@ func (h *Hub) ConnectToServer(channel string, force bool) (err error) {
 		return err
 	}
 	// 接收频道信息
-	proto, version, channel2, _, err := conn.ReadAuthInfo()
+	proto, version, channel2, auth, err := conn.ReadAuthInfo()
 	if err != nil {
 		log.Println("[ConnectToServer ReadAuthInfo ERROR]", err)
 		conn.Close()
@@ -534,6 +534,15 @@ func (h *Hub) ConnectToServer(channel string, force bool) (err error) {
 		host.Updated = time.Now()
 		return err
 	}
+	// 检查验证是否合法
+	if !h.checkAuthFunc(proto, version, channel, auth) {
+		err = fmt.Errorf("[checkAuthFunc ERROR] in proto: %s, version: %d, channel: %s, auth: %s", proto, version, channel, string(auth))
+		log.Println(err)
+		conn.Close()
+		host.Errors++
+		host.Updated = time.Now()
+		return err
+	}
 	// 更新服务主机信息
 	host.Errors = 0
 	host.Updated = time.Now()