1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2025-01-02 23:47:07 -05:00
This commit is contained in:
Darien Raymond 2017-04-12 11:13:33 +02:00
commit 64b929862c
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
6 changed files with 99 additions and 83 deletions

View File

@ -10,8 +10,8 @@
"protoc": { "protoc": {
"options": [ "options": [
"--proto_path=$GOPATH/src/", "--proto_path=${env.GOPATH}/src/",
"--proto_path=$GOPATH/src/github.com/google/protobuf/src" "--proto_path=${env.GOPATH}/src/github.com/google/protobuf/src"
] ]
} }
} }

View File

@ -345,7 +345,8 @@ func (m *OutboundHandlerConfig) GetComment() string {
} }
type MultiplexingConfig struct { type MultiplexingConfig struct {
Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"`
Concurrency uint32 `protobuf:"varint,2,opt,name=concurrency" json:"concurrency,omitempty"`
} }
func (m *MultiplexingConfig) Reset() { *m = MultiplexingConfig{} } func (m *MultiplexingConfig) Reset() { *m = MultiplexingConfig{} }
@ -360,6 +361,13 @@ func (m *MultiplexingConfig) GetEnabled() bool {
return false return false
} }
func (m *MultiplexingConfig) GetConcurrency() uint32 {
if m != nil {
return m.Concurrency
}
return 0
}
type SessionFrame struct { type SessionFrame struct {
Id uint32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` Id uint32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
Command SessionFrame_FrameCommand `protobuf:"varint,2,opt,name=command,enum=v2ray.core.app.proxyman.SessionFrame_FrameCommand" json:"command,omitempty"` Command SessionFrame_FrameCommand `protobuf:"varint,2,opt,name=command,enum=v2ray.core.app.proxyman.SessionFrame_FrameCommand" json:"command,omitempty"`
@ -419,61 +427,62 @@ func init() {
func init() { proto.RegisterFile("v2ray.com/core/app/proxyman/config.proto", fileDescriptor0) } func init() { proto.RegisterFile("v2ray.com/core/app/proxyman/config.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{ var fileDescriptor0 = []byte{
// 891 bytes of a gzipped FileDescriptorProto // 899 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x5d, 0x6f, 0x1b, 0x45, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x5d, 0x6f, 0x1b, 0x45,
0x14, 0xed, 0xda, 0xa9, 0x9b, 0xdc, 0x24, 0xce, 0x76, 0x28, 0xad, 0x31, 0x20, 0x82, 0x85, 0x20, 0x14, 0xed, 0xda, 0xa9, 0x9b, 0xdc, 0x24, 0x8e, 0x3b, 0x94, 0xd6, 0x18, 0x10, 0xc6, 0x42, 0x10,
0xa2, 0x68, 0x5d, 0x5c, 0x21, 0x84, 0x84, 0x54, 0x52, 0x27, 0x88, 0x08, 0x42, 0xcc, 0xb8, 0xe2, 0x51, 0xb4, 0x2e, 0xae, 0x10, 0x42, 0x42, 0x2a, 0xa9, 0x13, 0x44, 0x04, 0x21, 0x66, 0x5c, 0xf1,
0xa1, 0x42, 0xb2, 0x26, 0xbb, 0xd3, 0x65, 0xc4, 0xee, 0xcc, 0x68, 0x66, 0x9c, 0x64, 0xdf, 0xf8, 0x50, 0x21, 0x59, 0x93, 0xdd, 0xe9, 0x32, 0x62, 0x77, 0x66, 0x34, 0x33, 0x4e, 0xb2, 0x6f, 0xfc,
0x3d, 0xfc, 0x0a, 0x1e, 0x79, 0xe0, 0x1f, 0xf1, 0x82, 0xe6, 0x63, 0x1d, 0xb7, 0xce, 0xb6, 0x84, 0x1e, 0x7e, 0x05, 0x8f, 0x3c, 0xf0, 0x8f, 0x78, 0x41, 0xf3, 0xb1, 0x8e, 0x53, 0x67, 0x5b, 0x42,
0xaa, 0x2f, 0xd1, 0xcc, 0xe6, 0x9c, 0x33, 0x73, 0xcf, 0xb9, 0x77, 0x64, 0xd8, 0x3b, 0x1b, 0x29, 0xd4, 0x97, 0x68, 0xc6, 0x39, 0xe7, 0xcc, 0xdc, 0x73, 0xee, 0x1d, 0x1b, 0x76, 0x4f, 0x47, 0x8a,
0x52, 0x25, 0xa9, 0x28, 0x87, 0xa9, 0x50, 0x74, 0x48, 0xa4, 0x1c, 0x4a, 0x25, 0x2e, 0xaa, 0x92, 0x94, 0x71, 0x22, 0x8a, 0x61, 0x22, 0x14, 0x1d, 0x12, 0x29, 0x87, 0x52, 0x89, 0xf3, 0xb2, 0x20,
0xf0, 0x61, 0x2a, 0xf8, 0x33, 0x96, 0x27, 0x52, 0x09, 0x23, 0xd0, 0xbd, 0x1a, 0xa9, 0x68, 0x42, 0x7c, 0x98, 0x08, 0xfe, 0x82, 0x65, 0xb1, 0x54, 0xc2, 0x08, 0xf4, 0xa0, 0x42, 0x2a, 0x1a, 0x13,
0xa4, 0x4c, 0x6a, 0x54, 0xff, 0xc1, 0x0b, 0x12, 0xa9, 0x28, 0x4b, 0xc1, 0x87, 0x9a, 0x2a, 0x46, 0x29, 0xe3, 0x0a, 0xd5, 0x7b, 0xf4, 0x92, 0x44, 0x22, 0x8a, 0x42, 0xf0, 0xa1, 0xa6, 0x8a, 0x91,
0x8a, 0xa1, 0xa9, 0x24, 0xcd, 0x66, 0x25, 0xd5, 0x9a, 0xe4, 0xd4, 0x4b, 0xf5, 0x3f, 0xb9, 0x9a, 0x7c, 0x68, 0x4a, 0x49, 0xd3, 0x59, 0x41, 0xb5, 0x26, 0x19, 0xf5, 0x52, 0xbd, 0x4f, 0xae, 0x66,
0xc1, 0xa9, 0x19, 0x92, 0x2c, 0x53, 0x54, 0xeb, 0x00, 0xbc, 0xdf, 0x0c, 0xcc, 0xa8, 0x36, 0x8c, 0x70, 0x6a, 0x86, 0x24, 0x4d, 0x15, 0xd5, 0x3a, 0x00, 0x1f, 0xd6, 0x03, 0x53, 0xaa, 0x0d, 0xe3,
0x13, 0xc3, 0x04, 0x0f, 0xe0, 0x8f, 0x9a, 0xc1, 0x52, 0x28, 0x13, 0x50, 0xc9, 0x0b, 0x28, 0xa3, 0xc4, 0x30, 0xc1, 0x03, 0xf8, 0xa3, 0x7a, 0xb0, 0x14, 0xca, 0x04, 0x54, 0xfc, 0x12, 0xca, 0x28,
0x08, 0xd7, 0xf6, 0xff, 0x43, 0xc6, 0x0d, 0x55, 0x16, 0xbd, 0x5c, 0xf6, 0x60, 0x07, 0xb6, 0x8f, 0xc2, 0xb5, 0xfd, 0xff, 0x90, 0x71, 0x43, 0x95, 0x45, 0x2f, 0x97, 0x3d, 0xd8, 0x81, 0xed, 0x43,
0xf8, 0xa9, 0x98, 0xf3, 0x6c, 0xec, 0x3e, 0x0f, 0xfe, 0x6c, 0x03, 0xda, 0x2f, 0x0a, 0x91, 0xba, 0x7e, 0x22, 0xe6, 0x3c, 0x1d, 0xbb, 0x8f, 0x07, 0x7f, 0x36, 0x01, 0xed, 0xe5, 0xb9, 0x48, 0xdc,
0xb3, 0xa7, 0x46, 0x11, 0x43, 0xf3, 0x0a, 0x1d, 0xc0, 0x9a, 0x2d, 0xb5, 0x17, 0xed, 0x46, 0x7b, 0xd9, 0x53, 0xa3, 0x88, 0xa1, 0x59, 0x89, 0xf6, 0x61, 0xcd, 0x96, 0xda, 0x8d, 0xfa, 0xd1, 0x6e,
0xdd, 0xd1, 0x83, 0xa4, 0xc1, 0xad, 0x64, 0x95, 0x9a, 0x3c, 0xa9, 0x24, 0xc5, 0x8e, 0x8d, 0x7e, 0x7b, 0xf4, 0x28, 0xae, 0x71, 0x2b, 0x5e, 0xa5, 0xc6, 0xcf, 0x4a, 0x49, 0xb1, 0x63, 0xa3, 0xdf,
0x83, 0xcd, 0x54, 0xf0, 0x74, 0xae, 0x14, 0xe5, 0x69, 0xd5, 0x6b, 0xed, 0x46, 0x7b, 0x9b, 0xa3, 0x60, 0x33, 0x11, 0x3c, 0x99, 0x2b, 0x45, 0x79, 0x52, 0x76, 0x1b, 0xfd, 0x68, 0x77, 0x73, 0x74,
0xa3, 0xeb, 0x88, 0xad, 0x7e, 0x1a, 0x5f, 0x0a, 0xe2, 0x65, 0x75, 0x34, 0x83, 0x5b, 0x8a, 0x3e, 0x78, 0x1d, 0xb1, 0xd5, 0x8f, 0xc6, 0x17, 0x82, 0x78, 0x59, 0x1d, 0xcd, 0xe0, 0x8e, 0xa2, 0x2f,
0x53, 0x54, 0xff, 0xda, 0x6b, 0xbb, 0x83, 0x0e, 0x5f, 0xef, 0x20, 0xec, 0xc5, 0x70, 0xad, 0xda, 0x14, 0xd5, 0xbf, 0x76, 0x9b, 0xee, 0xa0, 0x83, 0x9b, 0x1d, 0x84, 0xbd, 0x18, 0xae, 0x54, 0x7b,
0xff, 0x02, 0xde, 0x7f, 0xe9, 0x75, 0xd0, 0x1d, 0xb8, 0x79, 0x46, 0x8a, 0xb9, 0x77, 0x6d, 0x1b, 0x5f, 0xc0, 0xfb, 0xaf, 0xbc, 0x0e, 0xba, 0x07, 0xb7, 0x4f, 0x49, 0x3e, 0xf7, 0xae, 0x6d, 0x63,
0xfb, 0x4d, 0xff, 0x73, 0x78, 0xa7, 0x51, 0xfc, 0x6a, 0xca, 0xe0, 0x33, 0x58, 0xb3, 0x2e, 0x22, 0xbf, 0xe9, 0x7d, 0x0e, 0xef, 0xd4, 0x8a, 0x5f, 0x4d, 0x19, 0x7c, 0x06, 0x6b, 0xd6, 0x45, 0x04,
0x80, 0xce, 0x7e, 0x71, 0x4e, 0x2a, 0x1d, 0xdf, 0xb0, 0x6b, 0x4c, 0x78, 0x26, 0xca, 0x38, 0x42, 0xd0, 0xda, 0xcb, 0xcf, 0x48, 0xa9, 0x3b, 0xb7, 0xec, 0x1a, 0x13, 0x9e, 0x8a, 0xa2, 0x13, 0xa1,
0x5b, 0xb0, 0x7e, 0x78, 0x61, 0xe3, 0x25, 0x45, 0xdc, 0xb2, 0x11, 0x76, 0x31, 0x4d, 0x29, 0x3b, 0x2d, 0x58, 0x3f, 0x38, 0xb7, 0xf1, 0x92, 0xbc, 0xd3, 0xb0, 0x11, 0xb6, 0x31, 0x4d, 0x28, 0x3b,
0xa3, 0xca, 0xa7, 0x8a, 0x1e, 0x01, 0xd8, 0x26, 0x98, 0x29, 0xc2, 0x73, 0xaf, 0xbd, 0x39, 0xda, 0xa5, 0xca, 0xa7, 0x8a, 0x9e, 0x00, 0xd8, 0x26, 0x98, 0x29, 0xc2, 0x33, 0xaf, 0xbd, 0x39, 0xea,
0x5d, 0xb6, 0xc3, 0x77, 0x53, 0xc2, 0xa9, 0x49, 0x26, 0x42, 0x19, 0x6c, 0x71, 0x78, 0x43, 0xd6, 0x2f, 0xdb, 0xe1, 0xbb, 0x29, 0xe6, 0xd4, 0xc4, 0x13, 0xa1, 0x0c, 0xb6, 0x38, 0xbc, 0x21, 0xab,
0x4b, 0xf4, 0x15, 0x74, 0x0a, 0xa6, 0x0d, 0xe5, 0x21, 0xb4, 0x0f, 0x1b, 0xc8, 0x47, 0x93, 0x13, 0x25, 0xfa, 0x0a, 0x5a, 0x39, 0xd3, 0x86, 0xf2, 0x10, 0xda, 0x87, 0x35, 0xe4, 0xc3, 0xc9, 0xb1,
0x75, 0x20, 0x4a, 0xc2, 0x38, 0x0e, 0x04, 0xf4, 0x0b, 0xbc, 0x45, 0x16, 0xf5, 0xce, 0x74, 0x28, 0xda, 0x17, 0x05, 0x61, 0x1c, 0x07, 0x02, 0xfa, 0x05, 0xde, 0x22, 0x8b, 0x7a, 0x67, 0x3a, 0x14,
0x38, 0x64, 0x72, 0xff, 0x1a, 0x99, 0x60, 0x44, 0x56, 0x1b, 0xf3, 0x09, 0xec, 0x68, 0xa3, 0x28, 0x1c, 0x32, 0x79, 0x78, 0x8d, 0x4c, 0x30, 0x22, 0xab, 0x8d, 0xf9, 0x0c, 0x76, 0xb4, 0x51, 0x94,
0x29, 0x67, 0x9a, 0x1a, 0xc3, 0x78, 0xae, 0x7b, 0x6b, 0xab, 0xca, 0x8b, 0x31, 0x48, 0xea, 0x31, 0x14, 0x33, 0x4d, 0x8d, 0x61, 0x3c, 0xd3, 0xdd, 0xb5, 0x55, 0xe5, 0xc5, 0x18, 0xc4, 0xd5, 0x18,
0x48, 0xa6, 0x8e, 0xe5, 0xfd, 0xc1, 0x5d, 0xaf, 0x31, 0x0d, 0x12, 0xe8, 0x1b, 0x78, 0x4f, 0x79, 0xc4, 0x53, 0xc7, 0xf2, 0xfe, 0xe0, 0xb6, 0xd7, 0x98, 0x06, 0x09, 0xf4, 0x0d, 0xbc, 0xa7, 0xbc,
0x07, 0x67, 0x42, 0xb1, 0x9c, 0x71, 0x52, 0xcc, 0x96, 0x46, 0xb2, 0x77, 0x73, 0x37, 0xda, 0x5b, 0x83, 0x33, 0xa1, 0x58, 0xc6, 0x38, 0xc9, 0x67, 0x4b, 0x23, 0xd9, 0xbd, 0xdd, 0x8f, 0x76, 0xd7,
0xc7, 0xfd, 0x80, 0x39, 0x09, 0x90, 0x83, 0x4b, 0x04, 0xfa, 0x1a, 0x7a, 0xf6, 0xb6, 0xe7, 0x33, 0x71, 0x2f, 0x60, 0x8e, 0x03, 0x64, 0xff, 0x02, 0x81, 0xbe, 0x86, 0xae, 0xbd, 0xed, 0xd9, 0x4c,
0x49, 0xb4, 0xb6, 0x3a, 0xa9, 0xe0, 0x9c, 0xa6, 0x8e, 0xdd, 0xb1, 0xec, 0xc7, 0xad, 0x5e, 0x84, 0x12, 0xad, 0xad, 0x4e, 0x22, 0x38, 0xa7, 0x89, 0x63, 0xb7, 0x2c, 0xfb, 0x69, 0xa3, 0x1b, 0xe1,
0xef, 0x3a, 0xcc, 0xc4, 0x43, 0xc6, 0x0b, 0xc4, 0xe0, 0xef, 0x08, 0xee, 0x84, 0xb9, 0xfc, 0x8e, 0xfb, 0x0e, 0x33, 0xf1, 0x90, 0xf1, 0x02, 0x31, 0xf8, 0x3b, 0x82, 0x7b, 0x61, 0x2e, 0xbf, 0x23,
0xf0, 0xac, 0x58, 0x04, 0x19, 0x43, 0xdb, 0x90, 0xdc, 0x25, 0xb8, 0x81, 0xed, 0x12, 0x4d, 0xe1, 0x3c, 0xcd, 0x17, 0x41, 0x76, 0xa0, 0x69, 0x48, 0xe6, 0x12, 0xdc, 0xc0, 0x76, 0x89, 0xa6, 0x70,
0x76, 0xb8, 0x86, 0xba, 0xb4, 0xc0, 0x87, 0xf4, 0xf1, 0x15, 0x21, 0xf9, 0x77, 0xcb, 0x0d, 0x65, 0x37, 0x5c, 0x43, 0x5d, 0x58, 0xe0, 0x43, 0xfa, 0xf8, 0x8a, 0x90, 0xfc, 0xbb, 0xe5, 0x86, 0x32,
0x76, 0xec, 0x9f, 0x2d, 0x1c, 0xd7, 0x02, 0x8b, 0xfa, 0x8f, 0xa1, 0xeb, 0x82, 0xb8, 0x54, 0x6c, 0x3d, 0xf2, 0xcf, 0x16, 0xee, 0x54, 0x02, 0x8b, 0xfa, 0x8f, 0xa0, 0xed, 0x82, 0xb8, 0x50, 0x6c,
0x5f, 0x4b, 0x71, 0xdb, 0xb1, 0x6b, 0xb9, 0x41, 0x0c, 0xdd, 0x93, 0xb9, 0x59, 0x7e, 0x66, 0xfe, 0x5e, 0x4b, 0x71, 0xdb, 0xb1, 0x2b, 0xb9, 0x41, 0x07, 0xda, 0xc7, 0x73, 0xb3, 0xfc, 0xcc, 0xfc,
0x6a, 0xc1, 0xd6, 0x94, 0xf2, 0x6c, 0x51, 0xd8, 0x43, 0x68, 0x9f, 0x31, 0x12, 0x5a, 0xf3, 0x3f, 0xd5, 0x80, 0xad, 0x29, 0xe5, 0xe9, 0xa2, 0xb0, 0xc7, 0xd0, 0x3c, 0x65, 0x24, 0xb4, 0xe6, 0x7f,
0x74, 0x97, 0x45, 0x5f, 0x15, 0x7e, 0xeb, 0xf5, 0xc3, 0xff, 0xa9, 0xa1, 0xf8, 0x4f, 0x5f, 0x21, 0xe8, 0x2e, 0x8b, 0xbe, 0x2a, 0xfc, 0xc6, 0xcd, 0xc3, 0xff, 0xa9, 0xa6, 0xf8, 0x4f, 0x5f, 0x23,
0x3a, 0xb1, 0xa4, 0xa0, 0xf9, 0xbc, 0x01, 0xe8, 0x29, 0xa0, 0x72, 0x5e, 0x18, 0x26, 0x0b, 0x7a, 0x3a, 0xb1, 0xa4, 0xa0, 0x79, 0xd9, 0x00, 0xf4, 0x1c, 0x50, 0x31, 0xcf, 0x0d, 0x93, 0x39, 0x3d,
0xf1, 0xd2, 0x46, 0x7d, 0x6e, 0x04, 0x8e, 0x6b, 0x0a, 0xe3, 0x79, 0xd0, 0xbd, 0xbd, 0x90, 0x59, 0x7f, 0x65, 0xa3, 0x5e, 0x1a, 0x81, 0xa3, 0x8a, 0xc2, 0x78, 0x16, 0x74, 0xef, 0x2e, 0x64, 0x16,
0x98, 0xfb, 0x4f, 0x04, 0x6f, 0xd7, 0xee, 0xbe, 0xaa, 0x59, 0x4e, 0x60, 0x47, 0x3b, 0xd7, 0xff, 0xe6, 0xfe, 0x13, 0xc1, 0xdb, 0x95, 0xbb, 0xaf, 0x6b, 0x96, 0x63, 0xd8, 0xd1, 0xce, 0xf5, 0xff,
0x6f, 0xab, 0x74, 0x3d, 0xfd, 0x0d, 0x35, 0x0a, 0xba, 0x0b, 0x1d, 0x7a, 0x21, 0x99, 0xa2, 0xce, 0xdb, 0x2a, 0x6d, 0x4f, 0x7f, 0x43, 0x8d, 0x82, 0xee, 0x43, 0x8b, 0x9e, 0x4b, 0xa6, 0xa8, 0xf3,
0x9b, 0x36, 0x0e, 0x3b, 0xd4, 0x83, 0x5b, 0x56, 0x84, 0x72, 0xe3, 0x46, 0x6f, 0x03, 0xd7, 0xdb, 0xa6, 0x89, 0xc3, 0x0e, 0x75, 0xe1, 0x8e, 0x15, 0xa1, 0xdc, 0xb8, 0xd1, 0xdb, 0xc0, 0xd5, 0x76,
0x41, 0x02, 0x68, 0xd5, 0x26, 0x8b, 0xa7, 0x9c, 0x9c, 0x16, 0x34, 0x73, 0xd5, 0xaf, 0xe3, 0x7a, 0x30, 0x01, 0xb4, 0x6a, 0x93, 0xc5, 0x53, 0x4e, 0x4e, 0x72, 0x9a, 0xba, 0xea, 0xd7, 0x71, 0xb5,
0x3b, 0xf8, 0xdd, 0x35, 0x9e, 0xd6, 0x4c, 0xf0, 0x6f, 0x15, 0x29, 0x29, 0xea, 0x42, 0x8b, 0x65, 0x45, 0xfd, 0xd5, 0xaf, 0xa0, 0xed, 0x4b, 0xdf, 0x1b, 0x83, 0xdf, 0x5d, 0x6b, 0x6a, 0xcd, 0x04,
0xe1, 0xb9, 0x6d, 0xb1, 0x0c, 0xfd, 0xe0, 0x8f, 0x22, 0x3c, 0x73, 0xd6, 0x74, 0x47, 0xa3, 0xc6, 0xff, 0x56, 0x91, 0x82, 0xa2, 0x36, 0x34, 0x58, 0x1a, 0x1e, 0xe4, 0x06, 0x4b, 0xd1, 0x0f, 0xfe,
0x7c, 0x96, 0x75, 0x12, 0xf7, 0x77, 0xec, 0x99, 0xb8, 0x96, 0x40, 0x5f, 0x42, 0xc7, 0x10, 0x95, 0x32, 0x84, 0xa7, 0x8e, 0xde, 0x1e, 0x8d, 0x6a, 0x13, 0x5c, 0xd6, 0x89, 0xdd, 0xdf, 0xb1, 0x67,
0x53, 0x13, 0x7c, 0xf9, 0xa0, 0xa1, 0xb3, 0x0f, 0x79, 0x26, 0x05, 0xe3, 0x06, 0x07, 0xb8, 0xad, 0xe2, 0x4a, 0x02, 0x7d, 0x09, 0x2d, 0x43, 0x54, 0x46, 0x4d, 0x70, 0xee, 0x83, 0x9a, 0xde, 0x3f,
0x40, 0x92, 0xaa, 0x10, 0x24, 0x73, 0x56, 0x6c, 0xe1, 0x7a, 0x3b, 0x78, 0x04, 0x5b, 0xcb, 0x67, 0xe0, 0xa9, 0x14, 0x8c, 0x1b, 0x1c, 0xe0, 0xb6, 0x46, 0x49, 0xca, 0x5c, 0x90, 0xd4, 0x99, 0xb5,
0xa1, 0x2e, 0x40, 0xb8, 0xc8, 0x8f, 0xf4, 0x3c, 0xbe, 0x81, 0x76, 0x60, 0x33, 0xec, 0xbf, 0xa7, 0x85, 0xab, 0xed, 0xe0, 0x09, 0x6c, 0x2d, 0x9f, 0x85, 0xda, 0x00, 0xe1, 0x22, 0x3f, 0xd2, 0xb3,
0x54, 0xc6, 0xd1, 0x12, 0xe0, 0x90, 0x67, 0x71, 0xeb, 0xf1, 0x18, 0xde, 0x4d, 0x45, 0xd9, 0x54, 0xce, 0x2d, 0xb4, 0x03, 0x9b, 0x61, 0xff, 0x3d, 0xa5, 0xb2, 0x13, 0x2d, 0x01, 0x0e, 0x78, 0xda,
0xd5, 0x24, 0x7a, 0xba, 0x5e, 0xaf, 0xff, 0x68, 0xdd, 0xfb, 0x79, 0x84, 0x49, 0x95, 0x8c, 0x2d, 0x69, 0x3c, 0x1d, 0xc3, 0xbb, 0x89, 0x28, 0xea, 0xaa, 0x9a, 0x44, 0xcf, 0xd7, 0xab, 0xf5, 0x1f,
0x6a, 0x5f, 0x4a, 0xdf, 0xe3, 0x25, 0xe1, 0xa7, 0x1d, 0xf7, 0xfb, 0xe1, 0xe1, 0xbf, 0x01, 0x00, 0x8d, 0x07, 0x3f, 0x8f, 0x30, 0x29, 0xe3, 0xb1, 0x45, 0xed, 0x49, 0xe9, 0xa7, 0xa0, 0x20, 0xfc,
0x00, 0xff, 0xff, 0x4c, 0xc8, 0xc1, 0x3b, 0x62, 0x09, 0x00, 0x00, 0xa4, 0xe5, 0x7e, 0x61, 0x3c, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0x70, 0x61, 0x1e, 0xe3, 0x84,
0x09, 0x00, 0x00,
} }

View File

@ -83,20 +83,8 @@ message OutboundHandlerConfig {
} }
message MultiplexingConfig { message MultiplexingConfig {
// Whether or not Mux is enabled.
bool enabled = 1; bool enabled = 1;
} // Max number of concurrent connections that one Mux connection can handle.
uint32 concurrency = 2;
message SessionFrame {
uint32 id = 1;
enum FrameCommand {
SessionNew = 0;
SessionKeep = 1;
SessionEnd = 2;
}
FrameCommand command = 2;
v2ray.core.common.net.Endpoint target = 3;
bytes payload = 4;
} }

View File

@ -10,6 +10,7 @@ import (
"v2ray.com/core/app" "v2ray.com/core/app"
"v2ray.com/core/app/dispatcher" "v2ray.com/core/app/dispatcher"
"v2ray.com/core/app/log" "v2ray.com/core/app/log"
"v2ray.com/core/app/proxyman"
"v2ray.com/core/common/buf" "v2ray.com/core/common/buf"
"v2ray.com/core/common/net" "v2ray.com/core/common/net"
"v2ray.com/core/common/signal" "v2ray.com/core/common/signal"
@ -18,8 +19,7 @@ import (
) )
const ( const (
maxParallel = 8 maxTotal = 128
maxTotal = 128
) )
type manager interface { type manager interface {
@ -63,12 +63,14 @@ type ClientManager struct {
clients []*Client clients []*Client
proxy proxy.Outbound proxy proxy.Outbound
dialer proxy.Dialer dialer proxy.Dialer
config *proxyman.MultiplexingConfig
} }
func NewClientManager(p proxy.Outbound, d proxy.Dialer) *ClientManager { func NewClientManager(p proxy.Outbound, d proxy.Dialer, c *proxyman.MultiplexingConfig) *ClientManager {
return &ClientManager{ return &ClientManager{
proxy: p, proxy: p,
dialer: d, dialer: d,
config: c,
} }
} }
@ -118,6 +120,7 @@ type Client struct {
cancel context.CancelFunc cancel context.CancelFunc
manager *ClientManager manager *ClientManager
session2Remove chan uint16 session2Remove chan uint16
concurrency uint32
} }
var muxCoolDestination = net.TCPDestination(net.DomainAddress("v1.mux.cool"), net.Port(9527)) var muxCoolDestination = net.TCPDestination(net.DomainAddress("v1.mux.cool"), net.Port(9527))
@ -135,6 +138,7 @@ func NewClient(p proxy.Outbound, dialer proxy.Dialer, m *ClientManager) (*Client
manager: m, manager: m,
count: 0, count: 0,
session2Remove: make(chan uint16, 16), session2Remove: make(chan uint16, 16),
concurrency: m.config.Concurrency,
} }
go c.fetchOutput() go c.fetchOutput()
go c.monitor() go c.monitor()
@ -225,7 +229,7 @@ func (m *Client) Dispatch(ctx context.Context, outboundRay ray.OutboundRay) bool
m.access.Lock() m.access.Lock()
defer m.access.Unlock() defer m.access.Unlock()
if len(m.sessions) >= maxParallel { if len(m.sessions) >= int(m.concurrency) {
return false return false
} }

View File

@ -62,13 +62,18 @@ func NewHandler(ctx context.Context, config *proxyman.OutboundHandlerConfig) (*H
} }
if h.senderSettings != nil && h.senderSettings.MultiplexSettings != nil && h.senderSettings.MultiplexSettings.Enabled { if h.senderSettings != nil && h.senderSettings.MultiplexSettings != nil && h.senderSettings.MultiplexSettings.Enabled {
h.mux = mux.NewClientManager(proxyHandler, h) config := h.senderSettings.MultiplexSettings
if config.Concurrency < 1 || config.Concurrency > 1024 {
return nil, newError("invalid mux concurrency: ", config.Concurrency)
}
h.mux = mux.NewClientManager(proxyHandler, h, config)
} }
h.proxy = proxyHandler h.proxy = proxyHandler
return h, nil return h, nil
} }
// Dispatch implements proxy.Outbound.Dispatch.
func (h *Handler) Dispatch(ctx context.Context, outboundRay ray.OutboundRay) { func (h *Handler) Dispatch(ctx context.Context, outboundRay ray.OutboundRay) {
if h.mux != nil { if h.mux != nil {
err := h.mux.Dispatch(ctx, outboundRay) err := h.mux.Dispatch(ctx, outboundRay)

View File

@ -80,7 +80,15 @@ func (v *InboundConnectionConfig) Build() (*proxyman.InboundHandlerConfig, error
} }
type MuxConfig struct { type MuxConfig struct {
Enabled bool `json:"enabled"` Enabled bool `json:"enabled"`
Concurrency uint16 `json:"concurrency"`
}
func (c *MuxConfig) GetConcurrency() uint16 {
if c.Concurrency == 0 {
return 8
}
return c.Concurrency
} }
type OutboundConnectionConfig struct { type OutboundConnectionConfig struct {
@ -120,7 +128,8 @@ func (v *OutboundConnectionConfig) Build() (*proxyman.OutboundHandlerConfig, err
if v.MuxSettings != nil && v.MuxSettings.Enabled { if v.MuxSettings != nil && v.MuxSettings.Enabled {
senderSettings.MultiplexSettings = &proxyman.MultiplexingConfig{ senderSettings.MultiplexSettings = &proxyman.MultiplexingConfig{
Enabled: true, Enabled: true,
Concurrency: uint32(v.MuxSettings.GetConcurrency()),
} }
} }
@ -270,7 +279,8 @@ func (v *OutboundDetourConfig) Build() (*proxyman.OutboundHandlerConfig, error)
if v.MuxSettings != nil && v.MuxSettings.Enabled { if v.MuxSettings != nil && v.MuxSettings.Enabled {
senderSettings.MultiplexSettings = &proxyman.MultiplexingConfig{ senderSettings.MultiplexSettings = &proxyman.MultiplexingConfig{
Enabled: true, Enabled: true,
Concurrency: uint32(v.MuxSettings.GetConcurrency()),
} }
} }