package socks
import "golang.org/x/net/internal/socks"
Package socks provides a SOCKS version 5 client implementation.
SOCKS protocol version 5 is defined in RFC 1928. Username/Password authentication for SOCKS version 5 is defined in RFC 1929.
Index ¶
- Constants
- type Addr
- type AuthMethod
- type Command
- type Conn
- type Dialer
- func NewDialer(network, address string) *Dialer
- func (d *Dialer) Dial(network, address string) (net.Conn, error)
- func (d *Dialer) DialContext(ctx context.Context, network, address string) (net.Conn, error)
- func (d *Dialer) DialWithConn(ctx context.Context, c net.Conn, network, address string) (net.Addr, error)
- type Reply
- type UsernamePassword
Constants ¶
const ( Version5 = 0x05 AddrTypeIPv4 = 0x01 AddrTypeFQDN = 0x03 AddrTypeIPv6 = 0x04 CmdConnect Command = 0x01 // establishes an active-open forward proxy connection AuthMethodNotRequired AuthMethod = 0x00 // no authentication required AuthMethodUsernamePassword AuthMethod = 0x02 // use username/password AuthMethodNoAcceptableMethods AuthMethod = 0xff // no acceptable authentication methods StatusSucceeded Reply = 0x00 )
Wire protocol constants.
Types ¶
type Addr ¶
An Addr represents a SOCKS-specific address. Either Name or IP is used exclusively.
func (*Addr) Network ¶
func (*Addr) String ¶
type AuthMethod ¶
type AuthMethod int
An AuthMethod represents a SOCKS authentication method.
type Command ¶
type Command int
A Command represents a SOCKS command.
func (Command) String ¶
type Conn ¶
A Conn represents a forward proxy connection.
func (*Conn) BoundAddr ¶
BoundAddr returns the address assigned by the proxy server for connecting to the command target address from the proxy server.
type Dialer ¶
type Dialer struct { // ProxyDial specifies the optional dial function for // establishing the transport connection. ProxyDial func(context.Context, string, string) (net.Conn, error) // AuthMethods specifies the list of request authentication // methods. // If empty, SOCKS client requests only AuthMethodNotRequired. AuthMethods []AuthMethod // Authenticate specifies the optional authentication // function. It must be non-nil when AuthMethods is not empty. // It must return an error when the authentication is failed. Authenticate func(context.Context, io.ReadWriter, AuthMethod) error // contains filtered or unexported fields }
A Dialer holds SOCKS-specific options.
func NewDialer ¶
NewDialer returns a new Dialer that dials through the provided proxy server's network and address.
func (*Dialer) Dial ¶
Dial connects to the provided address on the provided network.
Unlike DialContext, it returns a raw transport connection instead of a forward proxy connection.
Deprecated: Use DialContext or DialWithConn instead.
func (*Dialer) DialContext ¶
DialContext connects to the provided address on the provided network.
The returned error value may be a net.OpError. When the Op field of net.OpError contains "socks", the Source field contains a proxy server address and the Addr field contains a command target address.
See func Dial of the net package of standard library for a description of the network and address parameters.
func (*Dialer) DialWithConn ¶
func (d *Dialer) DialWithConn(ctx context.Context, c net.Conn, network, address string) (net.Addr, error)
DialWithConn initiates a connection from SOCKS server to the target network and address using the connection c that is already connected to the SOCKS server.
It returns the connection's local address assigned by the SOCKS server.
type Reply ¶
type Reply int
A Reply represents a SOCKS command reply code.
func (Reply) String ¶
type UsernamePassword ¶
UsernamePassword are the credentials for the username/password authentication method.
func (*UsernamePassword) Authenticate ¶
func (up *UsernamePassword) Authenticate(ctx context.Context, rw io.ReadWriter, auth AuthMethod) error
Authenticate authenticates a pair of username and password with the proxy server.
Source Files ¶
client.go socks.go
- Version
- v0.35.0 (latest)
- Published
- Feb 10, 2025
- Platform
- linux/amd64
- Imports
- 6 packages
- Last checked
- 6 hours ago –
Tools for package owners.