socks

package
v5.10.0 Latest Latest
Warning

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

Go to latest
Published: Oct 27, 2023 License: MIT Imports: 29 Imported by: 7

Documentation

Overview

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

Index

Constants

This section is empty.

Variables

View Source
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.

View Source
var (
	Version_name = map[int32]string{
		0: "SOCKS5",
		1: "SOCKS4",
		2: "SOCKS4A",
	}
	Version_value = map[string]int32{
		"SOCKS5":  0,
		"SOCKS4":  1,
		"SOCKS4A": 2,
	}
)

Enum value maps for Version.

View Source
var File_proxy_socks_config_proto protoreflect.FileDescriptor

Functions

func ClientHandshake

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

func ClientHandshake4 added in v5.2.0

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

func DecodeUDPPacket

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

func EncodeUDPPacket

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

func EncodeUDPPacketFromAddress added in v5.0.2

func EncodeUDPPacketFromAddress(address net.Destination, data []byte) (*buf.Buffer, error)

func ReadUntilNull

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

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

func ReadUsernamePassword

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 | +----+------+----------+------+----------+

Types

type Account

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

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

func (*Account) Descriptor deprecated

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

Deprecated: Use Account.ProtoReflect.Descriptor instead.

func (*Account) Equals

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

func (*Account) GetPassword

func (x *Account) GetPassword() string

func (*Account) GetUsername

func (x *Account) GetUsername() string

func (*Account) ProtoMessage

func (*Account) ProtoMessage()

func (*Account) ProtoReflect

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

func (*Account) Reset

func (x *Account) Reset()

func (*Account) String

func (x *Account) String() string

type AuthType

type AuthType int32

AuthType is the authentication type of Socks proxy.

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

func (AuthType) Descriptor

func (AuthType) Descriptor() protoreflect.EnumDescriptor

func (AuthType) Enum

func (x AuthType) Enum() *AuthType

func (AuthType) EnumDescriptor deprecated

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

Deprecated: Use AuthType.Descriptor instead.

func (AuthType) Number

func (x AuthType) Number() protoreflect.EnumNumber

func (AuthType) String

func (x AuthType) String() string

func (AuthType) Type

type Client

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

Client is a Socks5 client.

func NewClient

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

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

func (*Client) Process

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

Process implements proxy.Outbound.Process.

type ClientConfig

type ClientConfig struct {

	// Sever is a list of Socks server addresses.
	Server  []*protocol.ServerEndpoint `protobuf:"bytes,1,rep,name=server,proto3" json:"server,omitempty"`
	Version Version                    `protobuf:"varint,2,opt,name=version,proto3,enum=v2ray.core.proxy.socks.Version" json:"version,omitempty"`
	// contains filtered or unexported fields
}

ClientConfig is the protobuf config for Socks client.

func (*ClientConfig) Descriptor deprecated

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

Deprecated: Use ClientConfig.ProtoReflect.Descriptor instead.

func (*ClientConfig) GetServer

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

func (*ClientConfig) GetVersion

func (x *ClientConfig) GetVersion() Version

func (*ClientConfig) ProtoMessage

func (*ClientConfig) ProtoMessage()

func (*ClientConfig) ProtoReflect

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

func (*ClientConfig) Reset

func (x *ClientConfig) Reset()

func (*ClientConfig) String

func (x *ClientConfig) String() string

type Server

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

Server is a SOCKS 5 proxy server

func NewServer

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

NewServer creates a new Server object.

func (*Server) Network

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

Network implements proxy.Inbound.

func (*Server) Process

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

Process implements proxy.Inbound.

type ServerConfig

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 `` /* 157-byte string literal not displayed */
	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: Marked as deprecated in proxy/socks/config.proto.
	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"`
	PacketEncoding packetaddr.PacketAddrType `` /* 150-byte string literal not displayed */
	// contains filtered or unexported fields
}

ServerConfig is the protobuf config for Socks server.

func (*ServerConfig) Descriptor deprecated

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

Deprecated: Use ServerConfig.ProtoReflect.Descriptor instead.

func (*ServerConfig) GetAccounts

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

func (*ServerConfig) GetAddress

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

func (*ServerConfig) GetAuthType

func (x *ServerConfig) GetAuthType() AuthType

func (*ServerConfig) GetPacketEncoding added in v5.0.2

func (x *ServerConfig) GetPacketEncoding() packetaddr.PacketAddrType

func (*ServerConfig) GetTimeout deprecated

func (x *ServerConfig) GetTimeout() uint32

Deprecated: Marked as deprecated in proxy/socks/config.proto.

func (*ServerConfig) GetUdpEnabled

func (x *ServerConfig) GetUdpEnabled() bool

func (*ServerConfig) GetUserLevel

func (x *ServerConfig) GetUserLevel() uint32

func (*ServerConfig) HasAccount

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

func (*ServerConfig) ProtoMessage

func (*ServerConfig) ProtoMessage()

func (*ServerConfig) ProtoReflect

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

func (*ServerConfig) Reset

func (x *ServerConfig) Reset()

func (*ServerConfig) String

func (x *ServerConfig) String() string

type ServerSession

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

func (*ServerSession) Handshake

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

Handshake performs a Socks4/4a/5 handshake.

type UDPReader

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

func NewUDPReader

func NewUDPReader(reader io.Reader) *UDPReader

func (*UDPReader) ReadFrom added in v5.0.2

func (r *UDPReader) ReadFrom(p []byte) (n int, addr gonet.Addr, err error)

func (*UDPReader) ReadMultiBuffer

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

type UDPWriter

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

func NewUDPWriter

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

func (*UDPWriter) Write

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

Write implements io.Writer.

func (*UDPWriter) WriteTo added in v5.0.2

func (w *UDPWriter) WriteTo(payload []byte, addr gonet.Addr) (n int, err error)

type Version

type Version int32
const (
	Version_SOCKS5  Version = 0
	Version_SOCKS4  Version = 1
	Version_SOCKS4A Version = 2
)

func (Version) Descriptor

func (Version) Descriptor() protoreflect.EnumDescriptor

func (Version) Enum

func (x Version) Enum() *Version

func (Version) EnumDescriptor deprecated

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

Deprecated: Use Version.Descriptor instead.

func (Version) Number

func (x Version) Number() protoreflect.EnumNumber

func (Version) String

func (x Version) String() string

func (Version) Type

func (Version) Type() protoreflect.EnumType

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL