fix: 修复IP指定问题

This commit is contained in:
spiritlhl 2025-08-05 20:59:22 +08:00 committed by GitHub
parent 6f679f403f
commit 9737562e39
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,4 @@
package main package main
import ( import (
"encoding/json" "encoding/json"
"flag" "flag"
@ -8,14 +7,12 @@ import (
"os" "os"
"runtime" "runtime"
"time" "time"
"github.com/oneclickvirt/backtrace/bgptools" "github.com/oneclickvirt/backtrace/bgptools"
backtrace "github.com/oneclickvirt/backtrace/bk" backtrace "github.com/oneclickvirt/backtrace/bk"
"github.com/oneclickvirt/backtrace/model" "github.com/oneclickvirt/backtrace/model"
"github.com/oneclickvirt/backtrace/utils" "github.com/oneclickvirt/backtrace/utils"
. "github.com/oneclickvirt/defaultset" . "github.com/oneclickvirt/defaultset"
) )
type IpInfo struct { type IpInfo struct {
Ip string `json:"ip"` Ip string `json:"ip"`
City string `json:"city"` City string `json:"city"`
@ -23,19 +20,20 @@ type IpInfo struct {
Country string `json:"country"` Country string `json:"country"`
Org string `json:"org"` Org string `json:"org"`
} }
func main() { func main() {
go func() { go func() {
http.Get("https://hits.spiritlhl.net/backtrace.svg?action=hit&title=Hits&title_bg=%23555555&count_bg=%230eecf8&edge_flat=false") http.Get("https://hits.spiritlhl.net/backtrace.svg?action=hit&title=Hits&title_bg=%23555555&count_bg=%230eecf8&edge_flat=false")
}() }()
fmt.Println(Green("Repo:"), Yellow("https://github.com/oneclickvirt/backtrace")) fmt.Println(Green("Repo:"), Yellow("https://github.com/oneclickvirt/backtrace"))
var showVersion, showIpInfo, help, ipv6 bool var showVersion, showIpInfo, help, ipv6 bool
var specifiedIP string
backtraceFlag := flag.NewFlagSet("backtrace", flag.ContinueOnError) backtraceFlag := flag.NewFlagSet("backtrace", flag.ContinueOnError)
backtraceFlag.BoolVar(&help, "h", false, "Show help information") backtraceFlag.BoolVar(&help, "h", false, "Show help information")
backtraceFlag.BoolVar(&showVersion, "v", false, "Show version") backtraceFlag.BoolVar(&showVersion, "v", false, "Show version")
backtraceFlag.BoolVar(&showIpInfo, "s", true, "Disabe show ip info") backtraceFlag.BoolVar(&showIpInfo, "s", true, "Disabe show ip info")
backtraceFlag.BoolVar(&model.EnableLoger, "log", false, "Enable logging") backtraceFlag.BoolVar(&model.EnableLoger, "log", false, "Enable logging")
backtraceFlag.BoolVar(&ipv6, "ipv6", false, "Enable ipv6 testing") backtraceFlag.BoolVar(&ipv6, "ipv6", false, "Enable ipv6 testing")
backtraceFlag.StringVar(&specifiedIP, "ip", "", "Specify IP address for bgptools")
backtraceFlag.Parse(os.Args[1:]) backtraceFlag.Parse(os.Args[1:])
if help { if help {
fmt.Printf("Usage: %s [options]\n", os.Args[0]) fmt.Printf("Usage: %s [options]\n", os.Args[0])
@ -62,10 +60,19 @@ func main() {
} }
} }
preCheck := utils.CheckPublicAccess(3 * time.Second) preCheck := utils.CheckPublicAccess(3 * time.Second)
if preCheck.Connected && info.Ip != "" { if preCheck.Connected {
result, err := bgptools.GetPoPInfo(info.Ip) var targetIP string
if err == nil { if specifiedIP != "" {
fmt.Print(result.Result) targetIP = specifiedIP
} else if info.Ip != "" {
targetIP = info.Ip
}
if targetIP != "" {
result, err := bgptools.GetPoPInfo(targetIP)
if err == nil {
fmt.Print(result.Result)
}
} }
} }
if preCheck.Connected && preCheck.StackType == "DualStack" { if preCheck.Connected && preCheck.StackType == "DualStack" {