From 12da2a73d6ededa3f41c1160cd68a5c2adc3bf85 Mon Sep 17 00:00:00 2001 From: zu1k Date: Mon, 17 Aug 2020 09:17:39 +0800 Subject: [PATCH] remove duplicate code --- provider/clash.go | 4 ++-- proxy/base.go | 17 ++++++++++++++++- proxy/check.go | 2 +- proxy/shadowsocks.go | 12 ------------ proxy/shadowsocksr.go | 12 ------------ proxy/vmess.go | 12 ------------ 6 files changed, 19 insertions(+), 40 deletions(-) diff --git a/provider/clash.go b/provider/clash.go index cb9e120..0c5b87d 100644 --- a/provider/clash.go +++ b/provider/clash.go @@ -36,7 +36,7 @@ func (c Clash) Provide() string { for _, p := range c.Proxies { if checkClashSupport(p) { for _, t := range types { - if p.Type() == t { + if p.TypeName() == t { resultBuilder.WriteString(p.ToClash() + "\n") } } @@ -48,7 +48,7 @@ func (c Clash) Provide() string { } func checkClashSupport(p proxy.Proxy) bool { - switch p.Type() { + switch p.TypeName() { case "ssr": ssr := p.(*proxy.ShadowsocksR) if checkInList(ssrCipherList, ssr.Cipher) && checkInList(ssrProtocolList, ssr.Protocol) && checkInList(ssrObfsList, ssr.Obfs) { diff --git a/proxy/base.go b/proxy/base.go index ab34886..b5c85fd 100644 --- a/proxy/base.go +++ b/proxy/base.go @@ -8,13 +8,28 @@ type Base struct { UDP bool `yaml:"udp,omitempty" json:"udp,omitempty"` } +func (b *Base) TypeName() string { + if b.Type == "" { + return "unknown" + } + return b.Type +} + +func (b *Base) SetName(name string) { + b.Name = name +} + +func (b *Base) BaseInfo() *Base { + return b +} + type Proxy interface { String() string ToClash() string ToSurge() string Identifier() string SetName(name string) - Type() string + TypeName() string BaseInfo() *Base } diff --git a/proxy/check.go b/proxy/check.go index 92b355f..06e080a 100644 --- a/proxy/check.go +++ b/proxy/check.go @@ -19,7 +19,7 @@ func testDelay(p Proxy) (delay uint16, err error) { } pmap["port"] = int(pmap["port"].(float64)) - if p.Type() == "vmess" { + if p.TypeName() == "vmess" { pmap["alterId"] = int(pmap["alterId"].(float64)) } diff --git a/proxy/shadowsocks.go b/proxy/shadowsocks.go index 9ec7229..12a593a 100644 --- a/proxy/shadowsocks.go +++ b/proxy/shadowsocks.go @@ -61,18 +61,6 @@ func (ss Shadowsocks) ToSurge() string { } } -func (ss *Shadowsocks) SetName(name string) { - ss.Name = name -} - -func (ss *Shadowsocks) Type() string { - return "ss" -} - -func (ss *Shadowsocks) BaseInfo() *Base { - return &ss.Base -} - func ParseSSLink(link string) (*Shadowsocks, error) { if !strings.HasPrefix(link, "ss://") { return nil, ErrorNotSSRLink diff --git a/proxy/shadowsocksr.go b/proxy/shadowsocksr.go index aaa2769..b8e5cb3 100644 --- a/proxy/shadowsocksr.go +++ b/proxy/shadowsocksr.go @@ -57,18 +57,6 @@ func (ssr ShadowsocksR) ToSurge() string { return "" } -func (ssr *ShadowsocksR) SetName(name string) { - ssr.Name = name -} - -func (ssr *ShadowsocksR) Type() string { - return "ssr" -} - -func (ssr *ShadowsocksR) BaseInfo() *Base { - return &ssr.Base -} - func ParseSSRLink(link string) (*ShadowsocksR, error) { if !strings.HasPrefix(link, "ssr") { return nil, ErrorNotSSRLink diff --git a/proxy/vmess.go b/proxy/vmess.go index 05ad132..5d5356a 100644 --- a/proxy/vmess.go +++ b/proxy/vmess.go @@ -82,18 +82,6 @@ func (v Vmess) ToSurge() string { } } -func (v *Vmess) SetName(name string) { - v.Name = name -} - -func (v *Vmess) Type() string { - return "vmess" -} - -func (v *Vmess) BaseInfo() *Base { - return &v.Base -} - type vmessLinkJson struct { Add string `json:"add"` V string `json:"v"`