mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2026-02-26 16:57:08 +00:00
chore: add rate limiting support for reality listener
This commit is contained in:
@@ -9,6 +9,15 @@ type RealityConfig struct {
|
||||
ServerNames []string `inbound:"server-names"`
|
||||
MaxTimeDifference int `inbound:"max-time-difference,omitempty"`
|
||||
Proxy string `inbound:"proxy,omitempty"`
|
||||
|
||||
LimitFallbackUpload RealityLimitFallback `inbound:"limit-fallback-upload,omitempty"`
|
||||
LimitFallbackDownload RealityLimitFallback `inbound:"limit-fallback-download,omitempty"`
|
||||
}
|
||||
|
||||
type RealityLimitFallback struct {
|
||||
AfterBytes uint64 `inbound:"after-bytes,omitempty"`
|
||||
BytesPerSec uint64 `inbound:"bytes-per-sec,omitempty"`
|
||||
BurstBytesPerSec uint64 `inbound:"burst-bytes-per-sec,omitempty"`
|
||||
}
|
||||
|
||||
func (c RealityConfig) Build() reality.Config {
|
||||
@@ -19,5 +28,16 @@ func (c RealityConfig) Build() reality.Config {
|
||||
ServerNames: c.ServerNames,
|
||||
MaxTimeDifference: c.MaxTimeDifference,
|
||||
Proxy: c.Proxy,
|
||||
|
||||
LimitFallbackUpload: reality.LimitFallback{
|
||||
AfterBytes: c.LimitFallbackUpload.AfterBytes,
|
||||
BytesPerSec: c.LimitFallbackUpload.BytesPerSec,
|
||||
BurstBytesPerSec: c.LimitFallbackUpload.BurstBytesPerSec,
|
||||
},
|
||||
LimitFallbackDownload: reality.LimitFallback{
|
||||
AfterBytes: c.LimitFallbackDownload.AfterBytes,
|
||||
BytesPerSec: c.LimitFallbackDownload.BytesPerSec,
|
||||
BurstBytesPerSec: c.LimitFallbackDownload.BurstBytesPerSec,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import (
|
||||
)
|
||||
|
||||
type Conn = utls.Conn
|
||||
type LimitFallback = utls.RealityLimitFallback
|
||||
|
||||
type Config struct {
|
||||
Dest string
|
||||
@@ -28,6 +29,9 @@ type Config struct {
|
||||
ServerNames []string
|
||||
MaxTimeDifference int
|
||||
Proxy string
|
||||
|
||||
LimitFallbackUpload LimitFallback
|
||||
LimitFallbackDownload LimitFallback
|
||||
}
|
||||
|
||||
func (c Config) Build(tunnel C.Tunnel) (*Builder, error) {
|
||||
@@ -73,6 +77,9 @@ func (c Config) Build(tunnel C.Tunnel) (*Builder, error) {
|
||||
return inner.HandleTcp(tunnel, address, c.Proxy)
|
||||
}
|
||||
|
||||
realityConfig.LimitFallbackUpload = c.LimitFallbackUpload
|
||||
realityConfig.LimitFallbackDownload = c.LimitFallbackDownload
|
||||
|
||||
return &Builder{realityConfig}, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user