github.com/ipfans/trojan-go@v0.11.0/tunnel/simplesocks/simplesocks_test.go (about) 1 package simplesocks 2 3 import ( 4 "context" 5 "fmt" 6 "testing" 7 8 "github.com/ipfans/trojan-go/common" 9 "github.com/ipfans/trojan-go/config" 10 "github.com/ipfans/trojan-go/test/util" 11 "github.com/ipfans/trojan-go/tunnel" 12 "github.com/ipfans/trojan-go/tunnel/freedom" 13 "github.com/ipfans/trojan-go/tunnel/transport" 14 ) 15 16 func TestSimpleSocks(t *testing.T) { 17 port := common.PickPort("tcp", "127.0.0.1") 18 transportConfig := &transport.Config{ 19 LocalHost: "127.0.0.1", 20 LocalPort: port, 21 RemoteHost: "127.0.0.1", 22 RemotePort: port, 23 } 24 ctx := config.WithConfig(context.Background(), transport.Name, transportConfig) 25 ctx = config.WithConfig(ctx, freedom.Name, &freedom.Config{}) 26 tcpClient, err := transport.NewClient(ctx, nil) 27 common.Must(err) 28 tcpServer, err := transport.NewServer(ctx, nil) 29 common.Must(err) 30 31 c, err := NewClient(ctx, tcpClient) 32 common.Must(err) 33 s, err := NewServer(ctx, tcpServer) 34 common.Must(err) 35 36 conn1, err := c.DialConn(&tunnel.Address{ 37 DomainName: "www.baidu.com", 38 AddressType: tunnel.DomainName, 39 Port: 443, 40 }, nil) 41 common.Must(err) 42 defer conn1.Close() 43 conn1.Write(util.GeneratePayload(1024)) 44 conn2, err := s.AcceptConn(nil) 45 common.Must(err) 46 defer conn2.Close() 47 buf := [1024]byte{} 48 common.Must2(conn2.Read(buf[:])) 49 if !util.CheckConn(conn1, conn2) { 50 t.Fail() 51 } 52 53 packet1, err := c.DialPacket(nil) 54 common.Must(err) 55 packet1.WriteWithMetadata([]byte("12345678"), &tunnel.Metadata{ 56 Address: &tunnel.Address{ 57 DomainName: "test.com", 58 AddressType: tunnel.DomainName, 59 Port: 443, 60 }, 61 }) 62 defer packet1.Close() 63 packet2, err := s.AcceptPacket(nil) 64 common.Must(err) 65 defer packet2.Close() 66 _, m, err := packet2.ReadWithMetadata(buf[:]) 67 common.Must(err) 68 fmt.Println(m) 69 70 if !util.CheckPacketOverConn(packet1, packet2) { 71 t.Fail() 72 } 73 s.Close() 74 c.Close() 75 }