mirror of
https://github.com/oneclickvirt/backtrace.git
synced 2025-02-23 01:15:40 +08:00
修复CMIN2识别的问题
This commit is contained in:
parent
36d4abf98b
commit
7bc4772536
@ -2,9 +2,10 @@ package backtrace
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
. "github.com/oneclickvirt/backtrace/defaultset"
|
|
||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
. "github.com/oneclickvirt/backtrace/defaultset"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Result struct {
|
type Result struct {
|
||||||
@ -53,7 +54,7 @@ func removeDuplicates(elements []string) []string {
|
|||||||
return result // 返回去重后的结果切片
|
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]))
|
hops, err := Trace(net.ParseIP(ips[i]))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s := fmt.Sprintf("%v %-15s %v", names[i], ips[i], err)
|
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
|
var asns []string
|
||||||
for _, h := range hops {
|
for _, h := range hops {
|
||||||
for _, n := range h.Nodes {
|
for _, n := range h.Nodes {
|
||||||
asn := ipAsn(n.IP.String(), cmin2)
|
asn := ipAsn(n.IP.String())
|
||||||
if asn != "" {
|
if asn != "" {
|
||||||
asns = append(asns, 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 {
|
switch {
|
||||||
case strings.HasPrefix(ip, "59.43"):
|
case strings.HasPrefix(ip, "59.43"):
|
||||||
return "AS4809"
|
return "AS4809"
|
||||||
@ -142,16 +143,9 @@ func ipAsn(ip string, cmin2 []string) string {
|
|||||||
return "AS9929"
|
return "AS9929"
|
||||||
case strings.HasPrefix(ip, "219.158"):
|
case strings.HasPrefix(ip, "219.158"):
|
||||||
return "AS4837"
|
return "AS4837"
|
||||||
case strings.HasPrefix(ip, "223.118") || strings.HasPrefix(ip, "223.119") ||
|
case strings.HasPrefix(ip, "223.120.19") || strings.HasPrefix(ip, "223.120.17") || strings.HasPrefix(ip, "223.120.16"):
|
||||||
strings.HasPrefix(ip, "223.120"):
|
return "AS58807"
|
||||||
for _, prefix := range cmin2 {
|
case strings.HasPrefix(ip, "223.118") || strings.HasPrefix(ip, "223.119") || strings.HasPrefix(ip, "223.120") || strings.HasPrefix(ip, "223.121"):
|
||||||
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"):
|
|
||||||
return "AS58453"
|
return "AS58453"
|
||||||
default:
|
default:
|
||||||
return ""
|
return ""
|
||||||
|
@ -22,36 +22,7 @@ func BackTrace() {
|
|||||||
s [12]string // 对应 ips 目标地址数量
|
s [12]string // 对应 ips 目标地址数量
|
||||||
c = make(chan Result)
|
c = make(chan Result)
|
||||||
t = time.After(time.Second * 10)
|
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")
|
rsp, err := http.Get("http://ipinfo.io")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Errorf("Get ip info err %v \n", err.Error())
|
fmt.Errorf("Get ip info err %v \n", err.Error())
|
||||||
@ -66,7 +37,7 @@ func BackTrace() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for i := range ips {
|
for i := range ips {
|
||||||
go trace(c, i, cmin2)
|
go trace(c, i)
|
||||||
}
|
}
|
||||||
loop:
|
loop:
|
||||||
for range s {
|
for range s {
|
||||||
|
Loading…
Reference in New Issue
Block a user