0
0
mirror of https://github.com/XTLS/REALITY.git synced 2025-08-22 14:38:35 +00:00

Replace Limit to LimitFb

This commit is contained in:
Meo597 2025-06-08 14:40:53 +08:00
parent 5ccbfeb2d4
commit e195acb047
4 changed files with 33 additions and 33 deletions

View File

@ -52,12 +52,12 @@ TODO List: TODO
// The six limit below are optional for rate limiting falling REALITY connections. Default are 0 means disabled // The six limit below are optional for rate limiting falling REALITY connections. Default are 0 means disabled
// WARNING: Enabling rate limiting may create detectable patterns for GFW! // WARNING: Enabling rate limiting may create detectable patterns for GFW!
// If you're a GUI/panel/one-click script developer, RANDOMIZE these parameters! // If you're a GUI/panel/one-click script developer, RANDOMIZE these parameters!
limitUploadRate: 0, // Base upload speed (bytes/s) limitFbUploadRate: 0, // Base upload speed (bytes/s)
limitUploadBurst: 0, // Upload burst capacity (bytes) limitFbUploadBurst: 0, // Upload burst capacity (bytes)
limitUploadAfter: 0, // Start upload throttling after (bytes) limitFbUploadAfter: 0, // Start upload throttling after (bytes)
limitDownloadRate: 0, // Base download speed (bytes/s) limitFbDownloadRate: 0, // Base download speed (bytes/s)
limitDownloadBurst: 0, // Download burst capacity (bytes) limitFbDownloadBurst: 0, // Download burst capacity (bytes)
limitDownloadAfter: 0, // Start download throttling after (bytes) limitFbDownloadAfter: 0, // Start download throttling after (bytes)
}, },
}, },
}, },

View File

@ -51,12 +51,12 @@ TODO List: TODO
], ],
// 下列六个 limit 为选填,可对回落的 REALITY 连接限速。默认为 0 即不启用 // 下列六个 limit 为选填,可对回落的 REALITY 连接限速。默认为 0 即不启用
// 警告启用限速可能会引入新的特征被GFW探测到如果您是GUI/面板/一键脚本开发者,请务必让这些参数随机化! // 警告启用限速可能会引入新的特征被GFW探测到如果您是GUI/面板/一键脚本开发者,请务必让这些参数随机化!
limitUploadRate: 0, // 上行基准速率 (字节/秒) limitFbUploadRate: 0, // 上行基准速率 (字节/秒)
limitUploadBurst: 0, // 上行突发速率 (字节/秒) limitFbUploadBurst: 0, // 上行突发速率 (字节/秒)
limitUploadAfter: 0, // 上行指定字节后开始限速 limitFbUploadAfter: 0, // 上行指定字节后开始限速
limitDownloadRate: 0, // 下行基准速率 (字节/秒) limitFbDownloadRate: 0, // 下行基准速率 (字节/秒)
limitDownloadBurst: 0, // 下行突发速率 (字节/秒) limitFbDownloadBurst: 0, // 下行突发速率 (字节/秒)
limitDownloadAfter: 0, // 下行指定字节后开始限速 limitFbDownloadAfter: 0, // 下行指定字节后开始限速
}, },
}, },
}, },

View File

