filter nil proxy when append to slice
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user