diff --git a/go.mod b/go.mod index 5e11f3b..a4cd797 100644 --- a/go.mod +++ b/go.mod @@ -11,12 +11,12 @@ require ( require ( github.com/mattn/go-colorable v0.1.9 // indirect github.com/mattn/go-isatty v0.0.14 // indirect - gopkg.in/yaml.v2 v2.4.0 // direct ) require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.13.0 + github.com/gorilla/websocket v1.5.0 github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rodaine/table v1.0.1 github.com/stretchr/testify v1.7.1 diff --git a/go.sum b/go.sum index 3eb5963..8e9263e 100644 --- a/go.sum +++ b/go.sum @@ -5,6 +5,8 @@ github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= @@ -49,8 +51,6 @@ golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapK golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main.go b/main.go index 7cc0547..fb2a92c 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "log" "net" "os" + "os/signal" "strings" "time" @@ -15,6 +16,7 @@ import ( "github.com/xgadget-lab/nexttrace/reporter" "github.com/xgadget-lab/nexttrace/trace" "github.com/xgadget-lab/nexttrace/util" + "github.com/xgadget-lab/nexttrace/wshandle" ) var fSet = flag.NewFlagSet("", flag.ExitOnError) @@ -88,6 +90,20 @@ func main() { ip = util.DomainLookUp(domain, false) } + if ip.To4() == nil && strings.ToUpper(*dataOrigin) == "LEOMOEAPI" { + // IPv6 不使用 LeoMoeAPI + *dataOrigin = "ipinsight" + } + + if strings.ToUpper(*dataOrigin) == "LEOMOEAPI" { + w := wshandle.New() + w.Interrupt = make(chan os.Signal, 1) + signal.Notify(w.Interrupt, os.Interrupt) + defer func() { + w.Conn.Close() + }() + } + printer.PrintTraceRouteNav(ip, domain, *dataOrigin) var m trace.Method = ""