mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2025-10-06 09:16:58 +08:00
Chore: add Type() method to proxy.Proxy
This commit is contained in:
@@ -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")
|
||||||
}
|
}
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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 {
|
||||||
|
Reference in New Issue
Block a user