| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package socks_test
- import (
- "bytes"
- "testing"
- "v2ray.com/core/common/buf"
- "v2ray.com/core/common/net"
- _ "v2ray.com/core/common/net/testing"
- "v2ray.com/core/common/protocol"
- . "v2ray.com/core/proxy/socks"
- . "v2ray.com/ext/assert"
- )
- func TestUDPEncoding(t *testing.T) {
- assert := With(t)
- b := buf.New()
- request := &protocol.RequestHeader{
- Address: net.IPAddress([]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6}),
- Port: 1024,
- }
- writer := buf.NewSequentialWriter(NewUDPWriter(request, b))
- content := []byte{'a'}
- payload := buf.New()
- payload.Append(content)
- assert(writer.WriteMultiBuffer(buf.NewMultiBufferValue(payload)), IsNil)
- reader := NewUDPReader(b)
- decodedPayload, err := reader.ReadMultiBuffer()
- assert(err, IsNil)
- assert(decodedPayload[0].Bytes(), Equals, content)
- }
- func TestReadAddress(t *testing.T) {
- assert := With(t)
- data := []struct {
- AddrType byte
- Input []byte
- Address net.Address
- Port net.Port
- Error bool
- }{
- {
- AddrType: 0,
- Input: []byte{0, 0, 0, 0},
- Error: true,
- },
- {
- AddrType: 1,
- Input: []byte{0, 0, 0, 0, 0, 53},
- Address: net.IPAddress([]byte{0, 0, 0, 0}),
- Port: net.Port(53),
- },
- {
- AddrType: 4,
- Input: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 0, 80},
- Address: net.IPAddress([]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6}),
- Port: net.Port(80),
- },
- {
- AddrType: 3,
- Input: []byte{9, 118, 50, 114, 97, 121, 46, 99, 111, 109, 0, 80},
- Address: net.DomainAddress("v2ray.com"),
- Port: net.Port(80),
- },
- {
- AddrType: 3,
- Input: []byte{9, 118, 50, 114, 97, 121, 46, 99, 111, 109, 0},
- Error: true,
- },
- }
- for _, tc := range data {
- b := buf.New()
- addr, port, err := ReadAddress(b, tc.AddrType, bytes.NewBuffer(tc.Input))
- b.Release()
- if tc.Error {
- assert(err, IsNotNil)
- } else {
- assert(addr, Equals, tc.Address)
- assert(port, Equals, tc.Port)
- }
- }
- }
|