func MarshalAuthReply(ver int, m socks.AuthMethod) ([]byte, error)
MarshalAuthReply returns an authentication reply in wire format.
func MarshalCmdReply(ver int, reply socks.Reply, a *socks.Addr) ([]byte, error)
MarshalCmdReply returns a command reply in wire format.
func NoAuthRequired(rw io.ReadWriter, b []byte) error
NoAuthRequired handles a no-authentication-required signaling.
func NoProxyRequired(rw io.ReadWriter, b []byte) error
NoProxyRequired handles a command signaling without constructing a proxy connection to the final destination.
An AuthRequest represents an authentication request.
type AuthRequest struct { Version int Methods []socks.AuthMethod }
func ParseAuthRequest(b []byte) (*AuthRequest, error)
ParseAuthRequest parses an authentication request.
A CmdRequest represents a command request.
type CmdRequest struct { Version int Cmd socks.Command Addr socks.Addr }
func ParseCmdRequest(b []byte) (*CmdRequest, error)
ParseCmdRequest parses a command request.
A Server represents a server for handshake testing.
type Server struct {
// contains filtered or unexported fields
}
func NewServer(authFunc, cmdFunc func(io.ReadWriter, []byte) error) (*Server, error)
NewServer returns a new server.
The provided authFunc and cmdFunc must parse requests and return appropriate replies to clients.
func (s *Server) Addr() net.Addr
Addr returns a server address.
func (s *Server) Close() error
Close closes the server.
func (s *Server) TargetAddr() net.Addr
TargetAddr returns a fake final destination address.
The returned address is only valid for testing with Server.