Chore: add Type() method to proxy.Proxy

This commit is contained in:
xjasonlyu
2021-02-06 18:54:42 +08:00
parent 6375708e4a
commit a84eebe284
5 changed files with 30 additions and 0 deletions

View File

@@ -8,6 +8,8 @@ import (
"github.com/xjasonlyu/tun2socks/common/adapter" "github.com/xjasonlyu/tun2socks/common/adapter"
) )
var _ Proxy = (*Base)(nil)
type Base struct { type Base struct {
addr string addr string
} }
@@ -20,6 +22,10 @@ func (b *Base) Addr() string {
return b.addr return b.addr
} }
func (b *Base) Type() string {
return "base"
}
func (b *Base) DialContext(context.Context, *adapter.Metadata) (net.Conn, error) { func (b *Base) DialContext(context.Context, *adapter.Metadata) (net.Conn, error) {
return nil, errors.New("not supported") return nil, errors.New("not supported")
} }

View File

@@ -8,6 +8,8 @@ import (
"github.com/xjasonlyu/tun2socks/component/dialer" "github.com/xjasonlyu/tun2socks/component/dialer"
) )
var _ Proxy = (*Direct)(nil)
type Direct struct { type Direct struct {
*Base *Base
} }
@@ -16,6 +18,10 @@ func NewDirect() *Direct {
return &Direct{} return &Direct{}
} }
func (d *Direct) Type() string {
return "direct"
}
func (d *Direct) DialContext(ctx context.Context, metadata *adapter.Metadata) (net.Conn, error) { func (d *Direct) DialContext(ctx context.Context, metadata *adapter.Metadata) (net.Conn, error) {
c, err := dialer.DialContext(ctx, "tcp", metadata.DestinationAddress()) c, err := dialer.DialContext(ctx, "tcp", metadata.DestinationAddress())
if err != nil { if err != nil {

View File

@@ -22,6 +22,12 @@ type Dialer interface {
DialUDP(*adapter.Metadata) (net.PacketConn, error) DialUDP(*adapter.Metadata) (net.PacketConn, error)
} }
type Proxy interface {
Dialer
Addr() string
Type() string
}
// SetDialer sets default Dialer. // SetDialer sets default Dialer.
func SetDialer(d Dialer) { func SetDialer(d Dialer) {
_defaultDialer = d _defaultDialer = d

View File

@@ -14,6 +14,8 @@ import (
"github.com/Dreamacro/go-shadowsocks2/core" "github.com/Dreamacro/go-shadowsocks2/core"
) )
var _ Proxy = (*ShadowSocks)(nil)
type ShadowSocks struct { type ShadowSocks struct {
*Base *Base
@@ -37,6 +39,10 @@ func NewShadowSocks(addr, method, password, obfsMode, obfsHost string) (*ShadowS
}, nil }, nil
} }
func (ss *ShadowSocks) Type() string {
return "ss"
}
func (ss *ShadowSocks) DialContext(ctx context.Context, metadata *adapter.Metadata) (c net.Conn, err error) { func (ss *ShadowSocks) DialContext(ctx context.Context, metadata *adapter.Metadata) (c net.Conn, err error) {
c, err = dialer.DialContext(ctx, "tcp", ss.Addr()) c, err = dialer.DialContext(ctx, "tcp", ss.Addr())
if err != nil { if err != nil {

View File

@@ -12,6 +12,8 @@ import (
"github.com/xjasonlyu/tun2socks/component/socks5" "github.com/xjasonlyu/tun2socks/component/socks5"
) )
var _ Proxy = (*Socks5)(nil)
type Socks5 struct { type Socks5 struct {
*Base *Base
@@ -27,6 +29,10 @@ func NewSocks5(addr, user, pass string) (*Socks5, error) {
}, nil }, nil
} }
func (ss *Socks5) Type() string {
return "socks5"
}
func (ss *Socks5) DialContext(ctx context.Context, metadata *adapter.Metadata) (c net.Conn, err error) { func (ss *Socks5) DialContext(ctx context.Context, metadata *adapter.Metadata) (c net.Conn, err error) {
c, err = dialer.DialContext(ctx, "tcp", ss.Addr()) c, err = dialer.DialContext(ctx, "tcp", ss.Addr())
if err != nil { if err != nil {