diff --git a/common/constants.go b/common/constants.go
index aefe72f..5815802 100644
--- a/common/constants.go
+++ b/common/constants.go
@@ -144,11 +144,13 @@ var (
// All duration's unit is seconds
// Shouldn't larger then RateLimitKeyExpirationDuration
var (
- GlobalApiRateLimitNum = GetEnvOrDefault("GLOBAL_API_RATE_LIMIT", 180)
- GlobalApiRateLimitDuration int64 = 3 * 60
+ GlobalApiRateLimitEnable = GetEnvOrDefaultBool("GLOBAL_API_RATE_LIMIT_ENABLE", true)
+ GlobalApiRateLimitNum = GetEnvOrDefault("GLOBAL_API_RATE_LIMIT", 180)
+ GlobalApiRateLimitDuration = int64(GetEnvOrDefault("GLOBAL_API_RATE_LIMIT_DURATION", 180))
- GlobalWebRateLimitNum = GetEnvOrDefault("GLOBAL_WEB_RATE_LIMIT", 60)
- GlobalWebRateLimitDuration int64 = 3 * 60
+ GlobalWebRateLimitEnable = GetEnvOrDefaultBool("GLOBAL_WEB_RATE_LIMIT_ENABLE", true)
+ GlobalWebRateLimitNum = GetEnvOrDefault("GLOBAL_WEB_RATE_LIMIT", 60)
+ GlobalWebRateLimitDuration = int64(GetEnvOrDefault("GLOBAL_WEB_RATE_LIMIT_DURATION", 180))
UploadRateLimitNum = 10
UploadRateLimitDuration int64 = 60
diff --git a/middleware/rate-limit.go b/middleware/rate-limit.go
index 8e5cff6..e38fb8f 100644
--- a/middleware/rate-limit.go
+++ b/middleware/rate-limit.go
@@ -13,6 +13,10 @@ var timeFormat = "2006-01-02T15:04:05.000Z"
var inMemoryRateLimiter common.InMemoryRateLimiter
+var defNext = func(c *gin.Context) {
+ c.Next()
+}
+
func redisRateLimiter(c *gin.Context, maxRequestNum int, duration int64, mark string) {
ctx := context.Background()
rdb := common.RDB
@@ -83,11 +87,17 @@ func rateLimitFactory(maxRequestNum int, duration int64, mark string) func(c *gi
}
func GlobalWebRateLimit() func(c *gin.Context) {
- return rateLimitFactory(common.GlobalWebRateLimitNum, common.GlobalWebRateLimitDuration, "GW")
+ if common.GlobalWebRateLimitEnable {
+ return rateLimitFactory(common.GlobalWebRateLimitNum, common.GlobalWebRateLimitDuration, "GW")
+ }
+ return defNext
}
func GlobalAPIRateLimit() func(c *gin.Context) {
- return rateLimitFactory(common.GlobalApiRateLimitNum, common.GlobalApiRateLimitDuration, "GA")
+ if common.GlobalApiRateLimitEnable {
+ return rateLimitFactory(common.GlobalApiRateLimitNum, common.GlobalApiRateLimitDuration, "GA")
+ }
+ return defNext
}
func CriticalRateLimit() func(c *gin.Context) {
diff --git a/web/src/components/ChannelsTable.js b/web/src/components/ChannelsTable.js
index 2942a0b..d09f34f 100644
--- a/web/src/components/ChannelsTable.js
+++ b/web/src/components/ChannelsTable.js
@@ -17,7 +17,7 @@ import {
renderQuota,
} from '../helpers/render';
import {
- Button,
+ Button, Divider,
Dropdown,
Form,
InputNumber,
@@ -707,226 +707,217 @@ const ChannelsTable = () => {
};
return (
- <>
-