You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
3.4 KiB
132 lines
3.4 KiB
package middleware |
|
|
|
import ( |
|
"github.com/liangdas/mqant/log" |
|
"server/call" |
|
"server/common" |
|
"server/db" |
|
"server/modules/web/app" |
|
"server/modules/web/values" |
|
"server/util" |
|
"strconv" |
|
"strings" |
|
|
|
"github.com/gin-gonic/gin" |
|
) |
|
|
|
var ( |
|
passURLs = map[string]struct{}{ |
|
"/firstpage": {}, |
|
"/game/list": {}, |
|
"/sys/config": {}, |
|
"/account/email/code": {}, |
|
"/account/email/regist": {}, |
|
"/account/email/login": {}, |
|
"/account/email/resetPass": {}, |
|
"/account/guestLogin": {}, |
|
"/account/gpLogin": {}, |
|
"/account/fbLogin": {}, |
|
"/account/tokenLogin": {}, |
|
"/account/phoneCode/get": {}, |
|
"/account/phoneCode/verify": {}, |
|
"/account/phoneCode/regist": {}, |
|
"/account/phoneCode/login": {}, |
|
"/share/upload": {}, |
|
"/share/config": {}, |
|
"/game/enter": {}, |
|
"/activity/appSpin/info": {}, |
|
"/activity/pdd/info": {}, |
|
"/account/phone/regist": {}, |
|
"/account/phone/login": {}, |
|
"/account/phone/resetPass": {}, |
|
"/balance/recharge/info": {}, |
|
"/vip/info": {}, |
|
"/share/reference": {}, |
|
"/share/report": {}, |
|
"/share/transfer": {}, |
|
"/task/info": {}, |
|
"/activity/freeSpin/info": {}, |
|
"/promotions": {}, |
|
"/tg/luckyCode": {}, |
|
"/activity/sign/info": {}, |
|
"/ad/uploadFB": {}, |
|
"/activity/slots/info": {}, |
|
"/activity/sign/new/info": {}, |
|
"/activity/betDraw/info": {}, |
|
"/activity/betDraw/record": {}, |
|
"/activity/activityPopup/info": {}, |
|
"/customer/image/download": {}, |
|
"/activity/firstRechargeBack/info": {}, |
|
"/activity/weekCard/info": {}, |
|
"/activity/inviteRank/info": {}, |
|
} |
|
) |
|
|
|
// 进行token校验 |
|
func TokenMiddleWare() gin.HandlerFunc { |
|
return func(c *gin.Context) { |
|
path := c.Request.RequestURI |
|
if PassURL(path) { |
|
c.Next() |
|
return |
|
} |
|
token := c.GetHeader("token") |
|
a := app.NewApp(c) |
|
uid, _ := db.Redis().GetInt(common.GetRedisKeyToken(token)) |
|
log.Debug("token:%s, uid:%d", token, uid) |
|
if uid == 0 { |
|
a.Code = values.CodeToken |
|
a.Response() |
|
c.Abort() |
|
return |
|
} |
|
c.Set("uid", uid) |
|
c.Set("token", token) |
|
c.Set("referrer", c.GetHeader("referrer")) |
|
util.Go(func() { |
|
db.Redis().AddUserExpire(uid, token) |
|
}) |
|
c.Next() |
|
} |
|
} |
|
|
|
func SetToken(c *gin.Context) { |
|
|
|
} |
|
|
|
// PassURL 过滤url |
|
func PassURL(path string) bool { |
|
index := strings.Index(path, "?") |
|
if index > 0 { |
|
path = path[:index] |
|
} |
|
_, ok := passURLs[path] |
|
if !ok { |
|
// index := strings.LastIndex(path, "/") |
|
// url := path[:index+1] + "*" |
|
// _, ok = passURLs[url] |
|
for k := range passURLs { |
|
if strings.Contains(path, k) { |
|
return true |
|
} |
|
} |
|
} |
|
return ok |
|
} |
|
|
|
// WhiteMiddleWare 白名单验证 |
|
func WhiteMiddleWare() gin.HandlerFunc { |
|
return func(c *gin.Context) { |
|
a := app.NewApp(c) |
|
ver := c.GetHeader("version") |
|
version, _ := strconv.Atoi(ver) |
|
ip := a.GetRemoteIP() |
|
if !call.WhitePass(ip, a.UUID, c.Request.RequestURI, version, a.Channel) { |
|
a.Code = values.CodeServer |
|
a.Response() |
|
c.Abort() |
|
return |
|
} |
|
c.Next() |
|
} |
|
}
|
|
|