mirror of
https://github.com/oneclickvirt/backtrace.git
synced 2025-02-22 17:05:41 +08:00
update
This commit is contained in:
parent
bc36b6b030
commit
c99e477cd5
@ -5,7 +5,7 @@ import (
|
||||
"net"
|
||||
"strings"
|
||||
|
||||
. "github.com/oneclickvirt/backtrace/defaultset"
|
||||
. "github.com/oneclickvirt/basics/defaultset"
|
||||
)
|
||||
|
||||
type Result struct {
|
||||
|
@ -1,41 +1,16 @@
|
||||
package backtrace
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
. "github.com/oneclickvirt/backtrace/defaultset"
|
||||
)
|
||||
|
||||
type IpInfo struct {
|
||||
Ip string `json:"ip"`
|
||||
City string `json:"city"`
|
||||
Region string `json:"region"`
|
||||
Country string `json:"country"`
|
||||
Org string `json:"org"`
|
||||
}
|
||||
|
||||
func BackTrace() {
|
||||
var (
|
||||
s [12]string // 对应 ips 目标地址数量
|
||||
c = make(chan Result)
|
||||
t = time.After(time.Second * 10)
|
||||
s [12]string // 对应 ips 目标地址数量
|
||||
c = make(chan Result)
|
||||
t = time.After(time.Second * 10)
|
||||
)
|
||||
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))
|
||||
}
|
||||
}
|
||||
for i := range ips {
|
||||
go trace(c, i)
|
||||
}
|
||||
|
3
backtrace/version.go
Normal file
3
backtrace/version.go
Normal file
@ -0,0 +1,3 @@
|
||||
package backtrace
|
||||
|
||||
const Version = "0.0.1"
|
25
cmd/main.go
25
cmd/main.go
@ -1,17 +1,40 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/oneclickvirt/backtrace/backtrace"
|
||||
. "github.com/oneclickvirt/backtrace/defaultset"
|
||||
. "github.com/oneclickvirt/basics/defaultset"
|
||||
)
|
||||
|
||||
type IpInfo struct {
|
||||
Ip string `json:"ip"`
|
||||
City string `json:"city"`
|
||||
Region string `json:"region"`
|
||||
Country string `json:"country"`
|
||||
Org string `json:"org"`
|
||||
}
|
||||
|
||||
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"))
|
||||
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))
|
||||
}
|
||||
}
|
||||
backtrace.BackTrace()
|
||||
fmt.Println(Yellow("准确线路自行查看详细路由,本测试结果仅作参考"))
|
||||
fmt.Println(Yellow("同一目标地址多个线路时,可能检测已越过汇聚层,除了第一个线路外,后续信息可能无效"))
|
||||
|
@ -1,35 +0,0 @@
|
||||
package defaultset
|
||||
|
||||
import "fmt"
|
||||
|
||||
func Red(text string) string {
|
||||
return fmt.Sprintf("\033[31m\033[01m%s\033[0m", text)
|
||||
}
|
||||
|
||||
func Green(text string) string {
|
||||
return fmt.Sprintf("\033[32m\033[01m%s\033[0m", text)
|
||||
}
|
||||
|
||||
func DarkGreen(text string) string {
|
||||
return fmt.Sprintf("\033[32m\033[02m%s\033[0m", text)
|
||||
}
|
||||
|
||||
func Yellow(text string) string {
|
||||
return fmt.Sprintf("\033[33m\033[01m%s\033[0m", text)
|
||||
}
|
||||
|
||||
func Blue(text string) string {
|
||||
return fmt.Sprintf("\033[36m\033[01m%s\033[0m", text)
|
||||
}
|
||||
|
||||
func Purple(text string) string {
|
||||
return fmt.Sprintf("\033[35m\033[01m%s\033[0m", text)
|
||||
}
|
||||
|
||||
func Cyan(text string) string {
|
||||
return fmt.Sprintf("\033[36m\033[01m%s\033[0m", text)
|
||||
}
|
||||
|
||||
func White(text string) string {
|
||||
return fmt.Sprintf("\033[37m\033[01m%s\033[0m", text)
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
package defaultset
|
||||
|
||||
import (
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
)
|
||||
|
||||
var Logger *zap.Logger
|
||||
|
||||
func getZapConfig() zap.Config {
|
||||
cfg := zap.Config{
|
||||
Encoding: "console", // 日志编码格式
|
||||
Level: zap.NewAtomicLevelAt(zap.InfoLevel), // 日志级别
|
||||
OutputPaths: []string{"ecs.log"}, // 输出路径,可以是多个文件
|
||||
ErrorOutputPaths: []string{}, // 错误输出路径,可以是多个文件
|
||||
EncoderConfig: zapcore.EncoderConfig{
|
||||
TimeKey: "timestamp", // 时间字段名称
|
||||
LevelKey: "level", // 日志级别字段名称
|
||||
NameKey: "logger", // 日志记录器名称字段名称
|
||||
CallerKey: "caller", // 调用者信息字段名称
|
||||
MessageKey: "message", // 日志消息字段名称
|
||||
StacktraceKey: "stacktrace", // 堆栈跟踪信息字段名称
|
||||
EncodeLevel: zapcore.LowercaseLevelEncoder, // 小写格式的日志级别编码器
|
||||
EncodeTime: zapcore.ISO8601TimeEncoder, // ISO8601 时间格式编码器
|
||||
EncodeCaller: zapcore.ShortCallerEncoder, // 编码短调用者信息
|
||||
},
|
||||
}
|
||||
return cfg
|
||||
}
|
||||
|
||||
// InitLogger 初始化日志记录器
|
||||
func InitLogger() {
|
||||
// 配置日志记录器
|
||||
cfg := getZapConfig()
|
||||
var err error
|
||||
Logger, err = cfg.Build()
|
||||
if err != nil {
|
||||
panic("failed to initialize logger: " + err.Error())
|
||||
}
|
||||
}
|
1
go.mod
1
go.mod
@ -9,6 +9,7 @@ require (
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/oneclickvirt/basics v0.0.0-20240524033341-86198d11d5f0 // indirect
|
||||
github.com/stretchr/testify v1.9.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
)
|
||||
|
2
go.sum
2
go.sum
@ -1,5 +1,7 @@
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/oneclickvirt/basics v0.0.0-20240524033341-86198d11d5f0 h1:ve6vWhPr+nN0msYTPLzjaMp2Mch/vc5bsV0OKmLt8Nc=
|
||||
github.com/oneclickvirt/basics v0.0.0-20240524033341-86198d11d5f0/go.mod h1:WJP9pAByPMKujLhCtFMp+7ljd31jjLCQkIRPRSukEZA=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||
|
Loading…
Reference in New Issue
Block a user