Documentation ¶
Index ¶
- Constants
- Variables
- func ContextWithUser(ctx context.Context, user *User) context.Context
- func DefaultIDHash(key []byte) hash.Hash
- type Account
- type AlternativeOutboundConfig
- func (*AlternativeOutboundConfig) Descriptor() ([]byte, []int)
- func (m *AlternativeOutboundConfig) GetSettings() *v2ray_core_common_serial.TypedMessage
- func (m *AlternativeOutboundConfig) GetStreamSettings() *v2ray_core_transport_internet.StreamConfig
- func (*AlternativeOutboundConfig) ProtoMessage()
- func (m *AlternativeOutboundConfig) Reset()
- func (m *AlternativeOutboundConfig) String() string
- type AsAccount
- type CommandSwitchAccount
- type ID
- type IDHash
- type RequestCommand
- type RequestHeader
- type RequestOption
- type ResponseCommand
- type ResponseHeader
- type ResponseOption
- type RoundRobinServerPicker
- type Security
- type SecurityConfig
- type SecurityType
- type ServerEndpoint
- func (*ServerEndpoint) Descriptor() ([]byte, []int)
- func (m *ServerEndpoint) GetAddress() *v2ray_core_common_net.IPOrDomain
- func (m *ServerEndpoint) GetPort() uint32
- func (m *ServerEndpoint) GetUser() []*User
- func (*ServerEndpoint) ProtoMessage()
- func (m *ServerEndpoint) Reset()
- func (m *ServerEndpoint) String() string
- type ServerList
- type ServerPicker
- type ServerSpec
- type Timestamp
- type TimestampGenerator
- type TransferType
- type User
- func (*User) Descriptor() ([]byte, []int)
- func (m *User) GetAccount() *v2ray_core_common_serial.TypedMessage
- func (m *User) GetEmail() string
- func (m *User) GetLevel() uint32
- func (v *User) GetSettings() UserSettings
- func (v *User) GetTypedAccount() (Account, error)
- func (*User) ProtoMessage()
- func (m *User) Reset()
- func (m *User) String() string
- type UserSettings
- type UserValidator
- type ValidationStrategy
Constants ¶
View Source
const ( RequestCommandTCP = RequestCommand(0x01) RequestCommandUDP = RequestCommand(0x02) RequestCommandMux = RequestCommand(0x03) )
View Source
const ( // RequestOptionChunkStream indicates request payload is chunked. Each chunk consists of length, authentication and payload. RequestOptionChunkStream = RequestOption(0x01) // RequestOptionConnectionReuse indicates client side expects to reuse the connection. RequestOptionConnectionReuse = RequestOption(0x02) RequestOptionChunkMasking = RequestOption(0x04) )
View Source
const (
IDBytesLen = 16
)
View Source
const (
ResponseOptionConnectionReuse = ResponseOption(0x01)
)
Variables ¶
View Source
var ( ErrAccountMissing = newError("Account is not specified.") ErrNonMessageType = newError("Not a protobuf message.") ErrUnknownAccountType = newError("Unknown account type.") )
View Source
var SecurityType_name = map[int32]string{
0: "UNKNOWN",
1: "LEGACY",
2: "AUTO",
3: "AES128_GCM",
4: "CHACHA20_POLY1305",
5: "NONE",
}
View Source
var SecurityType_value = map[string]int32{
"UNKNOWN": 0,
"LEGACY": 1,
"AUTO": 2,
"AES128_GCM": 3,
"CHACHA20_POLY1305": 4,
"NONE": 5,
}
Functions ¶
func DefaultIDHash ¶
Types ¶
type AlternativeOutboundConfig ¶
type AlternativeOutboundConfig struct { Settings *v2ray_core_common_serial.TypedMessage `protobuf:"bytes,1,opt,name=settings" json:"settings,omitempty"` StreamSettings *v2ray_core_transport_internet.StreamConfig `protobuf:"bytes,3,opt,name=stream_settings,json=streamSettings" json:"stream_settings,omitempty"` }
func (*AlternativeOutboundConfig) Descriptor ¶
func (*AlternativeOutboundConfig) Descriptor() ([]byte, []int)
func (*AlternativeOutboundConfig) GetSettings ¶
func (m *AlternativeOutboundConfig) GetSettings() *v2ray_core_common_serial.TypedMessage
func (*AlternativeOutboundConfig) GetStreamSettings ¶
func (m *AlternativeOutboundConfig) GetStreamSettings() *v2ray_core_transport_internet.StreamConfig
func (*AlternativeOutboundConfig) ProtoMessage ¶
func (*AlternativeOutboundConfig) ProtoMessage()
func (*AlternativeOutboundConfig) Reset ¶
func (m *AlternativeOutboundConfig) Reset()
func (*AlternativeOutboundConfig) String ¶
func (m *AlternativeOutboundConfig) String() string
type CommandSwitchAccount ¶
type ID ¶
type ID struct {
// contains filtered or unexported fields
}
The ID of en entity, in the form of an UUID.
func NewAlterIDs ¶
type RequestCommand ¶
type RequestCommand byte
RequestCommand is a custom command in a proxy request.
func (RequestCommand) TransferType ¶
func (c RequestCommand) TransferType() TransferType
type RequestHeader ¶
type RequestHeader struct { Version byte Command RequestCommand Option RequestOption Security Security Port net.Port Address net.Address User *User }
func (*RequestHeader) Destination ¶
func (v *RequestHeader) Destination() net.Destination
type RequestOption ¶
type RequestOption byte
RequestOption is the options of a request.
func (*RequestOption) Clear ¶
func (v *RequestOption) Clear(option RequestOption)
func (RequestOption) Has ¶
func (v RequestOption) Has(option RequestOption) bool
func (*RequestOption) Set ¶
func (v *RequestOption) Set(option RequestOption)
type ResponseCommand ¶
type ResponseCommand interface{}
type ResponseHeader ¶
type ResponseHeader struct { Option ResponseOption Command ResponseCommand }
type ResponseOption ¶
type ResponseOption byte
func (*ResponseOption) Clear ¶
func (v *ResponseOption) Clear(option ResponseOption)
func (ResponseOption) Has ¶
func (v ResponseOption) Has(option ResponseOption) bool
func (*ResponseOption) Set ¶
func (v *ResponseOption) Set(option ResponseOption)
type RoundRobinServerPicker ¶
func NewRoundRobinServerPicker ¶
func NewRoundRobinServerPicker(serverlist *ServerList) *RoundRobinServerPicker
func (*RoundRobinServerPicker) PickServer ¶
func (p *RoundRobinServerPicker) PickServer() *ServerSpec
type Security ¶
type Security byte
func NormSecurity ¶
func (Security) Is ¶
func (v Security) Is(t SecurityType) bool
type SecurityConfig ¶
type SecurityConfig struct {
Type SecurityType `protobuf:"varint,1,opt,name=type,enum=v2ray.core.common.protocol.SecurityType" json:"type,omitempty"`
}
func (*SecurityConfig) AsSecurity ¶
func (v *SecurityConfig) AsSecurity() Security
func (*SecurityConfig) Descriptor ¶
func (*SecurityConfig) Descriptor() ([]byte, []int)
func (*SecurityConfig) GetType ¶
func (m *SecurityConfig) GetType() SecurityType
func (*SecurityConfig) ProtoMessage ¶
func (*SecurityConfig) ProtoMessage()
func (*SecurityConfig) Reset ¶
func (m *SecurityConfig) Reset()
func (*SecurityConfig) String ¶
func (m *SecurityConfig) String() string
type SecurityType ¶
type SecurityType int32
const ( SecurityType_UNKNOWN SecurityType = 0 SecurityType_LEGACY SecurityType = 1 SecurityType_AUTO SecurityType = 2 SecurityType_AES128_GCM SecurityType = 3 SecurityType_CHACHA20_POLY1305 SecurityType = 4 SecurityType_NONE SecurityType = 5 )
func (SecurityType) EnumDescriptor ¶
func (SecurityType) EnumDescriptor() ([]byte, []int)
func (SecurityType) String ¶
func (x SecurityType) String() string
type ServerEndpoint ¶
type ServerEndpoint struct { Address *v2ray_core_common_net.IPOrDomain `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"` User []*User `protobuf:"bytes,3,rep,name=user" json:"user,omitempty"` }
func (*ServerEndpoint) Descriptor ¶
func (*ServerEndpoint) Descriptor() ([]byte, []int)
func (*ServerEndpoint) GetAddress ¶
func (m *ServerEndpoint) GetAddress() *v2ray_core_common_net.IPOrDomain
func (*ServerEndpoint) GetPort ¶
func (m *ServerEndpoint) GetPort() uint32
func (*ServerEndpoint) GetUser ¶
func (m *ServerEndpoint) GetUser() []*User
func (*ServerEndpoint) ProtoMessage ¶
func (*ServerEndpoint) ProtoMessage()
func (*ServerEndpoint) Reset ¶
func (m *ServerEndpoint) Reset()
func (*ServerEndpoint) String ¶
func (m *ServerEndpoint) String() string
type ServerList ¶
func NewServerList ¶
func NewServerList() *ServerList
func (*ServerList) AddServer ¶
func (sl *ServerList) AddServer(server *ServerSpec)
func (*ServerList) GetServer ¶
func (sl *ServerList) GetServer(idx uint32) *ServerSpec
func (*ServerList) Size ¶
func (sl *ServerList) Size() uint32
type ServerPicker ¶
type ServerPicker interface {
PickServer() *ServerSpec
}
type ServerSpec ¶
func NewServerSpec ¶
func NewServerSpec(dest net.Destination, valid ValidationStrategy, users ...*User) *ServerSpec
func NewServerSpecFromPB ¶
func NewServerSpecFromPB(spec ServerEndpoint) *ServerSpec
func (*ServerSpec) AddUser ¶
func (s *ServerSpec) AddUser(user *User)
func (*ServerSpec) Destination ¶
func (s *ServerSpec) Destination() net.Destination
func (*ServerSpec) HasUser ¶
func (s *ServerSpec) HasUser(user *User) bool
func (*ServerSpec) Invalidate ¶
func (v *ServerSpec) Invalidate()
func (*ServerSpec) IsValid ¶
func (v *ServerSpec) IsValid() bool
func (*ServerSpec) PickUser ¶
func (s *ServerSpec) PickUser() *User
type TimestampGenerator ¶
type TimestampGenerator func() Timestamp
func NewTimestampGenerator ¶
func NewTimestampGenerator(base Timestamp, delta int) TimestampGenerator
type TransferType ¶
type TransferType int
const ( TransferTypeStream TransferType = 0 TransferTypePacket TransferType = 1 )
type User ¶
type User struct { Level uint32 `protobuf:"varint,1,opt,name=level" json:"level,omitempty"` Email string `protobuf:"bytes,2,opt,name=email" json:"email,omitempty"` // Protocol specific account information. Account *v2ray_core_common_serial.TypedMessage `protobuf:"bytes,3,opt,name=account" json:"account,omitempty"` }
User is a generic user for all procotols.
func UserFromContext ¶
func (*User) Descriptor ¶
func (*User) GetAccount ¶
func (m *User) GetAccount() *v2ray_core_common_serial.TypedMessage
func (*User) GetSettings ¶
func (v *User) GetSettings() UserSettings
func (*User) GetTypedAccount ¶
func (*User) ProtoMessage ¶
func (*User) ProtoMessage()
type UserSettings ¶
type UserValidator ¶
type ValidationStrategy ¶
type ValidationStrategy interface { IsValid() bool Invalidate() }
func AlwaysValid ¶
func AlwaysValid() ValidationStrategy
func BeforeTime ¶
func BeforeTime(t time.Time) ValidationStrategy
Click to show internal directories.
Click to hide internal directories.