backtrace/cmd/main.go

50 lines
1.5 KiB
Go
Raw Normal View History

2024-05-01 16:17:44 +08:00
package main
import (
2024-06-24 13:07:48 +08:00
"encoding/json"
2024-06-24 13:17:54 +08:00
"flag"
2024-05-01 16:17:44 +08:00
"fmt"
"net/http"
2024-06-24 13:07:48 +08:00
2024-06-24 13:24:38 +08:00
backtrace "github.com/oneclickvirt/backtrace/bk"
2024-06-24 13:17:54 +08:00
. "github.com/oneclickvirt/defaultset"
2024-05-01 16:17:44 +08:00
)
2024-06-24 13:07:48 +08:00
type IpInfo struct {
Ip string `json:"ip"`
City string `json:"city"`
Region string `json:"region"`
Country string `json:"country"`
Org string `json:"org"`
}
2024-05-01 16:17:44 +08:00
func main() {
go func() {
http.Get("https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Foneclickvirt%2Fbacktrace&count_bg=%2323E01C&title_bg=%23555555&icon=sonarcloud.svg&icon_color=%23E7E7E7&title=hits&edge_flat=false")
}()
fmt.Println(Green("项目地址:"), Yellow("https://github.com/oneclickvirt/backtrace"))
2024-06-24 13:17:54 +08:00
var showVersion bool
flag.BoolVar(&showVersion, "v", false, "show version")
flag.Parse()
if showVersion {
fmt.Println(backtrace.BackTraceVersion)
return
}
2024-06-24 13:07:48 +08:00
rsp, err := http.Get("http://ipinfo.io")
if err != nil {
fmt.Errorf("Get ip info err %v \n", err.Error())
} else {
info := IpInfo{}
err = json.NewDecoder(rsp.Body).Decode(&info)
if err != nil {
fmt.Errorf("json decode err %v \n", err.Error())
} else {
fmt.Println(Green("国家: ") + White(info.Country) + Green(" 城市: ") + White(info.City) +
Green(" 服务商: ") + Blue(info.Org))
}
}
2024-05-01 16:17:44 +08:00
backtrace.BackTrace()
2024-05-02 12:39:22 +08:00
fmt.Println(Yellow("准确线路自行查看详细路由,本测试结果仅作参考"))
fmt.Println(Yellow("同一目标地址多个线路时,可能检测已越过汇聚层,除了第一个线路外,后续信息可能无效"))
2024-05-01 16:17:44 +08:00
}