diff --git a/common/constants.go b/common/constants.go index 2ef2b7df..120c1e9d 100644 --- a/common/constants.go +++ b/common/constants.go @@ -159,14 +159,15 @@ var ( GlobalWebRateLimitNum int GlobalWebRateLimitDuration int64 + CriticalRateLimitEnable bool + CriticalRateLimitNum = 20 + CriticalRateLimitDuration int64 = 20 * 60 + UploadRateLimitNum = 10 UploadRateLimitDuration int64 = 60 DownloadRateLimitNum = 10 DownloadRateLimitDuration int64 = 60 - - CriticalRateLimitNum = 20 - CriticalRateLimitDuration int64 = 20 * 60 ) var RateLimitKeyExpirationDuration = 20 * time.Minute diff --git a/common/init.go b/common/init.go index 51b1f213..0ae7dcd6 100644 --- a/common/init.go +++ b/common/init.go @@ -99,6 +99,9 @@ func InitEnv() { GlobalWebRateLimitNum = GetEnvOrDefault("GLOBAL_WEB_RATE_LIMIT", 60) GlobalWebRateLimitDuration = int64(GetEnvOrDefault("GLOBAL_WEB_RATE_LIMIT_DURATION", 180)) + CriticalRateLimitEnable = GetEnvOrDefaultBool("CRITICAL_RATE_LIMIT_ENABLE", true) + CriticalRateLimitNum = GetEnvOrDefault("CRITICAL_RATE_LIMIT", 20) + CriticalRateLimitDuration = int64(GetEnvOrDefault("CRITICAL_RATE_LIMIT_DURATION", 20*60)) initConstantEnv() } diff --git a/middleware/rate-limit.go b/middleware/rate-limit.go index 57aeb319..866542e1 100644 --- a/middleware/rate-limit.go +++ b/middleware/rate-limit.go @@ -102,7 +102,10 @@ func GlobalAPIRateLimit() func(c *gin.Context) { } func CriticalRateLimit() func(c *gin.Context) { - return rateLimitFactory(common.CriticalRateLimitNum, common.CriticalRateLimitDuration, "CT") + if common.CriticalRateLimitEnable { + return rateLimitFactory(common.CriticalRateLimitNum, common.CriticalRateLimitDuration, "CT") + } + return defNext } func DownloadRateLimit() func(c *gin.Context) {