mirror of
https://github.com/cloudflare/cloudflared.git
synced 2025-07-27 14:59:57 +00:00
AUTH-2394 added socks5 proxy
This commit is contained in:
69
socks/request_test.go
Normal file
69
socks/request_test.go
Normal file
@@ -0,0 +1,69 @@
|
||||
package socks
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"net"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func createRequestData(version, command uint8, ip net.IP, port uint16) []byte {
|
||||
// set the command
|
||||
b := []byte{version, command, 0}
|
||||
|
||||
// append the ip
|
||||
if len(ip) == net.IPv4len {
|
||||
b = append(b, 1)
|
||||
b = append(b, ip.To4()...)
|
||||
} else {
|
||||
b = append(b, 4)
|
||||
b = append(b, ip.To16()...)
|
||||
}
|
||||
|
||||
// append the port
|
||||
p := []byte{0, 0}
|
||||
binary.BigEndian.PutUint16(p, port)
|
||||
b = append(b, p...)
|
||||
|
||||
return b
|
||||
}
|
||||
|
||||
func createRequest(t *testing.T, version, command uint8, ipStr string, port uint16, shouldFail bool) *Request {
|
||||
ip := net.ParseIP(ipStr)
|
||||
data := createRequestData(version, command, ip, port)
|
||||
reader := bytes.NewReader(data)
|
||||
req, err := NewRequest(reader)
|
||||
if shouldFail {
|
||||
assert.Error(t, err)
|
||||
return nil
|
||||
}
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, req.Version == socks5Version, "version doesn't match expectation: %v", req.Version)
|
||||
assert.True(t, req.Command == command, "command doesn't match expectation: %v", req.Command)
|
||||
assert.True(t, req.DestAddr.Port == int(port), "port doesn't match expectation: %v", req.DestAddr.Port)
|
||||
assert.True(t, req.DestAddr.IP.String() == ipStr, "ip doesn't match expectation: %v", req.DestAddr.IP.String())
|
||||
|
||||
return req
|
||||
}
|
||||
|
||||
func TestValidConnectRequest(t *testing.T) {
|
||||
createRequest(t, socks5Version, connectCommand, "127.0.0.1", 1337, false)
|
||||
}
|
||||
|
||||
func TestValidBindRequest(t *testing.T) {
|
||||
createRequest(t, socks5Version, bindCommand, "2001:db8::68", 1337, false)
|
||||
}
|
||||
|
||||
func TestValidAssociateRequest(t *testing.T) {
|
||||
createRequest(t, socks5Version, associateCommand, "127.0.0.1", 1234, false)
|
||||
}
|
||||
|
||||
func TestInValidVersionRequest(t *testing.T) {
|
||||
createRequest(t, 4, connectCommand, "127.0.0.1", 1337, true)
|
||||
}
|
||||
|
||||
func TestInValidIPRequest(t *testing.T) {
|
||||
createRequest(t, 4, connectCommand, "127.0.01", 1337, true)
|
||||
}
|
Reference in New Issue
Block a user