mirror of
https://github.com/oneclickvirt/backtrace.git
synced 2025-02-23 01:15:40 +08:00
update
This commit is contained in:
parent
bc36b6b030
commit
c99e477cd5
@ -5,7 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
. "github.com/oneclickvirt/backtrace/defaultset"
|
. "github.com/oneclickvirt/basics/defaultset"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Result struct {
|
type Result struct {
|
||||||
|
@ -1,41 +1,16 @@
|
|||||||
package backtrace
|
package backtrace
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
|
||||||
"time"
|
"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() {
|
func BackTrace() {
|
||||||
var (
|
var (
|
||||||
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)
|
||||||
)
|
)
|
||||||
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 {
|
for i := range ips {
|
||||||
go trace(c, i)
|
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
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/oneclickvirt/backtrace/backtrace"
|
"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() {
|
func main() {
|
||||||
go func() {
|
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")
|
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"))
|
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()
|
backtrace.BackTrace()
|
||||||
fmt.Println(Yellow("准确线路自行查看详细路由,本测试结果仅作参考"))
|
fmt.Println(Yellow("准确线路自行查看详细路由,本测试结果仅作参考"))
|
||||||
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 (
|
require (
|
||||||
|
github.com/oneclickvirt/basics v0.0.0-20240524033341-86198d11d5f0 // indirect
|
||||||
github.com/stretchr/testify v1.9.0 // indirect
|
github.com/stretchr/testify v1.9.0 // indirect
|
||||||
go.uber.org/multierr v1.11.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 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
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 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
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=
|
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||||
|
Loading…
Reference in New Issue
Block a user