protocol

package
Version: v4.31.2+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 18, 2020 License: MIT Imports: 20 Imported by: 0

Documentation

Index

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
)
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",
	}
	SecurityType_value = map[string]int32{
		"UNKNOWN":           0,
		"LEGACY":            1,
		"AUTO":              2,
		"AES128_GCM":        3,
		"CHACHA20_POLY1305": 4,
		"NONE":              5,
	}
)

Enum value maps for SecurityType.

View Source
var File_common_protocol_headers_proto protoreflect.FileDescriptor
View Source
var File_server_spec_proto protoreflect.FileDescriptor

Functions

func ContextWithRequestHeader

func ContextWithRequestHeader(ctx context.Context, request *RequestHeader) context.Context

func DefaultIDHash

func DefaultIDHash(key []byte) hash.Hash

Types

type Account added in v1.11.1

type Account interface {
	Equals(Account) bool
}

Account is a user identity used for authentication.

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 AddressTypeParser func(byte) byte

type AsAccount

type AsAccount interface {
	AsAccount() (Account, error)
}

AsAccount is an object can be converted into account.

type CommandSwitchAccount

type CommandSwitchAccount struct {
	Host     net.Address
	Port     net.Port
	ID       uuid.UUID
	Level    uint32
	AlterIds uint16
	ValidMin byte
}

type ID

type ID struct {
	// contains filtered or unexported fields
}

The ID of en entity, in the form of a UUID.

func NewAlterIDs added in v1.12.7

func NewAlterIDs(primary *ID, alterIDCount uint16) []*ID

func NewID

func NewID(uuid uuid.UUID) *ID

NewID returns an ID with given UUID.

func (*ID) Bytes

func (id *ID) Bytes() []byte

func (ID) CmdKey

func (id ID) CmdKey() []byte

func (*ID) Equals

func (id *ID) Equals(another *ID) bool

Equals returns true if this ID equals to the other one.

func (*ID) String

func (id *ID) String() string

func (*ID) UUID

func (id *ID) UUID() uuid.UUID

type IDHash

type IDHash func(key []byte) hash.Hash

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 added in v1.21.1

type RoundRobinServerPicker struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewRoundRobinServerPicker added in v1.21.1

func NewRoundRobinServerPicker(serverlist *ServerList) *RoundRobinServerPicker

func (*RoundRobinServerPicker) PickServer added in v1.21.1

func (p *RoundRobinServerPicker) PickServer() *ServerSpec

type SecurityConfig

type SecurityConfig struct {
	Type SecurityType `protobuf:"varint,1,opt,name=type,proto3,enum=v2ray.core.common.protocol.SecurityType" json:"type,omitempty"`
	// contains filtered or unexported fields
}

func (*SecurityConfig) Descriptor deprecated

This method has been 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
)

func (SecurityType) Descriptor

func (SecurityType) Enum

func (x SecurityType) Enum() *SecurityType

func (SecurityType) EnumDescriptor deprecated

This method has been deprecated.
func (SecurityType) EnumDescriptor() ([]byte, []int)

Deprecated: Use SecurityType.Descriptor instead.

func (SecurityType) Number

func (SecurityType) String

func (x SecurityType) String() string

func (SecurityType) Type

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

This method has been 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 added in v1.21.1

type ServerList struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewServerList added in v1.21.1

func NewServerList() *ServerList

func (*ServerList) AddServer added in v1.21.1

func (sl *ServerList) AddServer(server *ServerSpec)

func (*ServerList) GetServer added in v1.21.1

func (sl *ServerList) GetServer(idx uint32) *ServerSpec

func (*ServerList) Size added in v1.21.1

func (sl *ServerList) Size() uint32

type ServerPicker added in v1.21.1

type ServerPicker interface {
	PickServer() *ServerSpec
}

type ServerSpec added in v1.21.1

type ServerSpec struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewServerSpec added in v1.21.1

func NewServerSpec(dest net.Destination, valid ValidationStrategy, users ...*MemoryUser) *ServerSpec

func NewServerSpecFromPB

func NewServerSpecFromPB(spec *ServerEndpoint) (*ServerSpec, error)

func (*ServerSpec) AddUser added in v1.21.1

func (s *ServerSpec) AddUser(user *MemoryUser)

func (*ServerSpec) Destination added in v1.21.1

func (s *ServerSpec) Destination() net.Destination

func (*ServerSpec) HasUser added in v1.21.1

func (s *ServerSpec) HasUser(user *MemoryUser) bool

func (*ServerSpec) Invalidate added in v1.21.2

func (s *ServerSpec) Invalidate()

func (*ServerSpec) IsValid added in v1.21.1

func (s *ServerSpec) IsValid() bool

func (*ServerSpec) PickUser added in v1.21.1

func (s *ServerSpec) PickUser() *MemoryUser

type Timestamp

type Timestamp int64

func NowTime

func NowTime() Timestamp

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"`
	Rate  uint64 `protobuf:"varint,4,opt,name=rate,proto3" json:"rate,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
}

func (*User) Descriptor deprecated

This method has been deprecated.
func (*User) Descriptor() ([]byte, []int)

Deprecated: Use User.ProtoReflect.Descriptor instead.

func (*User) GetAccount

func (x *User) GetAccount() *serial.TypedMessage

func (*User) GetEmail

func (x *User) GetEmail() string

func (*User) GetLevel

func (x *User) GetLevel() uint32

func (*User) GetRate

func (x *User) GetRate() uint64

func (*User) GetTypedAccount

func (u *User) GetTypedAccount() (Account, error)

func (*User) ProtoMessage

func (*User) ProtoMessage()

func (*User) ProtoReflect

func (x *User) ProtoReflect() protoreflect.Message

func (*User) Reset

func (x *User) Reset()

func (*User) String

func (x *User) String() string

func (*User) ToMemoryUser

func (u *User) ToMemoryUser() (*MemoryUser, error)

type ValidationStrategy added in v1.21.2

type ValidationStrategy interface {
	IsValid() bool
	Invalidate()
}

func AlwaysValid added in v1.21.2

func AlwaysValid() ValidationStrategy

func BeforeTime added in v1.21.2

func BeforeTime(t time.Time) ValidationStrategy

Directories

Path Synopsis
tls

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL