fix all test

This commit is contained in:
mo 2020-08-06 16:29:38 +08:00
parent 10f96879ba
commit 9136d71943
8 changed files with 45 additions and 22 deletions

20
_example/client/main.go Normal file

@ -0,0 +1,20 @@
package main
import (
"time"
"github.com/thinkgos/go-socks5/ccsocks5"
)
func main() {
client := ccsocks5.NewClient(
"127.0.0.1:10800",
ccsocks5.WithKeepAlivePeriod(time.Second*30),
)
conn, err := client.Dial("tcp", "127.0.0.1:12345") // server you want to visitor
if err != nil {
panic(err)
}
conn.Write([]byte("hahaha"))
time.Sleep(time.Second)
}

@ -9,7 +9,9 @@ import (
func main() {
// Create a SOCKS5 server
server := socks5.NewServer(socks5.WithLogger(socks5.NewLogger(log.New(os.Stdout, "socks5: ", log.LstdFlags))))
server := socks5.NewServer(
socks5.WithLogger(socks5.NewLogger(log.New(os.Stdout, "socks5: ", log.LstdFlags))),
)
// Create SOCKS5 proxy on localhost port 8000
if err := server.ListenAndServe("tcp", ":10800"); err != nil {

@ -39,9 +39,8 @@ func main() {
go func() {
time.Sleep(time.Second * 1)
c, err := ccsocks5.NewClient("127.0.0.1:10808")
handleErr(err)
con, err := c.Dial("tcp", lAddr.String())
client := ccsocks5.NewClient("127.0.0.1:10808")
con, err := client.Dial("tcp", lAddr.String())
handleErr(err)
for {

@ -24,7 +24,7 @@ type Client struct {
// NewClient This is just create a client.
// you need to use Dial to create conn.
func NewClient(proxyAddr string, opts ...Option) (*Client, error) {
func NewClient(proxyAddr string, opts ...Option) *Client {
c := &Client{
proxyAddr: proxyAddr,
keepAlivePeriod: time.Second * 30,
@ -33,7 +33,7 @@ func NewClient(proxyAddr string, opts ...Option) (*Client, error) {
for _, opt := range opts {
opt(c)
}
return c, nil
return c
}
// Close closes the connection.

@ -24,12 +24,12 @@ type GPool interface {
type Server struct {
authMethods map[uint8]Authenticator
// AuthMethods can be provided to implement custom authentication
// By default, "auth-less" mode is enabled.
// By default, "no-auth" mode is enabled.
// For password-based auth use UserPassAuthenticator.
authCustomMethods []Authenticator
// If provided, username/password authentication is enabled,
// by appending a UserPassAuthenticator to AuthMethods. If not provided,
// and AUthMethods is nil, then "auth-less" mode is enabled.
// and authCustomMethods is nil, then "no-auth" mode is enabled.
credentials CredentialStore
// resolver can be provided to do custom name resolution.
// Defaults to DNSResolver if not provided.
@ -58,11 +58,11 @@ type Server struct {
userAssociateHandle func(ctx context.Context, writer io.Writer, request *Request) error
}
// NewServer creates a new Server and potentially returns an error
// NewServer creates a new Server
func NewServer(opts ...Option) *Server {
server := &Server{
srv := &Server{
authMethods: make(map[uint8]Authenticator),
authCustomMethods: []Authenticator{&NoAuthAuthenticator{}},
authCustomMethods: []Authenticator{},
bufferPool: bufferpool.NewPool(32 * 1024),
resolver: DNSResolver{},
rules: NewPermitAll(),
@ -73,19 +73,23 @@ func NewServer(opts ...Option) *Server {
}
for _, opt := range opts {
opt(server)
opt(srv)
}
// Ensure we have at least one authentication method enabled
if len(server.authCustomMethods) == 0 && server.credentials != nil {
server.authCustomMethods = []Authenticator{&UserPassAuthenticator{server.credentials}}
if (len(srv.authCustomMethods) == 0) && srv.credentials != nil {
srv.authCustomMethods = []Authenticator{&UserPassAuthenticator{srv.credentials}}
}
for _, v := range server.authCustomMethods {
server.authMethods[v.GetCode()] = v
if len(srv.authCustomMethods) == 0 {
srv.authCustomMethods = []Authenticator{&NoAuthAuthenticator{}}
}
return server
for _, v := range srv.authCustomMethods {
srv.authMethods[v.GetCode()] = v
}
return srv
}
// ListenAndServe is used to create a listener and serve on it

@ -258,7 +258,7 @@ func Test_SocksWithProxy(t *testing.T) {
func TestNoAuth_Server(t *testing.T) {
req := bytes.NewBuffer(nil)
rsp := new(bytes.Buffer)
s := NewServer()
s := NewServer(WithAuthMethods([]Authenticator{&NoAuthAuthenticator{}}))
ctx, err := s.authenticate(rsp, req, "", []byte{statute.MethodNoAuth})
require.NoError(t, err)

@ -50,11 +50,10 @@ func Test_Socks5_Connect(t *testing.T) {
time.Sleep(10 * time.Millisecond)
// Get a local conn
client, err := ccsocks5.NewClient("127.0.0.1:12389",
client := ccsocks5.NewClient("127.0.0.1:12389",
ccsocks5.WithAuth(&proxy.Auth{User: "user", Password: "pass"}),
ccsocks5.WithBufferPool(bufferpool.NewPool(32*1024)),
)
require.NoError(t, err)
conn, err := client.Dial("tcp", l.Addr().String())
require.NoError(t, err)
@ -105,11 +104,10 @@ func Test_socks5_Associate(t *testing.T) {
time.Sleep(10 * time.Millisecond)
// Get a local conn
client, err := ccsocks5.NewClient(
client := ccsocks5.NewClient(
"127.0.0.1:12385",
ccsocks5.WithAuth(&proxy.Auth{User: "user", Password: "pass"}),
)
require.NoError(t, err)
conn, err := client.Dial("udp", lAddr.String())
require.NoError(t, err)