Documentation ¶
Index ¶
- Constants
- Variables
- func ContextWithRequestHeader(ctx context.Context, request *RequestHeader) context.Context
- func DefaultIDHash(key []byte) hash.Hash
- type Account
- type AddressOption
- type AddressSerializer
- type AddressType
- type AddressTypeParser
- type AsAccount
- type CommandSwitchAccount
- type ID
- type IDHash
- type MemoryUser
- type RequestCommand
- type RequestHeader
- type ResponseCommand
- type ResponseHeader
- type RoundRobinServerPicker
- type SecurityConfig
- func (*SecurityConfig) Descriptor() ([]byte, []int)deprecated
- func (sc *SecurityConfig) GetSecurityType() SecurityType
- func (x *SecurityConfig) GetType() SecurityType
- func (*SecurityConfig) ProtoMessage()
- func (x *SecurityConfig) ProtoReflect() protoreflect.Message
- func (x *SecurityConfig) Reset()
- func (x *SecurityConfig) String() string
- type SecurityType
- func (SecurityType) Descriptor() protoreflect.EnumDescriptor
- func (x SecurityType) Enum() *SecurityType
- func (SecurityType) EnumDescriptor() ([]byte, []int)deprecated
- func (x SecurityType) Number() protoreflect.EnumNumber
- func (x SecurityType) String() string
- func (SecurityType) Type() protoreflect.EnumType
- type ServerEndpoint
- func (*ServerEndpoint) Descriptor() ([]byte, []int)deprecated
- func (x *ServerEndpoint) GetAddress() *net.IPOrDomain
- func (x *ServerEndpoint) GetPort() uint32
- func (x *ServerEndpoint) GetUser() []*User
- func (*ServerEndpoint) ProtoMessage()
- func (x *ServerEndpoint) ProtoReflect() protoreflect.Message
- func (x *ServerEndpoint) Reset()
- func (x *ServerEndpoint) String() string
- type ServerList
- type ServerPicker
- type ServerSpec
- type Timestamp
- type TimestampGenerator
- type TransferType
- type User
- func (*User) Descriptor() ([]byte, []int)deprecated
- func (x *User) GetAccount() *serial.TypedMessage
- func (x *User) GetEmail() string
- func (x *User) GetLevel() uint32
- func (u *User) GetTypedAccount() (Account, error)
- func (*User) ProtoMessage()
- func (x *User) ProtoReflect() protoreflect.Message
- func (x *User) Reset()
- func (x *User) String() string
- func (u *User) ToMemoryUser() (*MemoryUser, error)
- 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 bitmask.Byte = 0x01 // RequestOptionConnectionReuse indicates client side expects to reuse the connection. RequestOptionConnectionReuse bitmask.Byte = 0x02 RequestOptionChunkMasking bitmask.Byte = 0x04 RequestOptionGlobalPadding bitmask.Byte = 0x08 RequestOptionAuthenticatedLength bitmask.Byte = 0x10 )
View Source
const (
IDBytesLen = 16
)
View Source
const (
ResponseOptionConnectionReuse bitmask.Byte = 0x01
)
Variables ¶
View Source
var ( SecurityType_name = map[int32]string{ 0: "UNKNOWN", 1: "LEGACY", 2: "AUTO", 3: "AES128_GCM", 4: "CHACHA20_POLY1305", 5: "NONE", 6: "ZERO", } SecurityType_value = map[string]int32{ "UNKNOWN": 0, "LEGACY": 1, "AUTO": 2, "AES128_GCM": 3, "CHACHA20_POLY1305": 4, "NONE": 5, "ZERO": 6, } )
Enum value maps for SecurityType.
View Source
var File_common_protocol_headers_proto protoreflect.FileDescriptor
View Source
var File_common_protocol_server_spec_proto protoreflect.FileDescriptor
View Source
var File_common_protocol_user_proto protoreflect.FileDescriptor
Functions ¶
func ContextWithRequestHeader ¶
func ContextWithRequestHeader(ctx context.Context, request *RequestHeader) context.Context
func DefaultIDHash ¶
Types ¶
type AddressOption ¶
type AddressOption func(*option)
func AddressFamilyByte ¶
func AddressFamilyByte(b byte, f net.AddressFamily) AddressOption
func PortThenAddress ¶
func PortThenAddress() AddressOption
func WithAddressTypeParser ¶
func WithAddressTypeParser(atp AddressTypeParser) AddressOption
type AddressSerializer ¶
type AddressSerializer interface { ReadAddressPort(buffer *buf.Buffer, input io.Reader) (net.Address, net.Port, error) WriteAddressPort(writer io.Writer, addr net.Address, port net.Port) error }
func NewAddressParser ¶
func NewAddressParser(options ...AddressOption) AddressSerializer
NewAddressParser creates a new AddressParser
type AddressType ¶
type AddressType byte
const ( AddressTypeIPv4 AddressType = 1 AddressTypeDomain AddressType = 2 AddressTypeIPv6 AddressType = 3 )
type AddressTypeParser ¶
type CommandSwitchAccount ¶
type ID ¶
type ID struct {
// contains filtered or unexported fields
}
The ID of en entity, in the form of a UUID.
func NewAlterIDs ¶
type MemoryUser ¶
type MemoryUser struct { // Account is the parsed account of the protocol. Account Account Email string Level uint32 }
MemoryUser is a parsed form of User, to reduce number of parsing of Account proto.
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 bitmask.Byte Security SecurityType Port net.Port Address net.Address User *MemoryUser }
func RequestHeaderFromContext ¶
func RequestHeaderFromContext(ctx context.Context) *RequestHeader
func (*RequestHeader) Destination ¶
func (h *RequestHeader) Destination() net.Destination
type ResponseCommand ¶
type ResponseCommand interface{}
type ResponseHeader ¶
type ResponseHeader struct { Option bitmask.Byte Command ResponseCommand }
type RoundRobinServerPicker ¶
func NewRoundRobinServerPicker ¶
func NewRoundRobinServerPicker(serverlist *ServerList) *RoundRobinServerPicker
func (*RoundRobinServerPicker) PickServer ¶
func (p *RoundRobinServerPicker) PickServer() *ServerSpec
type SecurityConfig ¶
type SecurityConfig struct { Type SecurityType `protobuf:"varint,1,opt,name=type,proto3,enum=xray.common.protocol.SecurityType" json:"type,omitempty"` // contains filtered or unexported fields }
func (*SecurityConfig) Descriptor
deprecated
func (*SecurityConfig) Descriptor() ([]byte, []int)
Deprecated: Use SecurityConfig.ProtoReflect.Descriptor instead.
func (*SecurityConfig) GetSecurityType ¶
func (sc *SecurityConfig) GetSecurityType() SecurityType
func (*SecurityConfig) GetType ¶
func (x *SecurityConfig) GetType() SecurityType
func (*SecurityConfig) ProtoMessage ¶
func (*SecurityConfig) ProtoMessage()
func (*SecurityConfig) ProtoReflect ¶
func (x *SecurityConfig) ProtoReflect() protoreflect.Message
func (*SecurityConfig) Reset ¶
func (x *SecurityConfig) Reset()
func (*SecurityConfig) String ¶
func (x *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 SecurityType_ZERO SecurityType = 6 )
func (SecurityType) Descriptor ¶
func (SecurityType) Descriptor() protoreflect.EnumDescriptor
func (SecurityType) Enum ¶
func (x SecurityType) Enum() *SecurityType
func (SecurityType) EnumDescriptor
deprecated
func (SecurityType) EnumDescriptor() ([]byte, []int)
Deprecated: Use SecurityType.Descriptor instead.
func (SecurityType) Number ¶
func (x SecurityType) Number() protoreflect.EnumNumber
func (SecurityType) String ¶
func (x SecurityType) String() string
func (SecurityType) Type ¶
func (SecurityType) Type() protoreflect.EnumType
type ServerEndpoint ¶
type ServerEndpoint struct { Address *net.IPOrDomain `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` User []*User `protobuf:"bytes,3,rep,name=user,proto3" json:"user,omitempty"` // contains filtered or unexported fields }
func (*ServerEndpoint) Descriptor
deprecated
func (*ServerEndpoint) Descriptor() ([]byte, []int)
Deprecated: Use ServerEndpoint.ProtoReflect.Descriptor instead.
func (*ServerEndpoint) GetAddress ¶
func (x *ServerEndpoint) GetAddress() *net.IPOrDomain
func (*ServerEndpoint) GetPort ¶
func (x *ServerEndpoint) GetPort() uint32
func (*ServerEndpoint) GetUser ¶
func (x *ServerEndpoint) GetUser() []*User
func (*ServerEndpoint) ProtoMessage ¶
func (*ServerEndpoint) ProtoMessage()
func (*ServerEndpoint) ProtoReflect ¶
func (x *ServerEndpoint) ProtoReflect() protoreflect.Message
func (*ServerEndpoint) Reset ¶
func (x *ServerEndpoint) Reset()
func (*ServerEndpoint) String ¶
func (x *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 ...*MemoryUser) *ServerSpec
func NewServerSpecFromPB ¶
func NewServerSpecFromPB(spec *ServerEndpoint) (*ServerSpec, error)
func (*ServerSpec) AddUser ¶
func (s *ServerSpec) AddUser(user *MemoryUser)
func (*ServerSpec) Destination ¶
func (s *ServerSpec) Destination() net.Destination
func (*ServerSpec) HasUser ¶
func (s *ServerSpec) HasUser(user *MemoryUser) bool
func (*ServerSpec) Invalidate ¶
func (s *ServerSpec) Invalidate()
func (*ServerSpec) IsValid ¶
func (s *ServerSpec) IsValid() bool
func (*ServerSpec) PickUser ¶
func (s *ServerSpec) PickUser() *MemoryUser
type TimestampGenerator ¶
type TimestampGenerator func() Timestamp
func NewTimestampGenerator ¶
func NewTimestampGenerator(base Timestamp, delta int) TimestampGenerator
type TransferType ¶
type TransferType byte
const ( TransferTypeStream TransferType = 0 TransferTypePacket TransferType = 1 )
type User ¶
type User struct { Level uint32 `protobuf:"varint,1,opt,name=level,proto3" json:"level,omitempty"` Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` // Protocol specific account information. Must be the account proto in one of // the proxies. Account *serial.TypedMessage `protobuf:"bytes,3,opt,name=account,proto3" json:"account,omitempty"` // contains filtered or unexported fields }
User is a generic user for all procotols.
func (*User) Descriptor
deprecated
func (*User) GetAccount ¶
func (x *User) GetAccount() *serial.TypedMessage
func (*User) GetTypedAccount ¶
func (*User) ProtoMessage ¶
func (*User) ProtoMessage()
func (*User) ProtoReflect ¶
func (x *User) ProtoReflect() protoreflect.Message
func (*User) ToMemoryUser ¶
func (u *User) ToMemoryUser() (*MemoryUser, error)
type ValidationStrategy ¶
type ValidationStrategy interface { IsValid() bool Invalidate() }
func AlwaysValid ¶
func AlwaysValid() ValidationStrategy
func BeforeTime ¶
func BeforeTime(t time.Time) ValidationStrategy
Source Files ¶
Click to show internal directories.
Click to hide internal directories.