From 7a7632397d27bebb11bd947c10a6a575d8eda5bc Mon Sep 17 00:00:00 2001 From: Meo597 <197331664+Meo597@users.noreply.github.com> Date: Sun, 8 Jun 2025 15:12:27 +0800 Subject: [PATCH] New config file style --- go.mod | 4 +- go.sum | 4 +- infra/conf/transport_internet.go | 24 +-- transport/internet/reality/config.go | 12 +- transport/internet/reality/config.pb.go | 207 ++++++++++++++---------- transport/internet/reality/config.proto | 14 +- 6 files changed, 151 insertions(+), 114 deletions(-) diff --git a/go.mod b/go.mod index 5de6c38e..b8c6d235 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e github.com/vishvananda/netlink v1.3.1 - github.com/xtls/reality v0.0.0-20250607113038-1b088adc09e0 + github.com/xtls/reality v0.0.0-20250608065753-4b636d90bde2 go4.org/netipx v0.0.0-20231129151722-fdeea329fbba golang.org/x/crypto v0.39.0 golang.org/x/net v0.41.0 @@ -35,7 +35,7 @@ require ( ) // [TODO] Temp: use forked reality until upstream merges #12 -replace github.com/xtls/reality => github.com/meo597/reality v0.0.0-20250607113038-1b088adc09e0 +replace github.com/xtls/reality => github.com/meo597/reality v0.0.0-20250608065753-4b636d90bde2 require ( github.com/andybalholm/brotli v1.1.0 // indirect diff --git a/go.sum b/go.sum index 22430b8c..0eb7e296 100644 --- a/go.sum +++ b/go.sum @@ -40,8 +40,8 @@ github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0N github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/meo597/reality v0.0.0-20250607113038-1b088adc09e0 h1:cUvj5jVQrE8sJ9qJy8vNcmawdTmF8CMtCVnn7KqArs0= -github.com/meo597/reality v0.0.0-20250607113038-1b088adc09e0/go.mod h1:yD47RN65bDLZgyHWMfFDiqlzrq4usDMt/Xzsk6tMbhw= +github.com/meo597/reality v0.0.0-20250608065753-4b636d90bde2 h1:51SdYH7bCdJ/Nln6UG6aaYEvFw6mr9uCbqhR6Oo/MvQ= +github.com/meo597/reality v0.0.0-20250608065753-4b636d90bde2/go.mod h1:yD47RN65bDLZgyHWMfFDiqlzrq4usDMt/Xzsk6tMbhw= github.com/miekg/dns v1.1.66 h1:FeZXOS3VCVsKnEAd+wBkjMC3D2K+ww66Cq3VnCINuJE= github.com/miekg/dns v1.1.66/go.mod h1:jGFzBsSNbJw6z1HYut1RKBKHA9PBdxeHrZG8J+gC2WE= github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= diff --git a/infra/conf/transport_internet.go b/infra/conf/transport_internet.go index 0f74c9d9..0d1c5c1e 100644 --- a/infra/conf/transport_internet.go +++ b/infra/conf/transport_internet.go @@ -500,12 +500,12 @@ type REALITYConfig struct { MaxTimeDiff uint64 `json:"maxTimeDiff"` ShortIds []string `json:"shortIds"` - LimitUploadRate float64 `json:"limitUploadRate"` - LimitUploadBurst int64 `json:"limitUploadBurst"` - LimitUploadAfter int64 `json:"limitUploadAfter"` - LimitDownloadRate float64 `json:"limitDownloadRate"` - LimitDownloadBurst int64 `json:"limitDownloadBurst"` - LimitDownloadAfter int64 `json:"limitDownloadAfter"` + LimitFbUploadRate float64 `json:"limitFbUploadRate"` + LimitFbUploadBurst int64 `json:"limitFbUploadBurst"` + LimitFbUploadAfter int64 `json:"limitFbUploadAfter"` + LimitFbDownloadRate float64 `json:"limitFbDownloadRate"` + LimitFbDownloadBurst int64 `json:"limitFbDownloadBurst"` + LimitFbDownloadAfter int64 `json:"limitFbDownloadAfter"` Fingerprint string `json:"fingerprint"` ServerName string `json:"serverName"` @@ -608,12 +608,12 @@ func (c *REALITYConfig) Build() (proto.Message, error) { config.ServerNames = c.ServerNames config.MaxTimeDiff = c.MaxTimeDiff - config.LimitUploadRate = c.LimitUploadRate - config.LimitUploadBurst = c.LimitUploadBurst - config.LimitUploadAfter = c.LimitUploadAfter - config.LimitDownloadRate = c.LimitDownloadRate - config.LimitDownloadBurst = c.LimitDownloadBurst - config.LimitDownloadAfter = c.LimitDownloadAfter + config.LimitFallbackUpload.BytesPerSec = c.LimitFbUploadRate + config.LimitFallbackUpload.BurstBytesPerSec = c.LimitFbUploadBurst + config.LimitFallbackUpload.AfterBytes = c.LimitFbUploadAfter + config.LimitFallbackDownload.BytesPerSec = c.LimitFbDownloadRate + config.LimitFallbackDownload.BurstBytesPerSec = c.LimitFbDownloadBurst + config.LimitFallbackDownload.AfterBytes = c.LimitFbDownloadAfter } else { config.Fingerprint = strings.ToLower(c.Fingerprint) if config.Fingerprint == "unsafe" || config.Fingerprint == "hellogolang" { diff --git a/transport/internet/reality/config.go b/transport/internet/reality/config.go index cede82e1..79bb69de 100644 --- a/transport/internet/reality/config.go +++ b/transport/internet/reality/config.go @@ -32,12 +32,12 @@ func (c *Config) GetREALITYConfig() *reality.Config { KeyLogWriter: KeyLogWriterFromConfig(c), - LimitUploadRate: c.LimitUploadRate, - LimitUploadBurst: c.LimitUploadBurst, - LimitUploadAfter: c.LimitUploadAfter, - LimitDownloadRate: c.LimitDownloadRate, - LimitDownloadBurst: c.LimitDownloadBurst, - LimitDownloadAfter: c.LimitDownloadAfter, + LimitFbUploadRate: c.LimitFallbackUpload.BytesPerSec, + LimitFbUploadBurst: c.LimitFallbackUpload.BurstBytesPerSec, + LimitFbUploadAfter: c.LimitFallbackUpload.AfterBytes, + LimitFbDownloadRate: c.LimitFallbackDownload.BytesPerSec, + LimitFbDownloadBurst: c.LimitFallbackDownload.BurstBytesPerSec, + LimitFbDownloadAfter: c.LimitFallbackDownload.AfterBytes, } config.ServerNames = make(map[string]bool) for _, serverName := range c.ServerNames { diff --git a/transport/internet/reality/config.pb.go b/transport/internet/reality/config.pb.go index 2d16a201..e756948f 100644 --- a/transport/internet/reality/config.pb.go +++ b/transport/internet/reality/config.pb.go @@ -25,29 +25,25 @@ type Config struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Show bool `protobuf:"varint,1,opt,name=show,proto3" json:"show,omitempty"` - Dest string `protobuf:"bytes,2,opt,name=dest,proto3" json:"dest,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - Xver uint64 `protobuf:"varint,4,opt,name=xver,proto3" json:"xver,omitempty"` - ServerNames []string `protobuf:"bytes,5,rep,name=server_names,json=serverNames,proto3" json:"server_names,omitempty"` - PrivateKey []byte `protobuf:"bytes,6,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` - MinClientVer []byte `protobuf:"bytes,7,opt,name=min_client_ver,json=minClientVer,proto3" json:"min_client_ver,omitempty"` - MaxClientVer []byte `protobuf:"bytes,8,opt,name=max_client_ver,json=maxClientVer,proto3" json:"max_client_ver,omitempty"` - MaxTimeDiff uint64 `protobuf:"varint,9,opt,name=max_time_diff,json=maxTimeDiff,proto3" json:"max_time_diff,omitempty"` - ShortIds [][]byte `protobuf:"bytes,10,rep,name=short_ids,json=shortIds,proto3" json:"short_ids,omitempty"` - Fingerprint string `protobuf:"bytes,21,opt,name=Fingerprint,proto3" json:"Fingerprint,omitempty"` - ServerName string `protobuf:"bytes,22,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"` - PublicKey []byte `protobuf:"bytes,23,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - ShortId []byte `protobuf:"bytes,24,opt,name=short_id,json=shortId,proto3" json:"short_id,omitempty"` - SpiderX string `protobuf:"bytes,25,opt,name=spider_x,json=spiderX,proto3" json:"spider_x,omitempty"` - SpiderY []int64 `protobuf:"varint,26,rep,packed,name=spider_y,json=spiderY,proto3" json:"spider_y,omitempty"` - MasterKeyLog string `protobuf:"bytes,27,opt,name=master_key_log,json=masterKeyLog,proto3" json:"master_key_log,omitempty"` - LimitUploadRate float64 `protobuf:"fixed64,28,opt,name=limit_upload_rate,json=limitUploadRate,proto3" json:"limit_upload_rate,omitempty"` - LimitUploadBurst int64 `protobuf:"zigzag64,29,opt,name=limit_upload_burst,json=limitUploadBurst,proto3" json:"limit_upload_burst,omitempty"` - LimitUploadAfter int64 `protobuf:"zigzag64,30,opt,name=limit_upload_after,json=limitUploadAfter,proto3" json:"limit_upload_after,omitempty"` - LimitDownloadRate float64 `protobuf:"fixed64,31,opt,name=limit_download_rate,json=limitDownloadRate,proto3" json:"limit_download_rate,omitempty"` - LimitDownloadBurst int64 `protobuf:"zigzag64,32,opt,name=limit_download_burst,json=limitDownloadBurst,proto3" json:"limit_download_burst,omitempty"` - LimitDownloadAfter int64 `protobuf:"zigzag64,33,opt,name=limit_download_after,json=limitDownloadAfter,proto3" json:"limit_download_after,omitempty"` + Show bool `protobuf:"varint,1,opt,name=show,proto3" json:"show,omitempty"` + Dest string `protobuf:"bytes,2,opt,name=dest,proto3" json:"dest,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Xver uint64 `protobuf:"varint,4,opt,name=xver,proto3" json:"xver,omitempty"` + ServerNames []string `protobuf:"bytes,5,rep,name=server_names,json=serverNames,proto3" json:"server_names,omitempty"` + PrivateKey []byte `protobuf:"bytes,6,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` + MinClientVer []byte `protobuf:"bytes,7,opt,name=min_client_ver,json=minClientVer,proto3" json:"min_client_ver,omitempty"` + MaxClientVer []byte `protobuf:"bytes,8,opt,name=max_client_ver,json=maxClientVer,proto3" json:"max_client_ver,omitempty"` + MaxTimeDiff uint64 `protobuf:"varint,9,opt,name=max_time_diff,json=maxTimeDiff,proto3" json:"max_time_diff,omitempty"` + ShortIds [][]byte `protobuf:"bytes,10,rep,name=short_ids,json=shortIds,proto3" json:"short_ids,omitempty"` + Fingerprint string `protobuf:"bytes,21,opt,name=Fingerprint,proto3" json:"Fingerprint,omitempty"` + ServerName string `protobuf:"bytes,22,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"` + PublicKey []byte `protobuf:"bytes,23,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + ShortId []byte `protobuf:"bytes,24,opt,name=short_id,json=shortId,proto3" json:"short_id,omitempty"` + SpiderX string `protobuf:"bytes,25,opt,name=spider_x,json=spiderX,proto3" json:"spider_x,omitempty"` + SpiderY []int64 `protobuf:"varint,26,rep,packed,name=spider_y,json=spiderY,proto3" json:"spider_y,omitempty"` + MasterKeyLog string `protobuf:"bytes,27,opt,name=master_key_log,json=masterKeyLog,proto3" json:"master_key_log,omitempty"` + LimitFallbackUpload *LimitFallback `protobuf:"bytes,28,opt,name=limit_fallback_upload,json=limitFallbackUpload,proto3" json:"limit_fallback_upload,omitempty"` + LimitFallbackDownload *LimitFallback `protobuf:"bytes,29,opt,name=limit_fallback_download,json=limitFallbackDownload,proto3" json:"limit_fallback_download,omitempty"` } func (x *Config) Reset() { @@ -199,44 +195,77 @@ func (x *Config) GetMasterKeyLog() string { return "" } -func (x *Config) GetLimitUploadRate() float64 { +func (x *Config) GetLimitFallbackUpload() *LimitFallback { if x != nil { - return x.LimitUploadRate + return x.LimitFallbackUpload + } + return nil +} + +func (x *Config) GetLimitFallbackDownload() *LimitFallback { + if x != nil { + return x.LimitFallbackDownload + } + return nil +} + +type LimitFallback struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BytesPerSec float64 `protobuf:"fixed64,1,opt,name=bytes_per_sec,json=bytesPerSec,proto3" json:"bytes_per_sec,omitempty"` + BurstBytesPerSec int64 `protobuf:"zigzag64,2,opt,name=burst_bytes_per_sec,json=burstBytesPerSec,proto3" json:"burst_bytes_per_sec,omitempty"` + AfterBytes int64 `protobuf:"zigzag64,3,opt,name=after_bytes,json=afterBytes,proto3" json:"after_bytes,omitempty"` +} + +func (x *LimitFallback) Reset() { + *x = LimitFallback{} + mi := &file_transport_internet_reality_config_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LimitFallback) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LimitFallback) ProtoMessage() {} + +func (x *LimitFallback) ProtoReflect() protoreflect.Message { + mi := &file_transport_internet_reality_config_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LimitFallback.ProtoReflect.Descriptor instead. +func (*LimitFallback) Descriptor() ([]byte, []int) { + return file_transport_internet_reality_config_proto_rawDescGZIP(), []int{1} +} + +func (x *LimitFallback) GetBytesPerSec() float64 { + if x != nil { + return x.BytesPerSec } return 0 } -func (x *Config) GetLimitUploadBurst() int64 { +func (x *LimitFallback) GetBurstBytesPerSec() int64 { if x != nil { - return x.LimitUploadBurst + return x.BurstBytesPerSec } return 0 } -func (x *Config) GetLimitUploadAfter() int64 { +func (x *LimitFallback) GetAfterBytes() int64 { if x != nil { - return x.LimitUploadAfter - } - return 0 -} - -func (x *Config) GetLimitDownloadRate() float64 { - if x != nil { - return x.LimitDownloadRate - } - return 0 -} - -func (x *Config) GetLimitDownloadBurst() int64 { - if x != nil { - return x.LimitDownloadBurst - } - return 0 -} - -func (x *Config) GetLimitDownloadAfter() int64 { - if x != nil { - return x.LimitDownloadAfter + return x.AfterBytes } return 0 } @@ -248,7 +277,7 @@ var file_transport_internet_reality_config_proto_rawDesc = []byte{ 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x9e, 0x06, 0x0a, 0x06, 0x43, + 0x65, 0x74, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xce, 0x05, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, @@ -281,33 +310,36 @@ var file_transport_internet_reality_config_proto_rawDesc = []byte{ 0x52, 0x07, 0x73, 0x70, 0x69, 0x64, 0x65, 0x72, 0x59, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4c, 0x6f, 0x67, 0x12, - 0x2a, 0x0a, 0x11, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x75, 0x72, 0x73, - 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x10, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x75, 0x72, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, - 0x1e, 0x20, 0x01, 0x28, 0x12, 0x52, 0x10, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x41, 0x66, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x1f, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x18, - 0x20, 0x20, 0x01, 0x28, 0x12, 0x52, 0x12, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x75, 0x72, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x61, 0x66, 0x74, 0x65, - 0x72, 0x18, 0x21, 0x20, 0x01, 0x28, 0x12, 0x52, 0x12, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x66, 0x74, 0x65, 0x72, 0x42, 0x7f, 0x0a, 0x23, 0x63, - 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, - 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0xaa, 0x02, 0x1f, 0x58, 0x72, 0x61, - 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x62, 0x0a, 0x15, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, + 0x6b, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, + 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x13, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x66, 0x0a, 0x17, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x61, 0x6c, + 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x1d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x72, + 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x61, 0x6c, 0x6c, + 0x62, 0x61, 0x63, 0x6b, 0x52, 0x15, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x62, + 0x61, 0x63, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x0d, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x22, 0x0a, + 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, + 0x63, 0x12, 0x2d, 0x0a, 0x13, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x10, + 0x62, 0x75, 0x72, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, + 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x61, 0x66, 0x74, 0x65, 0x72, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x42, 0x7f, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, + 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0xaa, 0x02, 0x1f, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, + 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -322,16 +354,19 @@ func file_transport_internet_reality_config_proto_rawDescGZIP() []byte { return file_transport_internet_reality_config_proto_rawDescData } -var file_transport_internet_reality_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_transport_internet_reality_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) var file_transport_internet_reality_config_proto_goTypes = []any{ - (*Config)(nil), // 0: xray.transport.internet.reality.Config + (*Config)(nil), // 0: xray.transport.internet.reality.Config + (*LimitFallback)(nil), // 1: xray.transport.internet.reality.LimitFallback } var file_transport_internet_reality_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name + 1, // 0: xray.transport.internet.reality.Config.limit_fallback_upload:type_name -> xray.transport.internet.reality.LimitFallback + 1, // 1: xray.transport.internet.reality.Config.limit_fallback_download:type_name -> xray.transport.internet.reality.LimitFallback + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name } func init() { file_transport_internet_reality_config_proto_init() } @@ -345,7 +380,7 @@ func file_transport_internet_reality_config_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_transport_internet_reality_config_proto_rawDesc, NumEnums: 0, - NumMessages: 1, + NumMessages: 2, NumExtensions: 0, NumServices: 0, }, diff --git a/transport/internet/reality/config.proto b/transport/internet/reality/config.proto index 54d87799..9f97f00f 100644 --- a/transport/internet/reality/config.proto +++ b/transport/internet/reality/config.proto @@ -26,10 +26,12 @@ message Config { repeated int64 spider_y = 26; string master_key_log = 27; - double limit_upload_rate = 28; - sint64 limit_upload_burst = 29; - sint64 limit_upload_after = 30; - double limit_download_rate = 31; - sint64 limit_download_burst = 32; - sint64 limit_download_after = 33; + LimitFallback limit_fallback_upload = 28; + LimitFallback limit_fallback_download = 29; +} + +message LimitFallback { + double bytes_per_sec = 1; + sint64 burst_bytes_per_sec = 2; + sint64 after_bytes = 3; }