@ -556,12 +556,12 @@ type Config struct {
MaxTimeDiff time.Duration MaxTimeDiff time.Duration
ShortIds map[[8]byte]bool ShortIds map[[8]byte]bool
LimitUploadRate float64 LimitFbUploadRate float64
LimitUploadBurst int64 LimitFbUploadBurst int64
LimitUploadAfter int64 LimitFbUploadAfter int64
LimitDownloadRate float64 LimitFbDownloadRate float64
LimitDownloadBurst int64 LimitFbDownloadBurst int64
LimitDownloadAfter int64 LimitFbDownloadAfter int64
// Rand provides the source of entropy for nonces and RSA blinding. // Rand provides the source of entropy for nonces and RSA blinding.
// If Rand is nil, TLS uses the cryptographic random reader in package // If Rand is nil, TLS uses the cryptographic random reader in package
@ -977,12 +977,12 @@ func (c *Config) Clone() *Config {
MaxClientVer: c.MaxClientVer, MaxClientVer: c.MaxClientVer,
MaxTimeDiff: c.MaxTimeDiff, MaxTimeDiff: c.MaxTimeDiff,
ShortIds: c.ShortIds, ShortIds: c.ShortIds,
LimitUploadRate: c.LimitUploadRate, LimitFbUploadRate: c.LimitFbUploadRate,
LimitUploadBurst: c.LimitUploadBurst, LimitFbUploadBurst: c.LimitFbUploadBurst,
LimitUploadAfter: c.LimitUploadAfter, LimitFbUploadAfter: c.LimitFbUploadAfter,
LimitDownloadRate: c.LimitDownloadRate, LimitFbDownloadRate: c.LimitFbDownloadRate,
LimitDownloadBurst: c.LimitDownloadBurst, LimitFbDownloadBurst: c.LimitFbDownloadBurst,
LimitDownloadAfter: c.LimitDownloadAfter, LimitFbDownloadAfter: c.LimitFbDownloadAfter,
Rand: c.Rand, Rand: c.Rand,
Time: c.Time, Time: c.Time,
Certificates: c.Certificates, Certificates: c.Certificates,

18
tls.go
View File

@ -247,14 +247,14 @@ func Server(ctx context.Context, conn net.Conn, config *Config) (*Conn, error) {
if config.Show && hs.clientHello != nil { if config.Show && hs.clientHello != nil {
fmt.Printf("REALITY remoteAddr: %v\tforwarded SNI: %v\n", remoteAddr, hs.clientHello.serverName) fmt.Printf("REALITY remoteAddr: %v\tforwarded SNI: %v\n", remoteAddr, hs.clientHello.serverName)
} }
if config.LimitUploadRate == 0 || config.LimitUploadBurst == 0 { if config.LimitFbUploadRate == 0 || config.LimitFbUploadBurst == 0 {
io.Copy(target, underlying) io.Copy(target, underlying)
} else { } else {
// Limit upload speed for fallback connection // Limit upload speed for fallback connection
io.Copy(target, &RatelimitedConn{ io.Copy(target, &RatelimitedConn{
Conn: underlying, Conn: underlying,
Bucket: ratelimit.NewBucketWithRate(config.LimitUploadRate, config.LimitUploadBurst), Bucket: ratelimit.NewBucketWithRate(config.LimitFbUploadRate, config.LimitFbUploadBurst),
LimitAfter: config.LimitUploadAfter - config.LimitUploadBurst, LimitAfter: config.LimitFbUploadAfter - config.LimitFbUploadBurst,
}) })
} }
} }
@ -387,28 +387,28 @@ func Server(ctx context.Context, conn net.Conn, config *Config) (*Conn, error) {
if hs.c.conn == conn { // if we processed the Client Hello successfully but the target did not if hs.c.conn == conn { // if we processed the Client Hello successfully but the target did not
waitGroup.Add(1) waitGroup.Add(1)
go func() { go func() {
if config.LimitUploadRate == 0 || config.LimitUploadBurst == 0 { if config.LimitFbUploadRate == 0 || config.LimitFbUploadBurst == 0 {
io.Copy(target, underlying) io.Copy(target, underlying)
} else { } else {
// Limit upload speed for fallback connection (handshake ok but hello failed) // Limit upload speed for fallback connection (handshake ok but hello failed)
io.Copy(target, &RatelimitedConn{ io.Copy(target, &RatelimitedConn{
Conn: underlying, Conn: underlying,
Bucket: ratelimit.NewBucketWithRate(config.LimitUploadRate, config.LimitUploadBurst), Bucket: ratelimit.NewBucketWithRate(config.LimitFbUploadRate, config.LimitFbUploadBurst),
LimitAfter: config.LimitUploadAfter - config.LimitUploadBurst, LimitAfter: config.LimitFbUploadAfter - config.LimitFbUploadBurst,
}) })
} }
waitGroup.Done() waitGroup.Done()
}() }()
} }
conn.Write(s2cSaved) conn.Write(s2cSaved)
if config.LimitDownloadRate == 0 || config.LimitDownloadBurst == 0 { if config.LimitFbDownloadRate == 0 || config.LimitFbDownloadBurst == 0 {
io.Copy(underlying, target) io.Copy(underlying, target)
} else { } else {
// Limit download speed for fallback connection // Limit download speed for fallback connection
io.Copy(underlying, &RatelimitedConn{ io.Copy(underlying, &RatelimitedConn{
Conn: target, Conn: target,
Bucket: ratelimit.NewBucketWithRate(config.LimitDownloadRate, config.LimitDownloadBurst), Bucket: ratelimit.NewBucketWithRate(config.LimitFbDownloadRate, config.LimitFbDownloadBurst),
LimitAfter: config.LimitDownloadAfter - config.LimitDownloadBurst, LimitAfter: config.LimitFbDownloadAfter - config.LimitFbDownloadBurst,
}) })
} }
// Here is bidirectional direct forwarding: // Here is bidirectional direct forwarding: