From 97cd8e0bc7f63c4e6490ccc333e6d66767c99f1b Mon Sep 17 00:00:00 2001 From: yangduo Date: Mon, 22 Jul 2024 17:12:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gamesapi/middleware/caauth.go | 9 ++++---- server/gamesapi/middleware/caforward.go | 28 ++++++++++++------------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/server/gamesapi/middleware/caauth.go b/server/gamesapi/middleware/caauth.go index 9f3f8d4f..8d3dfc36 100644 --- a/server/gamesapi/middleware/caauth.go +++ b/server/gamesapi/middleware/caauth.go @@ -46,14 +46,13 @@ func CaCheck(c *gin.Context) { cache = &pcache } - info := new(RedirectInfo) - info.ori_req = c.Copy() - if !strings.HasSuffix(action, "S") { - CaForward(info) + CaForward(c, "", "") return } + info := new(RedirectInfo) + info.ori_req = c info.sigtime = f5.GetApp().GetRealSeconds() info.trace_id = fmt.Sprintf("%x%02x-%s", info.sigtime, len(*cache), accountId) info.sig = q5.Md5Str(c.Request.URL.RawQuery + info.trace_id) @@ -133,7 +132,7 @@ func CheckRedirect() { if req != nil { redirectRequest.Store(account, req) - CaForward(req) + CaForward(req.ori_req, req.sig, req.trace_id) } if len(requests) == 0 { diff --git a/server/gamesapi/middleware/caforward.go b/server/gamesapi/middleware/caforward.go index b915f526..8d6f166c 100644 --- a/server/gamesapi/middleware/caforward.go +++ b/server/gamesapi/middleware/caforward.go @@ -9,22 +9,22 @@ import ( "github.com/gin-gonic/gin" ) -func CaForward(c *RedirectInfo) { +func CaForward(c *gin.Context, sig string, traceid string) { - queryParams := c.ori_req.Request.URL.Query() + queryParams := c.Request.URL.Query() params := map[string]string{} for k, v := range queryParams { params[k] = v[0] } - if c.sig != "" { - params["sig"] = c.sig - params["trace_id"] = c.trace_id + if sig != "" { + params["sig"] = sig + params["trace_id"] = traceid } - fullrequrl := mt.Table.Config.GetById(0).GetRedirectUrl() + c.ori_req.Request.URL.Path + fullrequrl := mt.Table.Config.GetById(0).GetRedirectUrl() + c.Request.URL.Path cb := func(rsp f5.HttpCliResponse) { if rsp.GetErr() != nil { - c.ori_req.JSON(http.StatusOK, gin.H{ + c.JSON(http.StatusOK, gin.H{ "errcode": 1004, "errmsg": rsp.GetErr(), }) @@ -32,10 +32,10 @@ func CaForward(c *RedirectInfo) { } // fmt.Println("saved ori context:", c.ori_req) - c.ori_req.JSON(http.StatusOK, rsp.GetRawData()) + c.JSON(http.StatusOK, rsp.GetRawData()) } - switch c.ori_req.Request.Method { + switch c.Request.Method { case "GET": f5.GetHttpCliMgr().SendGoStyleRequest( fullrequrl, @@ -45,15 +45,15 @@ func CaForward(c *RedirectInfo) { f5.GetHttpCliMgr().SendGoStylePost( fullrequrl, params, - c.ori_req.ContentType(), - q5.GetPostBody(c.ori_req.Request), + c.ContentType(), + q5.GetPostBody(c.Request), cb) } - if c.sig != "" { - account := c.ori_req.DefaultQuery("account_id", "") + if sig != "" { + account := c.DefaultQuery("account_id", "") v, exist := redirectRequest.Load(account) - if exist && (*v).trace_id == c.trace_id { + if exist && (*v).trace_id == traceid { redirectRequest.Delete(account) } }