소스 검색

wip:手机号白名单

wangshan 5 달 전
부모
커밋
c2f4a535b4
3개의 변경된 파일16개의 추가작업 그리고 2개의 파일을 삭제
  1. 2 1
      src/config.json
  2. 7 0
      src/config/config.go
  3. 7 1
      src/service/verify.go

+ 2 - 1
src/config.json

@@ -90,5 +90,6 @@
 		}
 	],
 	"smsIpMap": ["10","172","192","127","169","100"],
-	"strategySwitch": true
+	"strategySwitch": true,
+	"smsPhoneMap": ["15737190152"]
 }

+ 7 - 0
src/config/config.go

@@ -52,6 +52,7 @@ var (
 		"169": true,
 		"100": true,
 	}
+	SmsPhoneMap = map[string]bool{}
 )
 
 type config struct {
@@ -93,6 +94,7 @@ type config struct {
 	StrategyIp     []Strategy `json:"strategyIp"`
 	SmsIpMap       []string   `json:"smsIpMap"`
 	StrategySwitch bool       `json:"strategySwitch"`
+	SmsPhoneMap    []string   `json:"smsPhoneMap"`
 }
 
 type Strategy struct {
@@ -130,6 +132,11 @@ func init() {
 			SmsIpMap[ip] = true
 		}
 	}
+	if len(Config.SmsPhoneMap) > 0 {
+		for _, phone := range Config.SmsPhoneMap {
+			SmsPhoneMap[phone] = true
+		}
+	}
 	//初始化redis
 	if Config.Redis != "" {
 		jylog.Println("初始化 redis")

+ 7 - 1
src/service/verify.go

@@ -20,6 +20,9 @@ var (
 )
 
 func SmsStrategy(keys []string) (abnormalKey []string) {
+	if len(keys) == 0 {
+		return
+	}
 	var strategyFun = func(key string, ss []config.Strategy) {
 		for _, s := range ss {
 			cacheKey := fmt.Sprintf(key, s.Day)
@@ -51,7 +54,7 @@ func Verify(reqData *ReqData) bool {
 	smsLock.Lock()
 	defer smsLock.Unlock()
 	//异常手机号及ip拦截策略
-	var keys = []string{fmt.Sprintf(smsPhoneKey, "%s", reqData.Phones)}
+	var keys []string
 	if ips := strings.Split(reqData.Ip, ","); len(ips) > 0 {
 		for _, ip := range ips {
 			ip = strings.TrimSpace(ip)
@@ -62,6 +65,9 @@ func Verify(reqData *ReqData) bool {
 			keys = append(keys, fmt.Sprintf(smsIpKey, "%s", ip))
 		}
 	}
+	if !config.SmsPhoneMap[reqData.Phones] {
+		keys = append(keys, fmt.Sprintf(smsPhoneKey, "%s", reqData.Phones))
+	}
 	aks := SmsStrategy(keys)
 	if len(aks) > 0 {
 		go SaveRecord(aks, reqData.Ip, reqData.Phones)