This commit is contained in:
桀尼龟 2025-02-25 10:04:42 +08:00
parent 5ecdc9b8f7
commit 4421b1faf2

View File

@ -2,18 +2,14 @@ package account
import (
"context"
"errors"
"fmt"
"fonchain-fiee/api/account"
"fonchain-fiee/pkg/cache"
"fonchain-fiee/pkg/e"
"fonchain-fiee/pkg/model/login"
"fonchain-fiee/pkg/model/union"
"fonchain-fiee/pkg/service"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"github.com/go-redis/redis"
"time"
)
func UserApproval(c *gin.Context) {
@ -74,45 +70,46 @@ func SendMsg(c *gin.Context) {
if req.Zone != e.ZoneCn && req.Zone != "" {
// ============================== redis检查ip开始
ip := c.ClientIP()
daykey := "day_sms_limit:" + ip
minutekey := "minute_sms_limit:" + ip
duration := time.Second
isBlacklisted, blackErr := cache.RedisClient.SIsMember("nation_sms_blacklist", ip).Result()
if blackErr != nil {
service.Error(c, errors.New("Redis error"))
return
}
if isBlacklisted {
fmt.Println("当前ip手机号在黑名单中", ip, ";手机号:", req.TelNum, ";domain", req.Domain)
service.Success(c, "succes!")
return
}
// 一分钟5次一天30次
if dayCount, redisErr := cache.RedisClient.Get(daykey).Int(); redisErr == redis.Nil {
cache.RedisClient.Set(daykey, 1, 24*time.Hour)
} else if redisErr != nil {
service.Error(c, errors.New("Redis error"))
return
} else if dayCount >= 30 {
cache.RedisClient.SAdd("nation_sms_blacklist", ip)
cache.RedisClient.Expire("nation_sms_blacklist", 24*time.Hour) // 黑名单记录有效期为24小时
fmt.Println("当前ip手机号在黑名单中", ip, ";手机号:", req.TelNum, ";domain", req.Domain)
service.Success(c, "succes!")
return
}
if minuteCount, redisErr := cache.RedisClient.Get(minutekey).Int(); redisErr == redis.Nil {
cache.RedisClient.Set(minutekey, 1, duration)
} else if redisErr != nil {
service.Error(c, errors.New("Redis error"))
return
} else if minuteCount >= 5 {
fmt.Println("当前ip触发每分钟5次限制", ip, ";手机号:", req.TelNum, ";domain", req.Domain)
service.Success(c, "succes!")
return
}
cache.RedisClient.Incr(daykey)
cache.RedisClient.Incr(minutekey)
fmt.Println("当前ip", ip, ";手机号:", req.TelNum, ";domain", req.Domain)
//daykey := "day_sms_limit:" + ip
//minutekey := "minute_sms_limit:" + ip
//duration := time.Second
//isBlacklisted, blackErr := cache.RedisClient.SIsMember("nation_sms_blacklist", ip).Result()
//if blackErr != nil {
// service.Error(c, errors.New("Redis error"))
// return
//}
//if isBlacklisted {
// fmt.Println("当前ip手机号在黑名单中", ip, ";手机号:", req.TelNum, ";domain", req.Domain)
// service.Success(c, "succes!")
// return
//}
//
//// 一分钟5次一天30次
//if dayCount, redisErr := cache.RedisClient.Get(daykey).Int(); redisErr == redis.Nil {
// cache.RedisClient.Set(daykey, 1, 24*time.Hour)
//} else if redisErr != nil {
// service.Error(c, errors.New("Redis error"))
// return
//} else if dayCount >= 30 {
// cache.RedisClient.SAdd("nation_sms_blacklist", ip)
// cache.RedisClient.Expire("nation_sms_blacklist", 24*time.Hour) // 黑名单记录有效期为24小时
// fmt.Println("当前ip手机号在黑名单中", ip, ";手机号:", req.TelNum, ";domain", req.Domain)
// service.Success(c, "succes!")
// return
//}
//if minuteCount, redisErr := cache.RedisClient.Get(minutekey).Int(); redisErr == redis.Nil {
// cache.RedisClient.Set(minutekey, 1, duration)
//} else if redisErr != nil {
// service.Error(c, errors.New("Redis error"))
// return
//} else if minuteCount >= 5 {
// fmt.Println("当前ip触发每分钟5次限制", ip, ";手机号:", req.TelNum, ";domain", req.Domain)
// service.Success(c, "succes!")
// return
//}
//cache.RedisClient.Incr(daykey)
//cache.RedisClient.Incr(minutekey)
// ============================== redis检查ip结束
tempReq := &account.SendNationMsgRequest{