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

package socks

import "v2ray.com/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",
}
var AuthType_value = map[string]int32{
    "NO_AUTH":  0,
    "PASSWORD": 1,
}

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"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

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)

func (*Account) Equals Uses

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

func (*Account) GetPassword Uses

func (m *Account) GetPassword() string

func (*Account) GetUsername Uses

func (m *Account) GetUsername() string

func (*Account) ProtoMessage Uses

func (*Account) ProtoMessage()

func (*Account) Reset Uses

func (m *Account) Reset()

func (*Account) String Uses

func (m *Account) String() string

func (*Account) XXX_DiscardUnknown Uses

func (m *Account) XXX_DiscardUnknown()

func (*Account) XXX_Marshal Uses

func (m *Account) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Account) XXX_Merge Uses

func (m *Account) XXX_Merge(src proto.Message)

func (*Account) XXX_Size Uses

func (m *Account) XXX_Size() int

func (*Account) XXX_Unmarshal Uses

func (m *Account) XXX_Unmarshal(b []byte) error

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) EnumDescriptor Uses

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

func (AuthType) String Uses

func (x AuthType) String() string

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"`
    XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
    XXX_unrecognized     []byte                     `json:"-"`
    XXX_sizecache        int32                      `json:"-"`
}

ClientConfig is the protobuf config for Socks client.

func (*ClientConfig) Descriptor Uses

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

func (*ClientConfig) GetServer Uses

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

func (*ClientConfig) ProtoMessage Uses

func (*ClientConfig) ProtoMessage()

func (*ClientConfig) Reset Uses

func (m *ClientConfig) Reset()

func (*ClientConfig) String Uses

func (m *ClientConfig) String() string

func (*ClientConfig) XXX_DiscardUnknown Uses

func (m *ClientConfig) XXX_DiscardUnknown()

func (*ClientConfig) XXX_Marshal Uses

func (m *ClientConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ClientConfig) XXX_Merge Uses

func (m *ClientConfig) XXX_Merge(src proto.Message)

func (*ClientConfig) XXX_Size Uses

func (m *ClientConfig) XXX_Size() int

func (*ClientConfig) XXX_Unmarshal Uses

func (m *ClientConfig) XXX_Unmarshal(b []byte) error

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"`
    Timeout              uint32            `protobuf:"varint,5,opt,name=timeout,proto3" json:"timeout,omitempty"` // Deprecated: Do not use.
    UserLevel            uint32            `protobuf:"varint,6,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"`
    XXX_NoUnkeyedLiteral struct{}          `json:"-"`
    XXX_unrecognized     []byte            `json:"-"`
    XXX_sizecache        int32             `json:"-"`
}

ServerConfig is the protobuf config for Socks server.

func (*ServerConfig) Descriptor Uses

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

func (*ServerConfig) GetAccounts Uses

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

func (*ServerConfig) GetAddress Uses

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

func (*ServerConfig) GetAuthType Uses

func (m *ServerConfig) GetAuthType() AuthType

func (*ServerConfig) GetTimeout Uses

func (m *ServerConfig) GetTimeout() uint32

Deprecated: Do not use.

func (*ServerConfig) GetUdpEnabled Uses

func (m *ServerConfig) GetUdpEnabled() bool

func (*ServerConfig) GetUserLevel Uses

func (m *ServerConfig) GetUserLevel() uint32

func (*ServerConfig) HasAccount Uses

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

func (*ServerConfig) ProtoMessage Uses

func (*ServerConfig) ProtoMessage()

func (*ServerConfig) Reset Uses

func (m *ServerConfig) Reset()

func (*ServerConfig) String Uses

func (m *ServerConfig) String() string

func (*ServerConfig) XXX_DiscardUnknown Uses

func (m *ServerConfig) XXX_DiscardUnknown()

func (*ServerConfig) XXX_Marshal Uses

func (m *ServerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ServerConfig) XXX_Merge Uses

func (m *ServerConfig) XXX_Merge(src proto.Message)

func (*ServerConfig) XXX_Size Uses

func (m *ServerConfig) XXX_Size() int

func (*ServerConfig) XXX_Unmarshal Uses

func (m *ServerConfig) XXX_Unmarshal(b []byte) error

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 25 packages (graph) and is imported by 7 packages. Updated 2019-02-15. Refresh now. Tools for package owners.