修复CMIN2识别的问题

This commit is contained in:
spiritlhl 2024-05-21 16:15:44 +00:00
parent 36d4abf98b
commit 7bc4772536
3 changed files with 10 additions and 45 deletions

View File

@ -2,9 +2,10 @@ package backtrace
import (
"fmt"
. "github.com/oneclickvirt/backtrace/defaultset"
"net"
"strings"
. "github.com/oneclickvirt/backtrace/defaultset"
)
type Result struct {
@ -53,7 +54,7 @@ func removeDuplicates(elements []string) []string {
return result // 返回去重后的结果切片
}
func trace(ch chan Result, i int, cmin2 []string) {
func trace(ch chan Result, i int) {
hops, err := Trace(net.ParseIP(ips[i]))
if err != nil {
s := fmt.Sprintf("%v %-15s %v", names[i], ips[i], err)
@ -63,7 +64,7 @@ func trace(ch chan Result, i int, cmin2 []string) {
var asns []string
for _, h := range hops {
for _, n := range h.Nodes {
asn := ipAsn(n.IP.String(), cmin2)
asn := ipAsn(n.IP.String())
if asn != "" {
asns = append(asns, asn)
}
@ -132,7 +133,7 @@ func trace(ch chan Result, i int, cmin2 []string) {
}
}
func ipAsn(ip string, cmin2 []string) string {
func ipAsn(ip string) string {
switch {
case strings.HasPrefix(ip, "59.43"):
return "AS4809"
@ -142,16 +143,9 @@ func ipAsn(ip string, cmin2 []string) string {
return "AS9929"
case strings.HasPrefix(ip, "219.158"):
return "AS4837"
case strings.HasPrefix(ip, "223.118") || strings.HasPrefix(ip, "223.119") ||
strings.HasPrefix(ip, "223.120"):
for _, prefix := range cmin2 {
if strings.HasPrefix(ip, prefix) {
return "AS58807"
}
}
return "AS58453"
case strings.HasPrefix(ip, "103.11.109") || strings.HasPrefix(ip, "45.204.69") ||
strings.HasPrefix(ip, "223.121"):
case strings.HasPrefix(ip, "223.120.19") || strings.HasPrefix(ip, "223.120.17") || strings.HasPrefix(ip, "223.120.16"):
return "AS58807"
case strings.HasPrefix(ip, "223.118") || strings.HasPrefix(ip, "223.119") || strings.HasPrefix(ip, "223.120") || strings.HasPrefix(ip, "223.121"):
return "AS58453"
default:
return ""

View File

@ -22,36 +22,7 @@ func BackTrace() {
s [12]string // 对应 ips 目标地址数量
c = make(chan Result)
t = time.After(time.Second * 10)
cmin2 = []string{
// 以下均为 /24 地址
"223.118.32",
"223.119.32", "223.119.34", "223.119.35", "223.119.36", "223.119.37", "223.119.100", "223.119.253",
"223.120.165"}
// 其他区间的地址
prefixes = []string{
"223.119.8.0/21",
"223.120.128.0/17",
"223.120.134/23",
"223.120.136/23",
"223.120.138/23",
"223.120.154/23",
"223.120.158/23",
"223.120.164/22",
"223.120.168/22",
"223.120.172/22",
"223.120.174/23",
"223.120.184/22",
"223.120.188/22",
"223.120.192/23",
"223.120.200/23",
"223.120.210/23",
"223.120.212/23",
}
)
// 生成CMIN2的IPV4前缀地址
for _, prefix := range prefixes {
cmin2 = append(cmin2, GeneratePrefixList(prefix)...)
}
rsp, err := http.Get("http://ipinfo.io")
if err != nil {
fmt.Errorf("Get ip info err %v \n", err.Error())
@ -66,7 +37,7 @@ func BackTrace() {
}
}
for i := range ips {
go trace(c, i, cmin2)
go trace(c, i)
}
loop:
for range s {