v2ray-core: github.com/v2ray/v2ray-core/proxy/socks Index | Files

package socks

import "github.com/v2ray/v2ray-core/proxy/socks"

Package socks provides implements of Socks protocol 4, 4a and 5.

Index

Package Files

client.go config.go config.pb.go errors.generated.go protocol.go server.go socks.go

Variables

var (
    AuthType_name = map[int32]string{
        0:  "NO_AUTH",
        1:  "PASSWORD",
    }
    AuthType_value = map[string]int32{
        "NO_AUTH":  0,
        "PASSWORD": 1,
    }
)

Enum value maps for AuthType.

var File_proxy_socks_config_proto protoreflect.FileDescriptor

func ClientHandshake Uses

func ClientHandshake(request *protocol.RequestHeader, reader io.Reader, writer io.Writer) (*protocol.RequestHeader, error)

func DecodeUDPPacket Uses

func DecodeUDPPacket(packet *buf.Buffer) (*protocol.RequestHeader, error)

func EncodeUDPPacket Uses

func EncodeUDPPacket(request *protocol.RequestHeader, data []byte) (*buf.Buffer, error)

func ReadUntilNull Uses

func ReadUntilNull(reader io.Reader) (string, error)

ReadUntilNull reads content from given reader, until a null (0x00) byte.

func ReadUsernamePassword Uses

func ReadUsernamePassword(reader io.Reader) (string, string, error)

ReadUsernamePassword reads Socks 5 username/password message from the given reader. +----+------+----------+------+----------+ |VER | ULEN | UNAME | PLEN | PASSWD | +----+------+----------+------+----------+ | 1 | 1 | 1 to 255 | 1 | 1 to 255 | +----+------+----------+------+----------+

type Account Uses

type Account struct {
    Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
    Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
    // contains filtered or unexported fields
}

Account represents a Socks account.

func (*Account) AsAccount Uses

func (a *Account) AsAccount() (protocol.Account, error)

func (*Account) Descriptor Uses

func (*Account) Descriptor() ([]byte, []int)

Deprecated: Use Account.ProtoReflect.Descriptor instead.

func (*Account) Equals Uses

func (a *Account) Equals(another protocol.Account) bool

func (*Account) GetPassword Uses

func (x *Account) GetPassword() string

func (*Account) GetUsername Uses

func (x *Account) GetUsername() string

func (*Account) ProtoMessage Uses

func (*Account) ProtoMessage()

func (*Account) ProtoReflect Uses

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

func (*Account) Reset Uses

func (x *Account) Reset()

func (*Account) String Uses

func (x *Account) String() string

type AuthType Uses

type AuthType int32

AuthType is the authentication type of Socks proxy.

const (
    // NO_AUTH is for anounymous authentication.
    AuthType_NO_AUTH AuthType = 0
    // PASSWORD is for username/password authentication.
    AuthType_PASSWORD AuthType = 1
)

func (AuthType) Descriptor Uses

func (AuthType) Descriptor() protoreflect.EnumDescriptor

func (AuthType) Enum Uses

func (x AuthType) Enum() *AuthType

func (AuthType) EnumDescriptor Uses

func (AuthType) EnumDescriptor() ([]byte, []int)

Deprecated: Use AuthType.Descriptor instead.

func (AuthType) Number Uses

func (x AuthType) Number() protoreflect.EnumNumber

func (AuthType) String Uses

func (x AuthType) String() string

func (AuthType) Type Uses

func (AuthType) Type() protoreflect.EnumType

type Client Uses

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

Client is a Socks5 client.

func NewClient Uses

func NewClient(ctx context.Context, config *ClientConfig) (*Client, error)

NewClient create a new Socks5 client based on the given config.

func (*Client) Process Uses

func (c *Client) Process(ctx context.Context, link *transport.Link, dialer internet.Dialer) error

Process implements proxy.Outbound.Process.

type ClientConfig Uses

type ClientConfig struct {

    // Sever is a list of Socks server addresses.
    Server []*protocol.ServerEndpoint `protobuf:"bytes,1,rep,name=server,proto3" json:"server,omitempty"`
    // contains filtered or unexported fields
}

ClientConfig is the protobuf config for Socks client.

