| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | package protocolimport (	"github.com/v2ray/v2ray-core/common/errors")type SocksVersion4Error struct {	errors.ErrorCode}var socksVersion4ErrorInstance = SocksVersion4Error{ErrorCode: 1000}func NewSocksVersion4Error() SocksVersion4Error {	return socksVersion4ErrorInstance}func (err SocksVersion4Error) Error() string {	return err.Prefix() + "Request is socks version 4."}type Socks4AuthenticationRequest struct {	Version byte	Command byte	Port    uint16	IP      [4]byte}type Socks4AuthenticationResponse struct {	result byte	port   uint16	ip     []byte}func NewSocks4AuthenticationResponse(result byte, port uint16, ip []byte) *Socks4AuthenticationResponse {	return &Socks4AuthenticationResponse{		result: result,		port:   port,		ip:     ip,	}}func (r *Socks4AuthenticationResponse) ToBytes(buffer []byte) []byte {	if buffer == nil {		buffer = make([]byte, 8)	}	buffer[1] = r.result	buffer[2] = byte(r.port >> 8)	buffer[3] = byte(r.port)	copy(buffer[4:], r.ip)	return buffer}
 |