filter nil proxy when append to slice

This commit is contained in:
zu1k
2020-09-07 13:04:04 +08:00
parent f2d9137488
commit c592df34ab
3 changed files with 19 additions and 15 deletions

View File

@@ -69,7 +69,10 @@ func GetAllProxies() (proxies proxy.ProxyList) {
for _, proxyDB := range proxiesDB {
if proxiesDB != nil {
proxies = append(proxies, proxy.ParseProxyFromLink(proxyDB.Link))
p, err := proxy.ParseProxyFromLink(proxyDB.Link)
if err == nil && p != nil {
proxies = append(proxies, p)
}
}
}
return

View File

@@ -32,7 +32,10 @@ func NewGetter(sourceType string, options tool.Options) (getter Getter, err erro
func StringArray2ProxyArray(origin []string) proxy.ProxyList {
results := make(proxy.ProxyList, 0)
for _, link := range origin {
results = append(results, proxy.ParseProxyFromLink(link))
p, err := proxy.ParseProxyFromLink(link)
if err == nil && p != nil {
results = append(results, p)
}
}
return results
}

View File

@@ -61,29 +61,27 @@ type Proxy interface {
SetCountry(country string)
}
func ParseProxyFromLink(link string) Proxy {
var err error
var data Proxy
func ParseProxyFromLink(link string) (p Proxy, err error) {
if strings.HasPrefix(link, "ssr://") {
data, err = ParseSSRLink(link)
p, err = ParseSSRLink(link)
} else if strings.HasPrefix(link, "vmess://") {
data, err = ParseVmessLink(link)
p, err = ParseVmessLink(link)
} else if strings.HasPrefix(link, "ss://") {
data, err = ParseSSLink(link)
p, err = ParseSSLink(link)
} else if strings.HasPrefix(link, "trojan://") {
data, err = ParseTrojanLink(link)
p, err = ParseTrojanLink(link)
}
if err != nil {
return nil
return
}
ip, country, err := geoIp.Find(data.BaseInfo().Server)
ip, country, err := geoIp.Find(p.BaseInfo().Server)
if err != nil {
country = "🏁 ZZ"
}
data.SetCountry(country)
p.SetCountry(country)
// trojan依赖域名
if data.TypeName() != "trojan" {
data.SetIP(ip)
if p.TypeName() != "trojan" {
p.SetIP(ip)
}
return data
return
}