func (*ClientConfig) Descriptor Uses

func (*ClientConfig) Descriptor() ([]byte, []int)

Deprecated: Use ClientConfig.ProtoReflect.Descriptor instead.

func (*ClientConfig) GetServer Uses

func (x *ClientConfig) GetServer() []*protocol.ServerEndpoint

func (*ClientConfig) ProtoMessage Uses

func (*ClientConfig) ProtoMessage()

func (*ClientConfig) ProtoReflect Uses

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

func (*ClientConfig) Reset Uses

func (x *ClientConfig) Reset()

func (*ClientConfig) String Uses

func (x *ClientConfig) String() string

type Server Uses

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

Server is a SOCKS 5 proxy server

func NewServer Uses

func NewServer(ctx context.Context, config *ServerConfig) (*Server, error)

NewServer creates a new Server object.

func (*Server) Network Uses

func (s *Server) Network() []net.Network

Network implements proxy.Inbound.

func (*Server) Process Uses

func (s *Server) Process(ctx context.Context, network net.Network, conn internet.Connection, dispatcher routing.Dispatcher) error

Process implements proxy.Inbound.

type ServerConfig Uses

type ServerConfig struct {
    AuthType   AuthType          `protobuf:"varint,1,opt,name=auth_type,json=authType,proto3,enum=v2ray.core.proxy.socks.AuthType" json:"auth_type,omitempty"`
    Accounts   map[string]string `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
    Address    *net.IPOrDomain   `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"`
    UdpEnabled bool              `protobuf:"varint,4,opt,name=udp_enabled,json=udpEnabled,proto3" json:"udp_enabled,omitempty"`
    // Deprecated: Do not use.
    Timeout   uint32 `protobuf:"varint,5,opt,name=timeout,proto3" json:"timeout,omitempty"`
    UserLevel uint32 `protobuf:"varint,6,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"`
    // contains filtered or unexported fields
}

ServerConfig is the protobuf config for Socks server.

func (*ServerConfig) Descriptor Uses

func (*ServerConfig) Descriptor() ([]byte, []int)

Deprecated: Use ServerConfig.ProtoReflect.Descriptor instead.

func (*ServerConfig) GetAccounts Uses

func (x *ServerConfig) GetAccounts() map[string]string

func (*ServerConfig) GetAddress Uses

func (x *ServerConfig) GetAddress() *net.IPOrDomain

func (*ServerConfig) GetAuthType Uses

func (x *ServerConfig) GetAuthType() AuthType

func (*ServerConfig) GetTimeout Uses

func (x *ServerConfig) GetTimeout() uint32

Deprecated: Do not use.

func (*ServerConfig) GetUdpEnabled Uses

func (x *ServerConfig) GetUdpEnabled() bool

func (*ServerConfig) GetUserLevel Uses

func (x *ServerConfig) GetUserLevel() uint32

func (*ServerConfig) HasAccount Uses

func (c *ServerConfig) HasAccount(username, password string) bool

func (*ServerConfig) ProtoMessage Uses

func (*ServerConfig) ProtoMessage()

func (*ServerConfig) ProtoReflect Uses

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

func (*ServerConfig) Reset Uses

func (x *ServerConfig) Reset()

func (*ServerConfig) String Uses

func (x *ServerConfig) String() string

type ServerSession Uses

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

func (*ServerSession) Handshake Uses

func (s *ServerSession) Handshake(reader io.Reader, writer io.Writer) (*protocol.RequestHeader, error)

Handshake performs a Socks4/4a/5 handshake.

type UDPReader Uses

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

func NewUDPReader Uses

func NewUDPReader(reader io.Reader) *UDPReader

func (*UDPReader) ReadMultiBuffer Uses

func (r *UDPReader) ReadMultiBuffer() (buf.MultiBuffer, error)

type UDPWriter Uses

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

func NewUDPWriter Uses

func NewUDPWriter(request *protocol.RequestHeader, writer io.Writer) *UDPWriter

func (*UDPWriter) Write Uses

func (w *UDPWriter) Write(b []byte) (int, error)

Write implements io.Writer.

Package socks imports 27 packages (graph) and is imported by 3 packages. Updated 2020-10-21. Refresh now. Tools for package owners.