1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-22 10:08:15 -05:00

update for mux

This commit is contained in:
Darien Raymond 2017-02-07 21:11:47 +01:00
parent 4e8e15d528
commit b652032d9d
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
7 changed files with 367 additions and 63 deletions

View File

@ -47,6 +47,30 @@ func (x AllocationStrategy_Type) String() string {
} }
func (AllocationStrategy_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } func (AllocationStrategy_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
type SessionFrame_FrameCommand int32
const (
SessionFrame_SessionNew SessionFrame_FrameCommand = 0
SessionFrame_SessionKeep SessionFrame_FrameCommand = 1
SessionFrame_SessionEnd SessionFrame_FrameCommand = 2
)
var SessionFrame_FrameCommand_name = map[int32]string{
0: "SessionNew",
1: "SessionKeep",
2: "SessionEnd",
}
var SessionFrame_FrameCommand_value = map[string]int32{
"SessionNew": 0,
"SessionKeep": 1,
"SessionEnd": 2,
}
func (x SessionFrame_FrameCommand) String() string {
return proto.EnumName(SessionFrame_FrameCommand_name, int32(x))
}
func (SessionFrame_FrameCommand) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 0} }
type InboundConfig struct { type InboundConfig struct {
} }
@ -195,6 +219,7 @@ type InboundHandlerConfig struct {
Tag string `protobuf:"bytes,1,opt,name=tag" json:"tag,omitempty"` Tag string `protobuf:"bytes,1,opt,name=tag" json:"tag,omitempty"`
ReceiverSettings *v2ray_core_common_serial.TypedMessage `protobuf:"bytes,2,opt,name=receiver_settings,json=receiverSettings" json:"receiver_settings,omitempty"` ReceiverSettings *v2ray_core_common_serial.TypedMessage `protobuf:"bytes,2,opt,name=receiver_settings,json=receiverSettings" json:"receiver_settings,omitempty"`
ProxySettings *v2ray_core_common_serial.TypedMessage `protobuf:"bytes,3,opt,name=proxy_settings,json=proxySettings" json:"proxy_settings,omitempty"` ProxySettings *v2ray_core_common_serial.TypedMessage `protobuf:"bytes,3,opt,name=proxy_settings,json=proxySettings" json:"proxy_settings,omitempty"`
DispatchSettings *DispatchConfig `protobuf:"bytes,4,opt,name=dispatch_settings,json=dispatchSettings" json:"dispatch_settings,omitempty"`
} }
func (m *InboundHandlerConfig) Reset() { *m = InboundHandlerConfig{} } func (m *InboundHandlerConfig) Reset() { *m = InboundHandlerConfig{} }
@ -223,6 +248,13 @@ func (m *InboundHandlerConfig) GetProxySettings() *v2ray_core_common_serial.Type
return nil return nil
} }
func (m *InboundHandlerConfig) GetDispatchSettings() *DispatchConfig {
if m != nil {
return m.DispatchSettings
}
return nil
}
type OutboundConfig struct { type OutboundConfig struct {
} }
@ -265,11 +297,12 @@ func (m *SenderConfig) GetProxySettings() *v2ray_core_transport_internet.ProxyCo
} }
type OutboundHandlerConfig struct { type OutboundHandlerConfig struct {
Tag string `protobuf:"bytes,1,opt,name=tag" json:"tag,omitempty"` Tag string `protobuf:"bytes,1,opt,name=tag" json:"tag,omitempty"`
SenderSettings *v2ray_core_common_serial.TypedMessage `protobuf:"bytes,2,opt,name=sender_settings,json=senderSettings" json:"sender_settings,omitempty"` SenderSettings *v2ray_core_common_serial.TypedMessage `protobuf:"bytes,2,opt,name=sender_settings,json=senderSettings" json:"sender_settings,omitempty"`
ProxySettings *v2ray_core_common_serial.TypedMessage `protobuf:"bytes,3,opt,name=proxy_settings,json=proxySettings" json:"proxy_settings,omitempty"` ProxySettings *v2ray_core_common_serial.TypedMessage `protobuf:"bytes,3,opt,name=proxy_settings,json=proxySettings" json:"proxy_settings,omitempty"`
Expire int64 `protobuf:"varint,4,opt,name=expire" json:"expire,omitempty"` Expire int64 `protobuf:"varint,4,opt,name=expire" json:"expire,omitempty"`
Comment string `protobuf:"bytes,5,opt,name=comment" json:"comment,omitempty"` Comment string `protobuf:"bytes,5,opt,name=comment" json:"comment,omitempty"`
DispatchSettings *DispatchConfig `protobuf:"bytes,6,opt,name=dispatch_settings,json=dispatchSettings" json:"dispatch_settings,omitempty"`
} }
func (m *OutboundHandlerConfig) Reset() { *m = OutboundHandlerConfig{} } func (m *OutboundHandlerConfig) Reset() { *m = OutboundHandlerConfig{} }
@ -312,6 +345,13 @@ func (m *OutboundHandlerConfig) GetComment() string {
return "" return ""
} }
func (m *OutboundHandlerConfig) GetDispatchSettings() *DispatchConfig {
if m != nil {
return m.DispatchSettings
}
return nil
}
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"`
} }
@ -346,8 +386,9 @@ func (m *DispatchConfig) GetMuxSettings() *MultiplexingConfig {
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"`
Target *v2ray_core_common_net2.Endpoint `protobuf:"bytes,2,opt,name=target" json:"target,omitempty"` Command SessionFrame_FrameCommand `protobuf:"varint,2,opt,name=command,enum=v2ray.core.app.proxyman.SessionFrame_FrameCommand" json:"command,omitempty"`
Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` Target *v2ray_core_common_net2.Endpoint `protobuf:"bytes,3,opt,name=target" json:"target,omitempty"`
Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"`
} }
func (m *SessionFrame) Reset() { *m = SessionFrame{} } func (m *SessionFrame) Reset() { *m = SessionFrame{} }
@ -362,6 +403,13 @@ func (m *SessionFrame) GetId() uint32 {
return 0 return 0
} }
func (m *SessionFrame) GetCommand() SessionFrame_FrameCommand {
if m != nil {
return m.Command
}
return SessionFrame_SessionNew
}
func (m *SessionFrame) GetTarget() *v2ray_core_common_net2.Endpoint { func (m *SessionFrame) GetTarget() *v2ray_core_common_net2.Endpoint {
if m != nil { if m != nil {
return m.Target return m.Target
@ -390,63 +438,70 @@ func init() {
proto.RegisterType((*DispatchConfig)(nil), "v2ray.core.app.proxyman.DispatchConfig") proto.RegisterType((*DispatchConfig)(nil), "v2ray.core.app.proxyman.DispatchConfig")
proto.RegisterType((*SessionFrame)(nil), "v2ray.core.app.proxyman.SessionFrame") proto.RegisterType((*SessionFrame)(nil), "v2ray.core.app.proxyman.SessionFrame")
proto.RegisterEnum("v2ray.core.app.proxyman.AllocationStrategy_Type", AllocationStrategy_Type_name, AllocationStrategy_Type_value) proto.RegisterEnum("v2ray.core.app.proxyman.AllocationStrategy_Type", AllocationStrategy_Type_name, AllocationStrategy_Type_value)
proto.RegisterEnum("v2ray.core.app.proxyman.SessionFrame_FrameCommand", SessionFrame_FrameCommand_name, SessionFrame_FrameCommand_value)
} }
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{
// 846 bytes of a gzipped FileDescriptorProto // 929 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x55, 0xdd, 0x6e, 0x23, 0x35, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x56, 0xd1, 0x6e, 0x23, 0x35,
0x18, 0x65, 0x92, 0x6e, 0xda, 0x7e, 0x6d, 0xd3, 0x60, 0x96, 0xdd, 0x10, 0x40, 0x94, 0x08, 0x41, 0x14, 0xdd, 0x4c, 0xba, 0x69, 0x7b, 0x93, 0x4e, 0x67, 0xcd, 0xb2, 0x1b, 0x02, 0x88, 0x12, 0x21,
0xc5, 0xa2, 0xc9, 0x92, 0x15, 0x02, 0xae, 0xa0, 0xa4, 0x45, 0xf4, 0xa2, 0x34, 0x38, 0x2b, 0x2e, 0xb6, 0x62, 0xd1, 0x64, 0xc9, 0x0a, 0x01, 0x4f, 0x4b, 0x49, 0x8b, 0xa8, 0xa0, 0xdb, 0xe0, 0x54,
0x10, 0x52, 0x70, 0x67, 0xbc, 0xb3, 0x16, 0x33, 0xb6, 0xb1, 0x9d, 0x6e, 0xe6, 0x95, 0x78, 0x06, 0x3c, 0x20, 0xa4, 0xe0, 0xce, 0x78, 0xb3, 0x16, 0x33, 0xb6, 0x65, 0x3b, 0x6d, 0xe6, 0x8d, 0x6f,
0x2e, 0x78, 0x00, 0x1e, 0x85, 0x37, 0xe0, 0x06, 0xf9, 0x67, 0x92, 0xa8, 0xc9, 0x50, 0xca, 0x8a, 0xe1, 0x91, 0x6f, 0xe0, 0x81, 0x5f, 0xe0, 0x3f, 0xf8, 0x08, 0x34, 0x1e, 0x4f, 0x92, 0x6d, 0x32,
0xbb, 0x71, 0x7c, 0xce, 0xb1, 0xcf, 0x77, 0xbe, 0xcf, 0x81, 0xe3, 0xeb, 0xa1, 0x22, 0x65, 0x9c, 0x94, 0x52, 0xed, 0x4b, 0x65, 0x8f, 0xcf, 0x3d, 0xb6, 0xcf, 0x39, 0xd7, 0x0d, 0xec, 0x5f, 0xf4,
0x88, 0x62, 0x90, 0x08, 0x45, 0x07, 0x44, 0xca, 0x81, 0x54, 0x62, 0x5e, 0x16, 0x84, 0x0f, 0x12, 0x15, 0xc9, 0xc2, 0x48, 0xa4, 0xbd, 0x48, 0x28, 0xda, 0x23, 0x52, 0xf6, 0xa4, 0x12, 0xb3, 0x2c,
0xc1, 0x9f, 0xb1, 0x2c, 0x96, 0x4a, 0x18, 0x81, 0x1e, 0x56, 0x48, 0x45, 0x63, 0x22, 0x65, 0x5c, 0x25, 0xbc, 0x17, 0x09, 0xfe, 0x82, 0x4d, 0x42, 0xa9, 0x84, 0x11, 0xe8, 0x61, 0x89, 0x54, 0x34,
0xa1, 0x7a, 0x8f, 0x6f, 0x48, 0x24, 0xa2, 0x28, 0x04, 0x1f, 0x68, 0xaa, 0x18, 0xc9, 0x07, 0xa6, 0x24, 0x52, 0x86, 0x25, 0xaa, 0xf3, 0xe4, 0x0a, 0x45, 0x24, 0xd2, 0x54, 0xf0, 0x9e, 0xa6, 0x8a,
0x94, 0x34, 0x9d, 0x16, 0x54, 0x6b, 0x92, 0x51, 0x2f, 0xd5, 0xfb, 0x60, 0x33, 0x83, 0x53, 0x33, 0x91, 0xa4, 0x67, 0x32, 0x49, 0xe3, 0x71, 0x4a, 0xb5, 0x26, 0x13, 0x5a, 0x50, 0x75, 0x1e, 0xad,
0x20, 0x69, 0xaa, 0xa8, 0xd6, 0x01, 0xf8, 0xa8, 0x1e, 0x98, 0x52, 0x6d, 0x18, 0x27, 0x86, 0x09, 0xaf, 0xe0, 0xd4, 0xf4, 0x48, 0x1c, 0x2b, 0xaa, 0xb5, 0x03, 0x3e, 0xae, 0x06, 0xc6, 0x54, 0x1b,
0x1e, 0xc0, 0xef, 0xd5, 0x83, 0xa5, 0x50, 0x26, 0xa0, 0xe2, 0x1b, 0x28, 0xa3, 0x08, 0xd7, 0x76, 0xc6, 0x89, 0x61, 0x82, 0x3b, 0xf0, 0x07, 0xd5, 0x60, 0x29, 0x94, 0x71, 0xa8, 0xf0, 0x0a, 0xca,
0x7f, 0xc0, 0xb8, 0xa1, 0xca, 0xa2, 0x57, 0x6d, 0xf7, 0x0f, 0xe1, 0xe0, 0x9c, 0x5f, 0x89, 0x19, 0x28, 0xc2, 0x75, 0xbe, 0xde, 0x63, 0xdc, 0x50, 0x95, 0xa3, 0x97, 0xaf, 0xdd, 0xdd, 0x85, 0x9d,
0x4f, 0x47, 0xee, 0xe7, 0xfe, 0xef, 0x4d, 0x40, 0x27, 0x79, 0x2e, 0x12, 0x77, 0xf6, 0xc4, 0x28, 0x63, 0x7e, 0x2e, 0xa6, 0x3c, 0x1e, 0xd8, 0xcf, 0xdd, 0x3f, 0xeb, 0x80, 0x0e, 0x92, 0x44, 0x44,
0x62, 0x68, 0x56, 0xa2, 0x53, 0xd8, 0xb2, 0x56, 0xbb, 0xd1, 0x51, 0x74, 0xdc, 0x1e, 0x3e, 0x8e, 0x76, 0xef, 0x91, 0x51, 0xc4, 0xd0, 0x49, 0x86, 0x0e, 0x61, 0x23, 0xbf, 0x6a, 0xbb, 0xb6, 0x57,
0x6b, 0xaa, 0x15, 0xaf, 0x53, 0xe3, 0xa7, 0xa5, 0xa4, 0xd8, 0xb1, 0xd1, 0xcf, 0xb0, 0x97, 0x08, 0xdb, 0xf7, 0xfb, 0x4f, 0xc2, 0x0a, 0xb5, 0xc2, 0xd5, 0xd2, 0xf0, 0x2c, 0x93, 0x14, 0xdb, 0x6a,
0x9e, 0xcc, 0x94, 0xa2, 0x3c, 0x29, 0xbb, 0x8d, 0xa3, 0xe8, 0x78, 0x6f, 0x78, 0x7e, 0x17, 0xb1, 0xf4, 0x0b, 0x34, 0x23, 0xc1, 0xa3, 0xa9, 0x52, 0x94, 0x47, 0x59, 0xdb, 0xdb, 0xab, 0xed, 0x37,
0xf5, 0x9f, 0x46, 0x4b, 0x41, 0xbc, 0xaa, 0x8e, 0xa6, 0xb0, 0xad, 0xe8, 0x33, 0x45, 0xf5, 0xf3, 0xfb, 0xc7, 0x37, 0x21, 0x5b, 0xfd, 0x34, 0x58, 0x10, 0xe2, 0x65, 0x76, 0x34, 0x86, 0x4d, 0x45,
0x6e, 0xd3, 0x1d, 0x74, 0xf6, 0x72, 0x07, 0x61, 0x2f, 0x86, 0x2b, 0xd5, 0xde, 0x27, 0xf0, 0xf6, 0x5f, 0x28, 0xaa, 0x5f, 0xb6, 0xeb, 0x76, 0xa3, 0xa3, 0xdb, 0x6d, 0x84, 0x0b, 0x32, 0x5c, 0xb2,
0x3f, 0x5e, 0x07, 0xdd, 0x87, 0x7b, 0xd7, 0x24, 0x9f, 0xf9, 0xaa, 0x1d, 0x60, 0xbf, 0xe8, 0x7d, 0x76, 0x3e, 0x85, 0x77, 0xff, 0xf5, 0x38, 0xe8, 0x3e, 0xdc, 0xbd, 0x20, 0xc9, 0xb4, 0x50, 0x6d,
0x0c, 0x6f, 0xd4, 0x8a, 0x6f, 0xa6, 0xf4, 0x3f, 0x82, 0x2d, 0x5b, 0x45, 0x04, 0xd0, 0x3a, 0xc9, 0x07, 0x17, 0x93, 0xce, 0x27, 0xf0, 0x56, 0x25, 0xf9, 0xfa, 0x92, 0xee, 0xc7, 0xb0, 0x91, 0xab,
0x5f, 0x90, 0x52, 0x77, 0x5e, 0xb1, 0xdf, 0x98, 0xf0, 0x54, 0x14, 0x9d, 0x08, 0xed, 0xc3, 0xce, 0x88, 0x00, 0x1a, 0x07, 0xc9, 0x25, 0xc9, 0x74, 0x70, 0x27, 0x1f, 0x63, 0xc2, 0x63, 0x91, 0x06,
0xd9, 0xdc, 0xc6, 0x4b, 0xf2, 0x4e, 0xa3, 0xff, 0x5b, 0x13, 0xda, 0x98, 0x26, 0x94, 0x5d, 0x53, 0x35, 0xd4, 0x82, 0xad, 0xa3, 0x59, 0x6e, 0x2f, 0x49, 0x02, 0xaf, 0xfb, 0x47, 0x1d, 0x7c, 0x4c,
0xe5, 0x53, 0x45, 0x5f, 0x00, 0xd8, 0x26, 0x98, 0x2a, 0xc2, 0x33, 0xaf, 0xbd, 0x37, 0x3c, 0x5a, 0x23, 0xca, 0x2e, 0xa8, 0x2a, 0x5c, 0x45, 0xcf, 0x00, 0xf2, 0x10, 0x8c, 0x15, 0xe1, 0x93, 0x82,
0x2d, 0x87, 0xef, 0xa6, 0x98, 0x53, 0x13, 0x8f, 0x85, 0x32, 0xd8, 0xe2, 0xf0, 0xae, 0xac, 0x3e, 0xbb, 0xd9, 0xdf, 0x5b, 0x96, 0xa3, 0x48, 0x53, 0xc8, 0xa9, 0x09, 0x87, 0x42, 0x19, 0x9c, 0xe3,
0xd1, 0xe7, 0xd0, 0xca, 0x99, 0x36, 0x94, 0x87, 0xd0, 0xde, 0xad, 0x21, 0x9f, 0x8f, 0x2f, 0xd5, 0xf0, 0xb6, 0x2c, 0x87, 0xe8, 0x0b, 0x68, 0x24, 0x4c, 0x1b, 0xca, 0x9d, 0x69, 0xef, 0x57, 0x14,
0xa9, 0x28, 0x08, 0xe3, 0x38, 0x10, 0xd0, 0x8f, 0xf0, 0x1a, 0x59, 0xf8, 0x9d, 0xea, 0x60, 0x38, 0x1f, 0x0f, 0x4f, 0xd5, 0xa1, 0x48, 0x09, 0xe3, 0xd8, 0x15, 0xa0, 0x9f, 0xe0, 0x0d, 0x32, 0xbf,
0x64, 0xf2, 0xe8, 0x0e, 0x99, 0x60, 0x44, 0xd6, 0x1b, 0xf3, 0x29, 0x1c, 0x6a, 0xa3, 0x28, 0x29, 0xef, 0x58, 0xbb, 0x0b, 0x3b, 0x4f, 0x1e, 0xdf, 0xc0, 0x13, 0x8c, 0xc8, 0x6a, 0x30, 0xcf, 0x60,
0xa6, 0x9a, 0x1a, 0xc3, 0x78, 0xa6, 0xbb, 0x5b, 0xeb, 0xca, 0x8b, 0x31, 0x88, 0xab, 0x31, 0x88, 0x57, 0x1b, 0x45, 0x49, 0x3a, 0xd6, 0xd4, 0x18, 0xc6, 0x27, 0xba, 0xbd, 0xb1, 0xca, 0x3c, 0x6f,
0x27, 0x8e, 0xe5, 0xeb, 0x83, 0xdb, 0x5e, 0x63, 0x12, 0x24, 0xd0, 0x97, 0xf0, 0x96, 0xf2, 0x15, 0x83, 0xb0, 0x6c, 0x83, 0x70, 0x64, 0xab, 0x0a, 0x7d, 0xb0, 0x5f, 0x70, 0x8c, 0x1c, 0x05, 0xfa,
0x9c, 0x0a, 0xc5, 0x32, 0xc6, 0x49, 0x3e, 0x5d, 0x19, 0xc9, 0xee, 0xbd, 0xa3, 0xe8, 0x78, 0x07, 0x12, 0xde, 0x51, 0x85, 0x82, 0x63, 0xa1, 0xd8, 0x84, 0x71, 0x92, 0x8c, 0x97, 0x5a, 0xb2, 0x7d,
0xf7, 0x02, 0xe6, 0x32, 0x40, 0x4e, 0x97, 0x08, 0xf4, 0x19, 0x74, 0xed, 0x6d, 0x5f, 0x4c, 0x25, 0x77, 0xaf, 0xb6, 0xbf, 0x85, 0x3b, 0x0e, 0x73, 0xea, 0x20, 0x87, 0x0b, 0x04, 0xfa, 0x1c, 0xda,
0xd1, 0xda, 0xea, 0x24, 0x82, 0x73, 0x9a, 0x38, 0x76, 0xcb, 0xb1, 0x1f, 0xb8, 0xfd, 0xb1, 0xdf, 0xf9, 0x69, 0x2f, 0xc7, 0x92, 0x68, 0x9d, 0xf3, 0x44, 0x82, 0x73, 0x1a, 0xd9, 0xea, 0x86, 0xad,
0x1e, 0x2d, 0x76, 0xfb, 0x7f, 0x44, 0x70, 0x3f, 0xcc, 0xe4, 0x37, 0x84, 0xa7, 0xf9, 0x22, 0xc4, 0x7e, 0x60, 0xd7, 0x87, 0xc5, 0xf2, 0x60, 0xbe, 0xda, 0xfd, 0xcd, 0x83, 0xfb, 0xae, 0x27, 0xbf,
0x0e, 0x34, 0x0d, 0xc9, 0x5c, 0x7a, 0xbb, 0xd8, 0x7e, 0xa2, 0x09, 0xbc, 0x1a, 0xae, 0xa0, 0x96, 0x21, 0x3c, 0x4e, 0xe6, 0x26, 0x06, 0x50, 0x37, 0x64, 0x62, 0xdd, 0xdb, 0xc6, 0xf9, 0x10, 0x8d,
0xf6, 0x7d, 0x40, 0xef, 0x6f, 0x08, 0xc8, 0xbf, 0x59, 0x6e, 0x20, 0xd3, 0x0b, 0xff, 0x64, 0xe1, 0xe0, 0x9e, 0x3b, 0x82, 0x5a, 0x5c, 0xbf, 0x30, 0xe8, 0xc3, 0x35, 0x06, 0x15, 0x6f, 0x96, 0x6d,
0x4e, 0x25, 0xb0, 0xf0, 0x7e, 0x01, 0x6d, 0x17, 0xc2, 0x52, 0xb1, 0x79, 0x27, 0xc5, 0x03, 0xc7, 0xc8, 0xf8, 0xa4, 0x78, 0xb2, 0x70, 0x50, 0x12, 0xcc, 0xef, 0x7e, 0x02, 0xbe, 0x35, 0x61, 0xc1,
0xae, 0xe4, 0xfa, 0x1d, 0x68, 0x5f, 0xce, 0xcc, 0xea, 0x13, 0xf3, 0x67, 0x04, 0xfb, 0x13, 0xca, 0x58, 0xbf, 0x11, 0xe3, 0x8e, 0xad, 0x9e, 0xd3, 0x9d, 0xc1, 0xbd, 0x98, 0x69, 0x49, 0x4c, 0xf4,
0xd3, 0x85, 0xb1, 0x27, 0xd0, 0xbc, 0x66, 0x24, 0xb4, 0xe5, 0xbf, 0xe8, 0x2c, 0x8b, 0xde, 0x14, 0xf2, 0xaa, 0x45, 0x8f, 0x2a, 0xcd, 0x3f, 0x74, 0x15, 0xce, 0x9e, 0xa0, 0x64, 0x28, 0x59, 0xbb,
0x7c, 0xe3, 0xe5, 0x83, 0xff, 0xae, 0xc6, 0xfc, 0x87, 0xb7, 0x88, 0x8e, 0x2d, 0x29, 0x68, 0xde, 0x01, 0xf8, 0xa7, 0x53, 0xb3, 0xfc, 0x70, 0xfd, 0x5d, 0x83, 0xd6, 0x88, 0xf2, 0x78, 0x2e, 0xd7,
0x28, 0xc0, 0x5f, 0x11, 0xbc, 0x5e, 0x55, 0xe0, 0xb6, 0x40, 0x2f, 0xe1, 0x50, 0xbb, 0xca, 0xfc, 0x53, 0xa8, 0x5f, 0x30, 0xe2, 0xc2, 0xfe, 0x1f, 0xf2, 0x9a, 0xa3, 0xd7, 0xc5, 0xc9, 0xbb, 0x7d,
0xd7, 0x38, 0xdb, 0x9e, 0xfe, 0x3f, 0x85, 0x89, 0x1e, 0x40, 0x8b, 0xce, 0x25, 0x53, 0xd4, 0x0d, 0x9c, 0xbe, 0xaf, 0x90, 0xf4, 0xa3, 0x6b, 0x48, 0x87, 0x79, 0x91, 0xe3, 0x7c, 0x55, 0xd6, 0xee,
0x59, 0x13, 0x87, 0x15, 0xea, 0xc2, 0xb6, 0x15, 0xa1, 0xdc, 0xb8, 0xd1, 0xd8, 0xc5, 0xd5, 0xb2, 0x5f, 0x1e, 0xbc, 0x59, 0x2a, 0x70, 0x5d, 0x4c, 0x4e, 0x61, 0x57, 0x5b, 0x65, 0xfe, 0x6f, 0x48,
0x1f, 0x03, 0xba, 0x98, 0xe5, 0x86, 0xc9, 0x9c, 0xce, 0x19, 0xcf, 0x82, 0xf3, 0x2e, 0x6c, 0x53, 0xfc, 0xa2, 0xfc, 0x75, 0x45, 0xe4, 0x01, 0x34, 0xe8, 0x4c, 0x32, 0x45, 0x6d, 0x2e, 0xea, 0xd8,
0x4e, 0xae, 0x72, 0x9a, 0x3a, 0xf7, 0x3b, 0xb8, 0x5a, 0xf6, 0x7f, 0x82, 0xf6, 0x29, 0xd3, 0x92, 0xcd, 0x50, 0x1b, 0x36, 0x73, 0x12, 0xca, 0x8d, 0x6d, 0xb8, 0x6d, 0x5c, 0x4e, 0xd7, 0x87, 0xaa,
0x98, 0xe4, 0x79, 0xc0, 0x7e, 0x0b, 0xfb, 0xc5, 0x6c, 0xbe, 0x34, 0x10, 0xdd, 0xf2, 0x70, 0xac, 0x71, 0xdb, 0x50, 0x85, 0x80, 0x4e, 0xa6, 0x89, 0x61, 0x32, 0xa1, 0x33, 0xc6, 0x27, 0x4e, 0xcf,
0x1f, 0x87, 0xf7, 0x8a, 0xd9, 0x7c, 0x91, 0xc7, 0x2f, 0xb6, 0xfb, 0xb4, 0x66, 0x82, 0x7f, 0xad, 0x36, 0x6c, 0x52, 0x4e, 0xce, 0x13, 0x1a, 0x5b, 0x4d, 0xb7, 0x70, 0x39, 0xed, 0xfe, 0x0c, 0xfe,
0x48, 0x41, 0x51, 0x1b, 0x1a, 0x2c, 0x0d, 0xef, 0x6d, 0x83, 0xa5, 0xe8, 0x53, 0x68, 0x19, 0xa2, 0xab, 0x9c, 0xe8, 0x39, 0xb4, 0xd2, 0xe9, 0x6c, 0x71, 0xa4, 0xda, 0x35, 0x8f, 0xdc, 0xea, 0x76,
0x32, 0x6a, 0x42, 0xe9, 0xdf, 0xa9, 0x69, 0xc8, 0x33, 0x9e, 0x4a, 0xc1, 0xb8, 0xc1, 0x01, 0x6e, 0xb8, 0x99, 0x4e, 0x67, 0xf3, 0x13, 0xfd, 0xea, 0xe5, 0xa1, 0xd6, 0x9a, 0x09, 0xfe, 0xb5, 0x22,
0x4d, 0x49, 0x52, 0xe6, 0x82, 0xa4, 0xae, 0xc8, 0xfb, 0xb8, 0x5a, 0x7e, 0x35, 0x82, 0x37, 0x13, 0x29, 0x45, 0x3e, 0x78, 0x2c, 0x76, 0xff, 0x1c, 0x3c, 0x16, 0xa3, 0xef, 0x0a, 0x89, 0x08, 0x8f,
0x51, 0xd4, 0xdd, 0x78, 0x1c, 0xfd, 0xb0, 0x53, 0x7d, 0xff, 0xda, 0x78, 0xf8, 0xfd, 0x10, 0x93, 0xad, 0xa5, 0x7e, 0xbf, 0x5f, 0xb9, 0xd7, 0x32, 0x4f, 0x68, 0xff, 0x0e, 0x8a, 0x4a, 0x5c, 0x52,
0x32, 0x1e, 0x59, 0xd4, 0x89, 0x94, 0xbe, 0xb3, 0x0a, 0xc2, 0xaf, 0x5a, 0xee, 0x1f, 0xfb, 0xc9, 0xa0, 0xcf, 0xa0, 0x61, 0x88, 0x9a, 0x50, 0xe3, 0xfc, 0x7c, 0xaf, 0xa2, 0x6b, 0x8e, 0x78, 0x2c,
0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa8, 0xcf, 0x2c, 0xca, 0xd4, 0x08, 0x00, 0x00, 0x05, 0xe3, 0x06, 0x3b, 0x78, 0xae, 0x91, 0x24, 0x59, 0x22, 0x48, 0x6c, 0x2d, 0x6c, 0xe1, 0x72,
0xda, 0x7d, 0x06, 0xad, 0xe5, 0xbd, 0x90, 0x0f, 0xe0, 0x0e, 0xf2, 0x9c, 0x5e, 0x06, 0x77, 0xd0,
0x2e, 0x34, 0xdd, 0xfc, 0x5b, 0x4a, 0x65, 0x50, 0x5b, 0x02, 0x1c, 0xf1, 0x38, 0xf0, 0xbe, 0x1a,
0xc0, 0xdb, 0x91, 0x48, 0xab, 0x6e, 0x35, 0xac, 0xfd, 0xb8, 0x55, 0x8e, 0x7f, 0xf7, 0x1e, 0xfe,
0xd0, 0xc7, 0x24, 0x0b, 0x07, 0x39, 0xea, 0x40, 0xca, 0xa2, 0x7f, 0x52, 0xc2, 0xcf, 0x1b, 0xf6,
0xd7, 0xce, 0xd3, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x78, 0xee, 0xf7, 0xe3, 0x10, 0x0a, 0x00,
0x00,
} }

View File

@ -60,6 +60,7 @@ message InboundHandlerConfig {
string tag = 1; string tag = 1;
v2ray.core.common.serial.TypedMessage receiver_settings = 2; v2ray.core.common.serial.TypedMessage receiver_settings = 2;
v2ray.core.common.serial.TypedMessage proxy_settings = 3; v2ray.core.common.serial.TypedMessage proxy_settings = 3;
DispatchConfig dispatch_settings = 4;
} }
message OutboundConfig { message OutboundConfig {
@ -79,6 +80,7 @@ message OutboundHandlerConfig {
v2ray.core.common.serial.TypedMessage proxy_settings = 3; v2ray.core.common.serial.TypedMessage proxy_settings = 3;
int64 expire = 4; int64 expire = 4;
string comment = 5; string comment = 5;
DispatchConfig dispatch_settings = 6;
} }
message MultiplexingConfig { message MultiplexingConfig {
@ -91,6 +93,15 @@ message DispatchConfig {
message SessionFrame { message SessionFrame {
uint32 id = 1; uint32 id = 1;
v2ray.core.common.net.Endpoint target = 2;
bytes payload = 3; enum FrameCommand {
SessionNew = 0;
SessionKeep = 1;
SessionEnd = 2;
}
FrameCommand command = 2;
v2ray.core.common.net.Endpoint target = 3;
bytes payload = 4;
} }

121
app/proxyman/mux/frame.go Normal file
View File

@ -0,0 +1,121 @@
package mux
import (
"errors"
"v2ray.com/core/common/buf"
"v2ray.com/core/common/net"
"v2ray.com/core/common/serial"
)
type SessionStatus byte
const (
SessionStatusNew SessionStatus = 0x01
SessionStatusKeep SessionStatus = 0x02
SessionStatusEnd SessionStatus = 0x03
)
type TargetNetwork byte
const (
TargetNetworkTCP TargetNetwork = 0x01
TargetnetworkUDP TargetNetwork = 0x02
)
type AddressType byte
const (
AddressTypeIPv4 AddressType = 0x01
AddressTypeDomain AddressType = 0x02
AddressTypeIPv6 AddressType = 0x03
)
type FrameMetadata struct {
SessionId uint16
SessionStatus SessionStatus
Target net.Destination
}
func (f FrameMetadata) AsSupplier() buf.Supplier {
return func(b []byte) (int, error) {
b = serial.Uint16ToBytes(uint16(0), b) // place holder for length
b = serial.Uint16ToBytes(f.SessionId, b)
b = append(b, byte(f.SessionStatus), 0 /* reserved */)
length := 4
if f.SessionStatus == SessionStatusNew {
switch f.Target.Network {
case net.Network_TCP:
b = append(b, byte(TargetNetworkTCP))
case net.Network_UDP:
b = append(b, byte(TargetnetworkUDP))
}
length++
b = serial.Uint16ToBytes(f.Target.Port.Value(), b)
length += 2
addr := f.Target.Address
switch addr.Family() {
case net.AddressFamilyIPv4:
b = append(b, byte(AddressTypeIPv4))
b = append(b, addr.IP()...)
length += 5
case net.AddressFamilyIPv6:
b = append(b, byte(AddressTypeIPv6))
b = append(b, addr.IP()...)
length += 17
case net.AddressFamilyDomain:
nDomain := len(addr.Domain())
b = append(b, byte(nDomain))
b = append(b, addr.Domain()...)
length += nDomain + 1
}
}
return length + 2, nil
}
}
func ReadFrameFrom(b []byte) (*FrameMetadata, error) {
if len(b) < 4 {
return nil, errors.New("Proxyman|Mux: Insufficient buffer.")
}
f := &FrameMetadata{
SessionId: serial.BytesToUint16(b[:2]),
SessionStatus: SessionStatus(b[2]),
}
b = b[4:]
if f.SessionStatus == SessionStatusNew {
network := TargetNetwork(b[0])
port := net.PortFromBytes(b[1:3])
addrType := AddressType(b[3])
b = b[4:]
var addr net.Address
switch addrType {
case AddressTypeIPv4:
addr = net.IPAddress(b[0:4])
b = b[4:]
case AddressTypeIPv6:
addr = net.IPAddress(b[0:16])
b = b[16:]
case AddressTypeDomain:
nDomain := int(b[0])
addr = net.DomainAddress(string(b[1 : 1+nDomain]))
b = b[nDomain+1:]
}
switch network {
case TargetNetworkTCP:
f.Target = net.TCPDestination(addr, port)
case TargetnetworkUDP:
f.Target = net.UDPDestination(addr, port)
}
}
return f, nil
}

10
app/proxyman/mux/mux.go Normal file
View File

@ -0,0 +1,10 @@
package mux
import "v2ray.com/core/common/net"
type mergerWorker struct {
}
type Merger struct {
sessions map[net.Destination]mergerWorker
}

View File

@ -0,0 +1,59 @@
package mux
import "io"
import "v2ray.com/core/common/buf"
import "v2ray.com/core/common/serial"
type muxReader struct {
reader io.Reader
remainingLength int
buffer *buf.Buffer
}
func NewReader(reader buf.Reader) *muxReader {
return &muxReader{
reader: buf.NewBytesReader(reader),
buffer: buf.NewLocal(1024),
}
}
func (r *muxReader) ReadMetadata() (*FrameMetadata, error) {
b := r.buffer
b.Clear()
if err := b.AppendSupplier(buf.ReadFullFrom(r.reader, 2)); err != nil {
return nil, err
}
metaLen := serial.BytesToUint16(b.Bytes())
b.Clear()
if err := b.AppendSupplier(buf.ReadFullFrom(r.reader, int(metaLen))); err != nil {
return nil, err
}
return ReadFrameFrom(b.Bytes())
}
func (r *muxReader) Read() (*buf.Buffer, bool, error) {
b := buf.New()
var dataLen int
if r.remainingLength > 0 {
dataLen = r.remainingLength
r.remainingLength = 0
} else {
if err := b.AppendSupplier(buf.ReadFullFrom(r.reader, 2)); err != nil {
return nil, false, err
}
dataLen = int(serial.BytesToUint16(b.Bytes()))
b.Clear()
}
if dataLen > buf.Size {
r.remainingLength = dataLen - buf.Size
dataLen = buf.Size
}
if err := b.AppendSupplier(buf.ReadFullFrom(r.reader, dataLen)); err != nil {
return nil, false, err
}
return b, (r.remainingLength > 0), nil
}

View File

@ -0,0 +1,40 @@
package mux
import "v2ray.com/core/common/buf"
import "v2ray.com/core/common/serial"
type muxWriter struct {
meta *FrameMetadata
writer buf.Writer
}
func (w *muxWriter) Write(b *buf.Buffer) error {
frame := buf.New()
frame.AppendSupplier(w.meta.AsSupplier())
if w.meta.SessionStatus == SessionStatusNew {
w.meta.SessionStatus = SessionStatusKeep
}
frame.AppendSupplier(serial.WriteUint16(0))
lengthBytes := frame.BytesFrom(-2)
nBytes, err := frame.Write(b.Bytes())
if err != nil {
return err
}
serial.Uint16ToBytes(uint16(nBytes), lengthBytes[:0])
if err := w.writer.Write(frame); err != nil {
frame.Release()
b.Release()
return err
}
b.SliceFrom(nBytes)
if !b.IsEmpty() {
return w.Write(b)
}
b.Release()
return nil
}

View File

@ -0,0 +1,8 @@
package outbound
import "v2ray.com/core/proxy"
type mux struct {
proxy proxy.Outbound
dialer proxy.Dialer
}