[优化] 代码优化

This commit is contained in:
ryan
2026-05-31 21:00:18 +08:00
parent fe2414ead5
commit 14d41ad807
6 changed files with 2 additions and 142 deletions
-2
View File
@@ -80,8 +80,6 @@ The following options are maintained on the settings page of the management cons
| `DatabaseAutoCleanupRetentionDays` | In-database retention days, at least 1 day | `30` |
| `GlobalApiRateLimitNum` / `GlobalApiRateLimitDuration` | Global API rate limit count / window | `300` / `180` |
| `GlobalWebRateLimitNum` / `GlobalWebRateLimitDuration` | Global Web rate limit count / window | `300` / `180` |
| `UploadRateLimitNum` / `UploadRateLimitDuration` | Upload API rate limit count / window | `50` / `60` |
| `DownloadRateLimitNum` / `DownloadRateLimitDuration` | Download API rate limit count / window | `50` / `60` |
| `CriticalRateLimitNum` / `CriticalRateLimitDuration` | Sensitive API rate limit count / window | `100` / `1200` |
Description:
-2
View File
@@ -80,8 +80,6 @@ go run . --port 3000 --log-dir ./logs
| `DatabaseAutoCleanupRetentionDays` | 自动清理保留天数,至少 1 天 | `30` |
| `GlobalApiRateLimitNum` / `GlobalApiRateLimitDuration` | 全局 API 限流次数 / 时间窗口 | `300` / `180` |
| `GlobalWebRateLimitNum` / `GlobalWebRateLimitDuration` | 全局 Web 限流次数 / 时间窗口 | `300` / `180` |
| `UploadRateLimitNum` / `UploadRateLimitDuration` | 上传接口限流次数 / 时间窗口 | `50` / `60` |
| `DownloadRateLimitNum` / `DownloadRateLimitDuration` | 下载接口限流次数 / 时间窗口 | `50` / `60` |
| `CriticalRateLimitNum` / `CriticalRateLimitDuration` | 敏感接口限流次数 / 时间窗口 | `100` / `1200` |
说明:
-13
View File
@@ -139,13 +139,6 @@ const (
RoleRootUser = 100
)
var (
FileUploadPermission = RoleGuestUser
FileDownloadPermission = RoleGuestUser
ImageUploadPermission = RoleGuestUser
ImageDownloadPermission = RoleGuestUser
)
// All duration's unit is seconds
// Shouldn't larger then RateLimitKeyExpirationDuration
var (
@@ -155,12 +148,6 @@ var (
GlobalWebRateLimitNum = 300
GlobalWebRateLimitDuration int64 = 3 * 60
UploadRateLimitNum = 50
UploadRateLimitDuration int64 = 60
DownloadRateLimitNum = 50
DownloadRateLimitDuration int64 = 60
CriticalRateLimitNum = 100
CriticalRateLimitDuration int64 = 20 * 60
)
+2 -2
View File
@@ -29,13 +29,13 @@ func validateRateLimitOption(key string, value string) error {
maxDurationSeconds := int(common.RateLimitKeyExpirationDuration.Seconds())
switch key {
case "GlobalApiRateLimitNum", "GlobalWebRateLimitNum", "UploadRateLimitNum", "DownloadRateLimitNum", "CriticalRateLimitNum":
case "GlobalApiRateLimitNum", "GlobalWebRateLimitNum", "CriticalRateLimitNum":
intValue, err := strconv.Atoi(value)
if err != nil || intValue <= 0 {
return fmt.Errorf("%s 必须为大于 0 的整数", key)
}
return nil
case "GlobalApiRateLimitDuration", "GlobalWebRateLimitDuration", "UploadRateLimitDuration", "DownloadRateLimitDuration", "CriticalRateLimitDuration":
case "GlobalApiRateLimitDuration", "GlobalWebRateLimitDuration", "CriticalRateLimitDuration":
intValue, err := strconv.Atoi(value)
if err != nil || intValue <= 0 {
return fmt.Errorf("%s 必须为大于 0 的整数秒", key)
-37
View File
@@ -25,10 +25,6 @@ func AllOption() ([]*Option, error) {
func InitOptionMap() {
common.OptionMapRWMutex.Lock()
common.OptionMap = make(map[string]string)
common.OptionMap["FileUploadPermission"] = strconv.Itoa(common.FileUploadPermission)
common.OptionMap["FileDownloadPermission"] = strconv.Itoa(common.FileDownloadPermission)
common.OptionMap["ImageUploadPermission"] = strconv.Itoa(common.ImageUploadPermission)
common.OptionMap["ImageDownloadPermission"] = strconv.Itoa(common.ImageDownloadPermission)
common.OptionMap["PasswordLoginEnabled"] = strconv.FormatBool(common.PasswordLoginEnabled)
common.OptionMap["PasswordRegisterEnabled"] = strconv.FormatBool(common.PasswordRegisterEnabled)
common.OptionMap["EmailVerificationEnabled"] = strconv.FormatBool(common.EmailVerificationEnabled)
@@ -95,10 +91,6 @@ func InitOptionMap() {
common.OptionMap["GlobalApiRateLimitDuration"] = strconv.FormatInt(common.GlobalApiRateLimitDuration, 10)
common.OptionMap["GlobalWebRateLimitNum"] = strconv.Itoa(common.GlobalWebRateLimitNum)
common.OptionMap["GlobalWebRateLimitDuration"] = strconv.FormatInt(common.GlobalWebRateLimitDuration, 10)
common.OptionMap["UploadRateLimitNum"] = strconv.Itoa(common.UploadRateLimitNum)
common.OptionMap["UploadRateLimitDuration"] = strconv.FormatInt(common.UploadRateLimitDuration, 10)
common.OptionMap["DownloadRateLimitNum"] = strconv.Itoa(common.DownloadRateLimitNum)
common.OptionMap["DownloadRateLimitDuration"] = strconv.FormatInt(common.DownloadRateLimitDuration, 10)
common.OptionMap["CriticalRateLimitNum"] = strconv.Itoa(common.CriticalRateLimitNum)
common.OptionMap["CriticalRateLimitDuration"] = strconv.FormatInt(common.CriticalRateLimitDuration, 10)
common.OptionMapRWMutex.Unlock()
@@ -151,19 +143,6 @@ func updateOptionMap(key string, value string) {
common.OptionMap = make(map[string]string)
}
common.OptionMap[key] = value
if strings.HasSuffix(key, "Permission") {
intValue, _ := strconv.Atoi(value)
switch key {
case "FileUploadPermission":
common.FileUploadPermission = intValue
case "FileDownloadPermission":
common.FileDownloadPermission = intValue
case "ImageUploadPermission":
common.ImageUploadPermission = intValue
case "ImageDownloadPermission":
common.ImageDownloadPermission = intValue
}
}
if strings.HasSuffix(key, "Enabled") {
boolValue := value == "true"
switch key {
@@ -370,22 +349,6 @@ func updateOptionMap(key string, value string) {
if v, err := strconv.ParseInt(value, 10, 64); err == nil && v > 0 {
common.GlobalWebRateLimitDuration = v
}
case "UploadRateLimitNum":
if v, err := strconv.Atoi(value); err == nil && v > 0 {
common.UploadRateLimitNum = v
}
case "UploadRateLimitDuration":
if v, err := strconv.ParseInt(value, 10, 64); err == nil && v > 0 {
common.UploadRateLimitDuration = v
}
case "DownloadRateLimitNum":
if v, err := strconv.Atoi(value); err == nil && v > 0 {
common.DownloadRateLimitNum = v
}
case "DownloadRateLimitDuration":
if v, err := strconv.ParseInt(value, 10, 64); err == nil && v > 0 {
common.DownloadRateLimitDuration = v
}
case "CriticalRateLimitNum":
if v, err := strconv.Atoi(value); err == nil && v > 0 {
common.CriticalRateLimitNum = v
@@ -121,10 +121,6 @@ const defaultOperationFields = {
GlobalApiRateLimitDuration: '180',
GlobalWebRateLimitNum: '300',
GlobalWebRateLimitDuration: '180',
UploadRateLimitNum: '50',
UploadRateLimitDuration: '60',
DownloadRateLimitNum: '50',
DownloadRateLimitDuration: '60',
CriticalRateLimitNum: '100',
CriticalRateLimitDuration: '1200',
ServerAddress: '',
@@ -428,10 +424,6 @@ export function SettingsPage() {
GlobalApiRateLimitDuration: optionMap.GlobalApiRateLimitDuration ?? '180',
GlobalWebRateLimitNum: optionMap.GlobalWebRateLimitNum ?? '300',
GlobalWebRateLimitDuration: optionMap.GlobalWebRateLimitDuration ?? '180',
UploadRateLimitNum: optionMap.UploadRateLimitNum ?? '50',
UploadRateLimitDuration: optionMap.UploadRateLimitDuration ?? '60',
DownloadRateLimitNum: optionMap.DownloadRateLimitNum ?? '50',
DownloadRateLimitDuration: optionMap.DownloadRateLimitDuration ?? '60',
CriticalRateLimitNum: optionMap.CriticalRateLimitNum ?? '100',
CriticalRateLimitDuration: optionMap.CriticalRateLimitDuration ?? '1200',
ServerAddress: resolvedServerAddress,
@@ -1728,22 +1720,6 @@ export function SettingsPage() {
'GlobalWebRateLimitDuration',
operationFields.GlobalWebRateLimitDuration,
],
[
'UploadRateLimitNum',
operationFields.UploadRateLimitNum,
],
[
'UploadRateLimitDuration',
operationFields.UploadRateLimitDuration,
],
[
'DownloadRateLimitNum',
operationFields.DownloadRateLimitNum,
],
[
'DownloadRateLimitDuration',
operationFields.DownloadRateLimitDuration,
],
[
'CriticalRateLimitNum',
operationFields.CriticalRateLimitNum,
@@ -1856,68 +1832,6 @@ export function SettingsPage() {
</div>
</div>
<div className="rounded-2xl border border-[var(--border-default)] bg-[var(--surface-elevated)] p-5">
<p className="text-sm font-semibold text-[var(--foreground-primary)]">
上传 / 下载限流
</p>
<p className="mt-1 text-sm text-[var(--foreground-muted)]">
用于文件上传与下载接口,建议保留相对严格的阈值。
</p>
<div className="mt-4 grid gap-4 sm:grid-cols-2">
<ResourceField label="上传请求次数">
<ResourceInput
type="number"
value={operationFields.UploadRateLimitNum}
onChange={(event) =>
setOperationFields((previous) => ({
...previous,
UploadRateLimitNum: event.target.value,
}))
}
/>
</ResourceField>
<ResourceField
label={`上传窗口 (${formatSecondsLabel(operationFields.UploadRateLimitDuration)})`}
>
<ResourceInput
type="number"
value={operationFields.UploadRateLimitDuration}
onChange={(event) =>
setOperationFields((previous) => ({
...previous,
UploadRateLimitDuration: event.target.value,
}))
}
/>
</ResourceField>
<ResourceField label="下载请求次数">
<ResourceInput
type="number"
value={operationFields.DownloadRateLimitNum}
onChange={(event) =>
setOperationFields((previous) => ({
...previous,
DownloadRateLimitNum: event.target.value,
}))
}
/>
</ResourceField>
<ResourceField
label={`下载窗口 (${formatSecondsLabel(operationFields.DownloadRateLimitDuration)})`}
>
<ResourceInput
type="number"
value={operationFields.DownloadRateLimitDuration}
onChange={(event) =>
setOperationFields((previous) => ({
...previous,
DownloadRateLimitDuration: event.target.value,
}))
}
/>
</ResourceField>
</div>
</div>
<div className="rounded-2xl border border-[var(--border-default)] bg-[var(--surface-elevated)] p-5">
<p className="text-sm font-semibold text-[var(--foreground-primary)]">