1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-07-08 22:34:21 -04:00
v2fly/testing/scenarios/socks5_helper.go

36 lines
851 B
Go
Raw Normal View History

2015-11-06 07:08:20 -05:00
package scenarios
import (
v2net "github.com/v2ray/v2ray-core/common/net"
)
const (
socks5Version = byte(0x05)
)
func socks5AuthMethodRequest(methods ...byte) []byte {
request := []byte{socks5Version, byte(len(methods))}
request = append(request, methods...)
return request
}
func socks5Request(command byte, address v2net.Address) []byte {
request := []byte{socks5Version, command, 0}
switch {
case address.IsIPv4():
request = append(request, byte(0x01))
request = append(request, address.IP()...)
case address.IsIPv6():
request = append(request, byte(0x04))
request = append(request, address.IP()...)
case address.IsDomain():
request = append(request, byte(0x03), byte(len(address.Domain())))
request = append(request, []byte(address.Domain())...)
}
request = append(request, address.PortBytes()...)
return request
}