socks

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Oct 19, 2022 License: MIT Imports: 29 Imported by: 0

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

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

func ClientHandshake4 added in v1.1.0

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

func DecodeUDPPacket added in v1.1.0

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

func EncodeUDPPacket added in v1.1.0

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

func EncodeUDPPacketFromAddress added in v1.1.0

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

func ReadUntilNull added in v1.1.0

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

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

func ReadUsernamePassword added in v1.1.0

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

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

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

func (*Account) Descriptor deprecated added in v1.1.0

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

Deprecated: Use Account.ProtoReflect.Descriptor instead.

func (*Account) Equals added in v1.1.0

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

func (*Account) GetPassword added in v1.1.0

func (x *Account) GetPassword() string

func (*Account) GetUsername added in v1.1.0

func (x *Account) GetUsername() string

func (*Account) ProtoMessage added in v1.1.0

func (*Account) ProtoMessage()

func (*Account) ProtoReflect added in v1.1.0

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

func (*Account) Reset added in v1.1.0

func (x *Account) Reset()

func (*Account) String added in v1.1.0

func (x *Account) String() string

type AuthType added in v1.1.0

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

func (AuthType) Descriptor() protoreflect.EnumDescriptor

func (AuthType) Enum added in v1.1.0

func (x AuthType) Enum() *AuthType

func (AuthType) EnumDescriptor deprecated added in v1.1.0

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

Deprecated: Use AuthType.Descriptor instead.

func (AuthType) Number added in v1.1.0

func (x AuthType) Number() protoreflect.EnumNumber

func (AuthType) String added in v1.1.0

func (x AuthType) String() string

func (AuthType) Type added in v1.1.0

type Client added in v1.1.0

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

Client is a Socks5 client.

func NewClient added in v1.1.0

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

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

func (*Client) Process added in v1.1.0

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

Process implements proxy.Outbound.Process.

type ClientConfig added in v1.1.0

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

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

Deprecated: Use ClientConfig.ProtoReflect.Descriptor instead.

func (*ClientConfig) GetServer added in v1.1.0

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

func (*ClientConfig) GetVersion added in v1.1.0

func (x *ClientConfig) GetVersion() Version

func (*ClientConfig) ProtoMessage added in v1.1.0

func (*ClientConfig) ProtoMessage()

func (*ClientConfig) ProtoReflect added in v1.1.0

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

func (*ClientConfig) Reset added in v1.1.0

func (x *ClientConfig) Reset()

func (*ClientConfig) String added in v1.1.0

func (x *ClientConfig) String() string

type Server added in v1.1.0

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

Server is a SOCKS 5 proxy server

func NewServer added in v1.1.0

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

NewServer creates a new Server object.

func (*Server) Network added in v1.1.0

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

Network implements proxy.Inbound.

func (*Server) Process added in v1.1.0

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

Process implements proxy.Inbound.

type ServerConfig added in v1.1.0

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: 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"`
	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 added in v1.1.0

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

Deprecated: Use ServerConfig.ProtoReflect.Descriptor instead.

func (*ServerConfig) GetAccounts added in v1.1.0

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

func (*ServerConfig) GetAddress added in v1.1.0

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

func (*ServerConfig) GetAuthType added in v1.1.0

func (x *ServerConfig) GetAuthType() AuthType

func (*ServerConfig) GetPacketEncoding added in v1.1.0

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

func (*ServerConfig) GetTimeout deprecated added in v1.1.0

func (x *ServerConfig) GetTimeout() uint32

Deprecated: Do not use.

func (*ServerConfig) GetUdpEnabled added in v1.1.0

func (x *ServerConfig) GetUdpEnabled() bool

func (*ServerConfig) GetUserLevel added in v1.1.0

func (x *ServerConfig) GetUserLevel() uint32

func (*ServerConfig) HasAccount added in v1.1.0

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

func (*ServerConfig) ProtoMessage added in v1.1.0

func (*ServerConfig) ProtoMessage()

func (*ServerConfig) ProtoReflect added in v1.1.0

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

func (*ServerConfig) Reset added in v1.1.0

func (x *ServerConfig) Reset()

func (*ServerConfig) String added in v1.1.0

func (x *ServerConfig) String() string

type ServerSession added in v1.1.0

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

func (*ServerSession) Handshake added in v1.1.0

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

Handshake performs a Socks4/4a/5 handshake.

type UDPReader added in v1.1.0

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

func NewUDPReader added in v1.1.0

func NewUDPReader(reader io.Reader) *UDPReader

func (*UDPReader) ReadFrom added in v1.1.0

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

func (*UDPReader) ReadMultiBuffer added in v1.1.0

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

type UDPWriter added in v1.1.0

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

func NewUDPWriter added in v1.1.0

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

func (*UDPWriter) Write added in v1.1.0

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

Write implements io.Writer.

func (*UDPWriter) WriteTo added in v1.1.0

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

type Version added in v1.1.0

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

func (Version) Descriptor added in v1.1.0

func (Version) Descriptor() protoreflect.EnumDescriptor

func (Version) Enum added in v1.1.0

func (x Version) Enum() *Version

func (Version) EnumDescriptor deprecated added in v1.1.0

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

Deprecated: Use Version.Descriptor instead.

func (Version) Number added in v1.1.0

func (x Version) Number() protoreflect.EnumNumber

func (Version) String added in v1.1.0

func (x Version) String() string

func (Version) Type added in v1.1.0

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