From fe3bd2a1f1c283568a37abd9e23a42da297e4b9f Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 21:16:23 +0800 Subject: [PATCH 1/4] add operationID when ws connecting --- internal/msg_gateway/gate/ws_server.go | 14 +++++++++----- pkg/common/token_verify/jwt_token.go | 6 +++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 7c602a5fc..7686b6cab 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -262,19 +262,23 @@ func (ws *WServer) getUserUid(conn *UserConn) (uid, platform string) { func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { status := http.StatusUnauthorized query := r.URL.Query() + operationID := "" + if len(query["operationID"]) != 0 { + operationID = query["operationID"][0] + } if len(query["token"]) != 0 && len(query["sendID"]) != 0 && len(query["platformID"]) != 0 { if ok, err, msg := token_verify.WsVerifyToken(query["token"][0], query["sendID"][0], query["platformID"][0]); !ok { - e := err.(*constant.ErrInfo) - log.ErrorByKv("Token verify failed", "", "query", query, msg) + // e := err.(*constant.ErrInfo) + log.Error(operationID, "Token verify failed ", "query ", query, msg, err.Error()) w.Header().Set("Sec-Websocket-Version", "13") - http.Error(w, e.ErrMsg, int(e.ErrCode)) + http.Error(w, err.Error(), 2001) return false } else { - log.InfoByKv("Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) + log.Info(operationID, "Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) return true } } else { - log.ErrorByKv("Args err", "", "query", query) + log.Error(operationID, "Args err", "query", query) w.Header().Set("Sec-Websocket-Version", "13") http.Error(w, http.StatusText(status), status) return false diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index bfff43116..16eb5e8d0 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -218,13 +218,13 @@ func VerifyToken(token, uid string) (bool, error) { func WsVerifyToken(token, uid string, platformID string) (bool, error, string) { claims, err := ParseToken(token, "") if err != nil { - return false, err, "parse token err" + return false, utils.Wrap(err, ""), "parse token err" } if claims.UID != uid { - return false, &constant.ErrTokenUnknown, "uid is not same to token uid" + return false, utils.Wrap(&constant.ErrTokenUnknown, ""), "uid is not same to token uid" } if claims.Platform != constant.PlatformIDToName(utils.StringToInt32(platformID)) { - return false, &constant.ErrTokenUnknown, "platform is not same to token platform" + return false, utils.Wrap(&constant.ErrTokenUnknown, ""), "platform is not same to token platform" } log.NewDebug("", claims.UID, claims.Platform) return true, nil, "" From 97fd107f474e682ba953ad0426809a9b0ceffb2a Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 21:29:48 +0800 Subject: [PATCH 2/4] add operationID when ws connecting --- cmd/Open-IM-SDK-Core | 2 +- internal/msg_gateway/gate/ws_server.go | 2 +- pkg/common/token_verify/jwt_token.go | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 3ecd23203..fd87b4bfc 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 3ecd23203cd6bd746b1fcb0c70755bd2cbf5361c +Subproject commit fd87b4bfc3ee7e9f4c50140b884eb4505d00bc44 diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 7686b6cab..18f507c42 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -271,7 +271,7 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { // e := err.(*constant.ErrInfo) log.Error(operationID, "Token verify failed ", "query ", query, msg, err.Error()) w.Header().Set("Sec-Websocket-Version", "13") - http.Error(w, err.Error(), 2001) + http.Error(w, err.Error(), status) return false } else { log.Info(operationID, "Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 16eb5e8d0..e58424623 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -218,13 +218,13 @@ func VerifyToken(token, uid string) (bool, error) { func WsVerifyToken(token, uid string, platformID string) (bool, error, string) { claims, err := ParseToken(token, "") if err != nil { - return false, utils.Wrap(err, ""), "parse token err" + return false, utils.Wrap(err, "parse token err"), "parse token err" } if claims.UID != uid { - return false, utils.Wrap(&constant.ErrTokenUnknown, ""), "uid is not same to token uid" + return false, utils.Wrap(&constant.ErrTokenUnknown, "uid is not same to token uid"), "uid is not same to token uid" } if claims.Platform != constant.PlatformIDToName(utils.StringToInt32(platformID)) { - return false, utils.Wrap(&constant.ErrTokenUnknown, ""), "platform is not same to token platform" + return false, utils.Wrap(&constant.ErrTokenUnknown, "platform is not same to token platform"), "platform is not same to token platform" } log.NewDebug("", claims.UID, claims.Platform) return true, nil, "" From f7b5a86a09bd1314aa5827754b1539c6cca93436 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 21:34:58 +0800 Subject: [PATCH 3/4] add operationID when ws connecting --- internal/msg_gateway/gate/ws_server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 18f507c42..130daf7af 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -271,7 +271,7 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { // e := err.(*constant.ErrInfo) log.Error(operationID, "Token verify failed ", "query ", query, msg, err.Error()) w.Header().Set("Sec-Websocket-Version", "13") - http.Error(w, err.Error(), status) + http.Error(w, err.Error(), 1222212) return false } else { log.Info(operationID, "Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) From bd6e8d093acb8b91fa74d645b7346f47b54bb71e Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 21:39:46 +0800 Subject: [PATCH 4/4] add operationID when ws connecting --- internal/msg_gateway/gate/ws_server.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 130daf7af..dd18f7bc8 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -271,7 +271,8 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { // e := err.(*constant.ErrInfo) log.Error(operationID, "Token verify failed ", "query ", query, msg, err.Error()) w.Header().Set("Sec-Websocket-Version", "13") - http.Error(w, err.Error(), 1222212) + w.Header().Set("ws_err_msg", err.Error()) + http.Error(w, err.Error(), status) return false } else { log.Info(operationID, "Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) @@ -280,6 +281,7 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { } else { log.Error(operationID, "Args err", "query", query) w.Header().Set("Sec-Websocket-Version", "13") + w.Header().Set("ws_err_msg", "args err") http.Error(w, http.StatusText(status), status) return false }