// Package middleware ... // // Description : ip黑白名单的限制 // // Author : go_developer@163.com<白茶清欢> // // Date : 2021-07-29 5:52 下午 package middleware import ( "net/http" "github.com/gin-gonic/gin" ) // IPValidate IP和白名单的验证, 注意 : 既存在于白名单, 也存在于黑名单, 则认为是黑名单 // // Author : go_developer@163.com<白茶清欢> // // Date : 5:53 下午 2021/3/9 func IPValidate(whiteIPList []string, blackIPList []string, responseData map[string]interface{}) gin.HandlerFunc { return func(ctx *gin.Context) { realClientIP := ctx.ClientIP() if nil != blackIPList && len(blackIPList) > 0 { for _, blackIP := range blackIPList { if realClientIP == blackIP { // 黑名单IP ctx.AbortWithStatusJSON(http.StatusOK, responseData) return } } } if nil != whiteIPList && len(whiteIPList) > 0 { isWhiteIP := false for _, whiteIP := range whiteIPList { if realClientIP == whiteIP { isWhiteIP = true break } } if !isWhiteIP { // 配置了白名单,但是非白名单IP ctx.AbortWithStatusJSON(http.StatusOK, responseData) return } } ctx.Next() } }