generated from kedaya_haitao/template
fix 修复panic
This commit is contained in:
parent
bc08302d92
commit
e06cad6bc5
@ -1,17 +1,51 @@
|
|||||||
# 模糊抓取订阅链接
|
- type: clash
|
||||||
# clash格式订阅链接
|
options:
|
||||||
#- type: clash
|
url: https://raw.githubusercontent.com/aiboboxx/clashfree/refs/heads/main/clash.yml
|
||||||
# options:
|
- type: clash
|
||||||
# url: https://raw.githubusercontent.com/aiboboxx/clashfree/refs/heads/main/clash.yml
|
options:
|
||||||
|
url: https://clashgithub.com/wp-content/uploads/rss/20060102.yml
|
||||||
#- type: clash
|
date-format: true
|
||||||
# options:
|
- type: clash
|
||||||
# url: https://ndQWjqRo.doggygo.top:8443/api/v1/client/3341e18dd5fe807b2777f60d24e77605?flag=clashmeta
|
options:
|
||||||
# date-format: false
|
url: https://www.freeclashnode.com/uploads/2006/01/0-20060102.yaml
|
||||||
|
date-format: true
|
||||||
|
- type: clash
|
||||||
|
options:
|
||||||
|
url: https://www.freeclashnode.com/uploads/2006/01/1-20060102.yaml
|
||||||
|
date-format: true
|
||||||
|
- type: clash
|
||||||
|
options:
|
||||||
|
url: https://oneclash.githubrowcontent.com/2006/01/20060102.yaml
|
||||||
|
date-format: true
|
||||||
|
- type: clash
|
||||||
|
options:
|
||||||
|
url: https://raw.githubusercontent.com/ermaozi/get_subscribe/main/subscribe/clash.yml
|
||||||
|
- type: clash
|
||||||
|
options:
|
||||||
|
url: https://jif421.net/link/bLZIXBkdkIVpcFwT?clash=1
|
||||||
|
- type: clash
|
||||||
|
options:
|
||||||
|
url: http://wzm.api-node.shop/node/20060102-clash.yaml
|
||||||
|
date-format: true
|
||||||
|
- type: clash
|
||||||
|
options:
|
||||||
|
url: https://aPspT5j.doggygo.top:8443/api/v1/client/3341e18dd5fe807b2777f60d24e77605?flag=clashmeta
|
||||||
|
- type: subscribe
|
||||||
|
options:
|
||||||
|
url: https://proxy.v2gh.com/https://raw.githubusercontent.com/Pawdroid/Free-servers/main/sub
|
||||||
|
- type: subscribe
|
||||||
|
options:
|
||||||
|
url: https://s1.byte16.com/api/v1/client/subscribe?token=5a0e518c0fbfeb5ee5884215e076688f
|
||||||
- type: subscribe
|
- type: subscribe
|
||||||
options:
|
options:
|
||||||
url: https://sub.cloudog.us.kg/api/v1/client/subscribe?token=aba7727a7e58c6d1d47ae5fb7d7e1d23&types=vless
|
url: https://sub.cloudog.us.kg/api/v1/client/subscribe?token=aba7727a7e58c6d1d47ae5fb7d7e1d23&types=vless
|
||||||
- type: subscribe
|
- type: subscribe
|
||||||
options:
|
options:
|
||||||
url: https://sub.kaolacloud.site/api/v1/client/subscribe?token=fa675c35ef99a4ec1211534af65ae1b3
|
url: https://sub.kaolacloud.site/api/v1/client/subscribe?token=fa675c35ef99a4ec1211534af65ae1b3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ import (
|
|||||||
clash_config "github.com/metacubex/mihomo/config"
|
clash_config "github.com/metacubex/mihomo/config"
|
||||||
"github.com/nitezs/sub2clash/api/handler"
|
"github.com/nitezs/sub2clash/api/handler"
|
||||||
"github.com/nitezs/sub2clash/config"
|
"github.com/nitezs/sub2clash/config"
|
||||||
|
"github.com/nitezs/sub2clash/logger"
|
||||||
"github.com/nitezs/sub2clash/model"
|
"github.com/nitezs/sub2clash/model"
|
||||||
"github.com/nitezs/sub2clash/validator"
|
"github.com/nitezs/sub2clash/validator"
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
@ -21,6 +22,7 @@ import (
|
|||||||
func init() {
|
func init() {
|
||||||
Register("subscribe", NewSubscribeGetter)
|
Register("subscribe", NewSubscribeGetter)
|
||||||
_ = config.LoadConfig()
|
_ = config.LoadConfig()
|
||||||
|
logger.InitLogger("Warn")
|
||||||
_ = os.MkdirAll("./subs", 0755)
|
_ = os.MkdirAll("./subs", 0755)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,26 +2,37 @@ package proxy
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.timerzz.com/kedaya_haitao/proxy-detector/pkg/getter"
|
"gitea.timerzz.com/kedaya_haitao/proxy-detector/pkg/getter"
|
||||||
healthcheck "gitea.timerzz.com/kedaya_haitao/proxy-detector/pkg/health-check"
|
healthcheck "gitea.timerzz.com/kedaya_haitao/proxy-detector/pkg/health-check"
|
||||||
"gitea.timerzz.com/kedaya_haitao/proxy-detector/pkg/proxy/structs"
|
"gitea.timerzz.com/kedaya_haitao/proxy-detector/pkg/proxy/structs"
|
||||||
|
"gitea.timerzz.com/kedaya_haitao/proxy-detector/pkg/worker"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
func CrawlProxies(ctx context.Context, getters []getter.Getter) {
|
func CrawlProxies(ctx context.Context, getters []getter.Getter) {
|
||||||
var proxies []structs.Proxy
|
var proxies structs.Proxies
|
||||||
log.Infof("共%d个抓取源", len(getters))
|
log.Infof("共%d个抓取源", len(getters))
|
||||||
for _, getter := range getters {
|
var wg sync.WaitGroup
|
||||||
if ps := getter.Get(); len(ps) > 0 {
|
for _, gtr := range getters {
|
||||||
proxies = append(proxies, ps...)
|
wg.Add(1)
|
||||||
|
err := worker.Pool.Submit(func() {
|
||||||
|
defer wg.Done()
|
||||||
|
if ps := gtr.Get(); len(ps) > 0 {
|
||||||
|
proxies.Add(ps)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Errorln("添加并发任务失败: ", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.Infof("Crawled %d proxies", len(proxies))
|
wg.Wait()
|
||||||
proxies = healthcheck.CleanBadProxies(ctx, proxies)
|
log.Infof("Crawled %d proxies", proxies.Len())
|
||||||
log.Infof("Health checked %d proxies", len(proxies))
|
proxyList := healthcheck.CleanBadProxies(ctx, proxies.Get())
|
||||||
structs.ProxiesList.Add(proxies)
|
log.Infof("Health checked %d proxies", proxyList)
|
||||||
|
structs.ProxiesList.Add(proxyList)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,6 +88,13 @@ func (p *Proxies) Get() []Proxy {
|
|||||||
return p.proxies
|
return p.proxies
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取长度
|
||||||
|
func (p *Proxies) Len() int {
|
||||||
|
p.m.RLock()
|
||||||
|
defer p.m.RUnlock()
|
||||||
|
return len(p.proxies)
|
||||||
|
}
|
||||||
|
|
||||||
// 获取mapping列表
|
// 获取mapping列表
|
||||||
func (p *Proxies) Mapping() []map[string]any {
|
func (p *Proxies) Mapping() []map[string]any {
|
||||||
p.m.RLock()
|
p.m.RLock()
|
||||||
|
Loading…
Reference in New Issue
Block a user