REALITY: Add rate limiting to fallback handling via token bucket

This commit is contained in:
Meo597 2025-03-26 22:45:01 +08:00
parent 800b8b50cc
commit 7ee575ed2a
6 changed files with 132 additions and 32 deletions

View file

@ -500,6 +500,13 @@ type REALITYConfig struct {
MaxTimeDiff uint64 `json:"maxTimeDiff"`
ShortIds []string `json:"shortIds"`
LimitUploadRate float64 `json:"limitUploadRate"`
LimitUploadBrust int64 `json:"limitUploadBrust"`
LimitUploadAfter int64 `json:"limitUploadAfter"`
LimitDownloadRate float64 `json:"limitDownloadRate"`
LimitDownloadBrust int64 `json:"limitDownloadBrust"`
LimitDownloadAfter int64 `json:"limitDownloadAfter"`
Fingerprint string `json:"fingerprint"`
ServerName string `json:"serverName"`
Password string `json:"password"`
@ -600,6 +607,13 @@ func (c *REALITYConfig) Build() (proto.Message, error) {
config.Xver = c.Xver
config.ServerNames = c.ServerNames
config.MaxTimeDiff = c.MaxTimeDiff
config.LimitUploadRate = c.LimitUploadRate
config.LimitUploadBrust = c.LimitUploadBrust
config.LimitUploadAfter = c.LimitUploadAfter
config.LimitDownloadRate = c.LimitDownloadRate
config.LimitDownloadBrust = c.LimitDownloadBrust
config.LimitDownloadAfter = c.LimitDownloadAfter
} else {
config.Fingerprint = strings.ToLower(c.Fingerprint)
if config.Fingerprint == "unsafe" || config.Fingerprint == "hellogolang" {