From 82fff4976aacd432fa27600abfff57838dfdddbc Mon Sep 17 00:00:00 2001 From: ginuerzh Date: Tue, 29 Nov 2022 09:45:19 +0800 Subject: [PATCH] fix direct dialer --- connector/direct/connector.go | 1 + dialer/direct/conn.go | 41 +++++++++++++++++++++++++++++++++++ dialer/direct/dialer.go | 5 +++-- go.mod | 2 +- go.sum | 4 ++-- 5 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 dialer/direct/conn.go diff --git a/connector/direct/connector.go b/connector/direct/connector.go index b1e130f..4dd0b10 100644 --- a/connector/direct/connector.go +++ b/connector/direct/connector.go @@ -11,6 +11,7 @@ import ( func init() { registry.ConnectorRegistry().Register("direct", NewConnector) + registry.ConnectorRegistry().Register("virtual", NewConnector) } type directConnector struct { diff --git a/dialer/direct/conn.go b/dialer/direct/conn.go new file mode 100644 index 0000000..0889977 --- /dev/null +++ b/dialer/direct/conn.go @@ -0,0 +1,41 @@ +package direct + +import ( + "errors" + "net" + "time" +) + +type conn struct{} + +func (c *conn) Close() error { + return nil +} + +func (c *conn) Read(b []byte) (n int, err error) { + return 0, &net.OpError{Op: "read", Net: "nop", Source: nil, Addr: nil, Err: errors.New("read not supported")} +} + +func (c *conn) Write(b []byte) (n int, err error) { + return 0, &net.OpError{Op: "write", Net: "nop", Source: nil, Addr: nil, Err: errors.New("write not supported")} +} + +func (c *conn) LocalAddr() net.Addr { + return &net.TCPAddr{} +} + +func (c *conn) RemoteAddr() net.Addr { + return &net.TCPAddr{} +} + +func (c *conn) SetDeadline(t time.Time) error { + return &net.OpError{Op: "set", Net: "nop", Source: nil, Addr: nil, Err: errors.New("deadline not supported")} +} + +func (c *conn) SetReadDeadline(t time.Time) error { + return &net.OpError{Op: "set", Net: "nop", Source: nil, Addr: nil, Err: errors.New("deadline not supported")} +} + +func (c *conn) SetWriteDeadline(t time.Time) error { + return &net.OpError{Op: "set", Net: "nop", Source: nil, Addr: nil, Err: errors.New("deadline not supported")} +} diff --git a/dialer/direct/dialer.go b/dialer/direct/dialer.go index 1364586..0b4e726 100644 --- a/dialer/direct/dialer.go +++ b/dialer/direct/dialer.go @@ -1,4 +1,4 @@ -package tcp +package direct import ( "context" @@ -12,6 +12,7 @@ import ( func init() { registry.DialerRegistry().Register("direct", NewDialer) + registry.DialerRegistry().Register("virtual", NewDialer) } type directDialer struct { @@ -34,5 +35,5 @@ func (d *directDialer) Init(md md.Metadata) (err error) { } func (d *directDialer) Dial(ctx context.Context, addr string, opts ...dialer.DialOption) (net.Conn, error) { - return nil, nil + return &conn{}, nil } diff --git a/go.mod b/go.mod index 250de86..64d8b37 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d github.com/gin-contrib/cors v1.3.1 github.com/gin-gonic/gin v1.7.7 - github.com/go-gost/core v0.0.0-20221111142129-c2a1dd2a89cb + github.com/go-gost/core v0.0.0-20221129013900-0f0679a3ecbc github.com/go-gost/gosocks4 v0.0.1 github.com/go-gost/gosocks5 v0.3.1-0.20211109033403-d894d75b7f09 github.com/go-gost/relay v0.1.1-0.20211123134818-8ef7fd81ffd7 diff --git a/go.sum b/go.sum index 13e1336..e019e65 100644 --- a/go.sum +++ b/go.sum @@ -96,8 +96,8 @@ github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gost/core v0.0.0-20221111142129-c2a1dd2a89cb h1:BkuYeTJYfN3nGHtnljjRBuBBXg2hTRBN9EmszZalyzg= -github.com/go-gost/core v0.0.0-20221111142129-c2a1dd2a89cb/go.mod h1:bHVbCS9da6XtKNYMkMUVcck5UqDDUkyC37erVfs4GXQ= +github.com/go-gost/core v0.0.0-20221129013900-0f0679a3ecbc h1:LkielnJLsiOAnmgU88bW+73jZ07T4tyNb4jx94upm9g= +github.com/go-gost/core v0.0.0-20221129013900-0f0679a3ecbc/go.mod h1:bHVbCS9da6XtKNYMkMUVcck5UqDDUkyC37erVfs4GXQ= github.com/go-gost/gosocks4 v0.0.1 h1:+k1sec8HlELuQV7rWftIkmy8UijzUt2I6t+iMPlGB2s= github.com/go-gost/gosocks4 v0.0.1/go.mod h1:3B6L47HbU/qugDg4JnoFPHgJXE43Inz8Bah1QaN9qCc= github.com/go-gost/gosocks5 v0.3.1-0.20211109033403-d894d75b7f09 h1:A95M6UWcfZgOuJkQ7QLfG0Hs5peWIUSysCDNz4pfe04=