From ee003158942fea17571bce3bb47f9cbad0c8a649 Mon Sep 17 00:00:00 2001 From: xjasonlyu Date: Sun, 7 Feb 2021 10:38:07 +0800 Subject: [PATCH] Chore: rename proxy Type() to Proto() --- engine/engine.go | 2 +- engine/parse.go | 9 ++++----- proxy/base.go | 4 ++-- proxy/direct.go | 4 ++-- proxy/proto.go | 24 ++++++++++++++++++++++++ proxy/proxy.go | 2 +- proxy/shadowsocks.go | 4 ++-- proxy/socks5.go | 4 ++-- 8 files changed, 38 insertions(+), 15 deletions(-) create mode 100644 proxy/proto.go diff --git a/engine/engine.go b/engine/engine.go index f988937..cc58933 100755 --- a/engine/engine.go +++ b/engine/engine.go @@ -121,7 +121,7 @@ func (e *Engine) setStack() error { log.Infof( "[STACK] %s://%s <-> %s://%s", e.device.Type(), e.device.Name(), - e.proxy.Type(), e.proxy.Addr(), + e.proxy.Proto(), e.proxy.Addr(), ) return nil } diff --git a/engine/parse.go b/engine/parse.go index c7f4291..f83649a 100644 --- a/engine/parse.go +++ b/engine/parse.go @@ -33,9 +33,8 @@ func parseDevice(s string, mtu uint32) (device.Device, error) { } func parseProxy(s string) (proxy.Proxy, error) { - const defaultProto = "socks5" if !strings.Contains(s, "://") { - s = defaultProto + "://" + s + s = proxy.Socks5Proto.String() + "://" + s /* default protocol */ } u, err := url.Parse(s) @@ -46,11 +45,11 @@ func parseProxy(s string) (proxy.Proxy, error) { proto := strings.ToLower(u.Scheme) switch proto { - case "direct": + case proxy.DirectProto.String(): return proxy.NewDirect(), nil - case "socks5": + case proxy.Socks5Proto.String(): return proxy.NewSocks5(parseSocks(u)) - case "ss": + case proxy.ShadowsocksProto.String(): return proxy.NewShadowsocks(parseShadowsocks(u)) default: return nil, fmt.Errorf("unsupported protocol: %s", proto) diff --git a/proxy/base.go b/proxy/base.go index aa70663..ca5cb90 100755 --- a/proxy/base.go +++ b/proxy/base.go @@ -22,8 +22,8 @@ func (b *Base) Addr() string { return b.addr } -func (b *Base) Type() string { - return "base" +func (b *Base) Proto() string { + return "" } func (b *Base) DialContext(context.Context, *adapter.Metadata) (net.Conn, error) { diff --git a/proxy/direct.go b/proxy/direct.go index 01cb1b6..aa577de 100755 --- a/proxy/direct.go +++ b/proxy/direct.go @@ -20,8 +20,8 @@ func NewDirect() *Direct { } } -func (d *Direct) Type() string { - return "direct" +func (d *Direct) Proto() string { + return DirectProto.String() } func (d *Direct) DialContext(ctx context.Context, metadata *adapter.Metadata) (net.Conn, error) { diff --git a/proxy/proto.go b/proxy/proto.go new file mode 100644 index 0000000..64c859b --- /dev/null +++ b/proxy/proto.go @@ -0,0 +1,24 @@ +package proxy + +import "fmt" + +const ( + DirectProto Proto = iota + ShadowsocksProto + Socks5Proto +) + +type Proto uint8 + +func (proto Proto) String() string { + switch proto { + case DirectProto: + return "direct" + case ShadowsocksProto: + return "ss" + case Socks5Proto: + return "socks5" + default: + return fmt.Sprintf("proto(%d)", proto) + } +} diff --git a/proxy/proxy.go b/proxy/proxy.go index 06617c4..d9dadf5 100755 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -25,7 +25,7 @@ type Dialer interface { type Proxy interface { Dialer Addr() string - Type() string + Proto() string } // SetDialer sets default Dialer. diff --git a/proxy/shadowsocks.go b/proxy/shadowsocks.go index 3b374dc..cef2bb2 100755 --- a/proxy/shadowsocks.go +++ b/proxy/shadowsocks.go @@ -39,8 +39,8 @@ func NewShadowsocks(addr, method, password, obfsMode, obfsHost string) (*Shadows }, nil } -func (ss *Shadowsocks) Type() string { - return "ss" +func (ss *Shadowsocks) Proto() string { + return ShadowsocksProto.String() } func (ss *Shadowsocks) DialContext(ctx context.Context, metadata *adapter.Metadata) (c net.Conn, err error) { diff --git a/proxy/socks5.go b/proxy/socks5.go index 0c1a353..2792b41 100755 --- a/proxy/socks5.go +++ b/proxy/socks5.go @@ -29,8 +29,8 @@ func NewSocks5(addr, user, pass string) (*Socks5, error) { }, nil } -func (ss *Socks5) Type() string { - return "socks5" +func (ss *Socks5) Proto() string { + return Socks5Proto.String() } func (ss *Socks5) DialContext(ctx context.Context, metadata *adapter.Metadata) (c net.Conn, err error) {