Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1fee5e87ff | ||
|
|
2ba481e388 | ||
|
|
daea47552d | ||
|
|
59ea871190 |
4
app/cache/cache.go
vendored
4
app/cache/cache.go
vendored
@@ -13,10 +13,10 @@ var c = cache.New(cache.NoExpiration, 10*time.Minute)
|
||||
func GetProxies(key string) proxy.ProxyList {
|
||||
result, found := c.Get(key)
|
||||
if found {
|
||||
log.Println(len(result.(proxy.ProxyList)))
|
||||
log.Println("found cache for:", key, "length:", len(result.(proxy.ProxyList)))
|
||||
return result.(proxy.ProxyList)
|
||||
}
|
||||
log.Println("Cache not found")
|
||||
log.Println("cache not found:", key)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -39,17 +39,13 @@ func CrawlGo() {
|
||||
// 节点去重
|
||||
proxies = proxies.Deduplication()
|
||||
log.Println("CrawlGo node count:", len(proxies))
|
||||
proxies = provider.Clash{Proxies: proxies}.CleanProxies()
|
||||
proxies.NameAddCounrty().Sort().NameAddIndex()
|
||||
cache.SetProxies("allproxies", proxies)
|
||||
|
||||
// 可用性检测
|
||||
proxiesUseful := proxy.CleanProxies(provider.Clash{Proxies: proxies}.CleanProxies())
|
||||
proxies = make(proxy.ProxyList, len(proxiesUseful))
|
||||
copy(proxies, proxiesUseful)
|
||||
|
||||
proxies = proxy.CleanBadProxies(proxies)
|
||||
log.Println("CrawlGo clash useable node count:", len(proxies))
|
||||
|
||||
// 排序和重命名
|
||||
proxies.NameAddCounrty().Sort().NameAddIndex()
|
||||
cache.SetProxies("proxies", proxies)
|
||||
|
||||
|
||||
@@ -23,6 +23,11 @@ func (b *Base) BaseInfo() *Base {
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *Base) Clone() Base {
|
||||
c := *b
|
||||
return c
|
||||
}
|
||||
|
||||
type Proxy interface {
|
||||
String() string
|
||||
ToClash() string
|
||||
@@ -31,4 +36,5 @@ type Proxy interface {
|
||||
SetName(name string)
|
||||
TypeName() string
|
||||
BaseInfo() *Base
|
||||
Clone() Proxy
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ func testDelay(p Proxy) (delay uint16, err error) {
|
||||
return delay, err
|
||||
}
|
||||
|
||||
func CleanProxies(proxies []Proxy) (cproxies []Proxy) {
|
||||
func CleanBadProxies(proxies []Proxy) (cproxies []Proxy) {
|
||||
c := make(chan checkResult, 40)
|
||||
defer close(c)
|
||||
for _, p := range proxies {
|
||||
@@ -52,7 +52,7 @@ func CleanProxies(proxies []Proxy) (cproxies []Proxy) {
|
||||
cproxies = make([]Proxy, 0)
|
||||
for _, p := range proxies {
|
||||
if _, ok := okMap[p.Identifier()]; ok {
|
||||
cproxies = append(cproxies, p)
|
||||
cproxies = append(cproxies, p.Clone())
|
||||
}
|
||||
}
|
||||
return
|
||||
|
||||
@@ -71,3 +71,13 @@ func Deduplication(src ProxyList) ProxyList {
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func (ps ProxyList) Clone() ProxyList {
|
||||
result := make(ProxyList, 0, len(ps))
|
||||
for _, pp := range ps {
|
||||
if pp != nil {
|
||||
result = append(result, pp.Clone())
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -61,6 +61,10 @@ func (ss Shadowsocks) ToSurge() string {
|
||||
}
|
||||
}
|
||||
|
||||
func (ss Shadowsocks) Clone() Proxy {
|
||||
return &ss
|
||||
}
|
||||
|
||||
func ParseSSLink(link string) (*Shadowsocks, error) {
|
||||
if !strings.HasPrefix(link, "ss://") {
|
||||
return nil, ErrorNotSSRLink
|
||||
|
||||
@@ -57,6 +57,10 @@ func (ssr ShadowsocksR) ToSurge() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (ssr ShadowsocksR) Clone() Proxy {
|
||||
return &ssr
|
||||
}
|
||||
|
||||
func ParseSSRLink(link string) (*ShadowsocksR, error) {
|
||||
if !strings.HasPrefix(link, "ssr") {
|
||||
return nil, ErrorNotSSRLink
|
||||
|
||||
@@ -82,6 +82,10 @@ func (v Vmess) ToSurge() string {
|
||||
}
|
||||
}
|
||||
|
||||
func (v Vmess) Clone() Proxy {
|
||||
return &v
|
||||
}
|
||||
|
||||
type vmessLinkJson struct {
|
||||
Add string `json:"add"`
|
||||
V string `json:"v"`
|
||||
|
||||
Reference in New Issue
Block a user