IP白名单优化
This commit is contained in:
@@ -25,6 +25,7 @@ type IPRateLimiter struct {
|
|||||||
b int
|
b int
|
||||||
whitelist []*net.IPNet
|
whitelist []*net.IPNet
|
||||||
blacklist []*net.IPNet
|
blacklist []*net.IPNet
|
||||||
|
whitelistLimiter *rate.Limiter // 全局共享的白名单限流器
|
||||||
}
|
}
|
||||||
|
|
||||||
// rateLimiterEntry 限流器条目
|
// rateLimiterEntry 限流器条目
|
||||||
@@ -81,6 +82,7 @@ func InitGlobalLimiter() *IPRateLimiter {
|
|||||||
b: burstSize,
|
b: burstSize,
|
||||||
whitelist: whitelist,
|
whitelist: whitelist,
|
||||||
blacklist: blacklist,
|
blacklist: blacklist,
|
||||||
|
whitelistLimiter: rate.NewLimiter(rate.Inf, burstSize),
|
||||||
}
|
}
|
||||||
|
|
||||||
go limiter.cleanupRoutine()
|
go limiter.cleanupRoutine()
|
||||||
@@ -170,7 +172,7 @@ func (i *IPRateLimiter) GetLimiter(ip string) (*rate.Limiter, bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if isIPInCIDRList(cleanIP, i.whitelist) {
|
if isIPInCIDRList(cleanIP, i.whitelist) {
|
||||||
return rate.NewLimiter(rate.Inf, i.b), true
|
return i.whitelistLimiter, true
|
||||||
}
|
}
|
||||||
|
|
||||||
normalizedIP := normalizeIPForRateLimit(cleanIP)
|
normalizedIP := normalizeIPForRateLimit(cleanIP)
|
||||||
|
|||||||
Reference in New Issue
Block a user