From c0568c0d9cba50790911b85ce60958ae1c4ffe7d Mon Sep 17 00:00:00 2001 From: spiritlhl <103393591+spiritLHLS@users.noreply.github.com> Date: Wed, 1 May 2024 13:39:16 +0000 Subject: [PATCH] 2024.05.01 --- README.md | 16 ++++++-- backtrace/backtrace.go | 16 ++++---- backtrace_install.sh | 86 ++++++++++++++++++++++++++++++++++++++---- 3 files changed, 101 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index ec182cc..2cc67c8 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,22 @@ [![Hits](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)](https://hits.seeyoufarm.com) [![Build and Release](https://github.com/oneclickvirt/backtrace/actions/workflows/main.yaml/badge.svg)](https://github.com/oneclickvirt/backtrace/actions/workflows/main.yaml) -基于 https://github.com/zhanghanyun/backtrace 的重构和优化版本,支持多系统多架构,记录多个线路 +三网回程路由测试 + +基于 https://github.com/zhanghanyun/backtrace 的重构和优化,与原版存在很大不同 + +## 功能 + +- [x] 检测回程显示IPV4地址时的线路,不显示IP地址时显示ASN检测不到,原版[backtrace](https://github.com/zhanghanyun/backtrace)也支持 +- [x] 支持对```4837```、```9929```和```163```线路的判断,原版[backtrace](https://github.com/zhanghanyun/backtrace)也支持 +- [x] 支持对```CN2GT```和```CN2GIA```线路的判断,原版[backtrace](https://github.com/zhanghanyun/backtrace)不支持 +- [x] 支持对```CMIN2```和```CMI```线路的判断,原版[backtrace](https://github.com/zhanghanyun/backtrace)不支持 +- [x] 支持对整个回程路由进行线路分析,与原版[backtrace](https://github.com/zhanghanyun/backtrace)仅进行一次判断不同 +- [x] 修复原版[backtrace](https://github.com/zhanghanyun/backtrace)对IPV4地址信息获取时json解析失败依然打印信息的问题 +- [x] 增加对全平台的编译支持,原版[backtrace](https://github.com/zhanghanyun/backtrace)仅支持linux平台的amd64和arm64架构 ## 使用 -终端下运行 - ```shell curl https://raw.githubusercontent.com/oneclickvirt/backtrace/main/backtrace_install.sh -sSf | sh ``` diff --git a/backtrace/backtrace.go b/backtrace/backtrace.go index 36dcbab..2cf3202 100644 --- a/backtrace/backtrace.go +++ b/backtrace/backtrace.go @@ -55,14 +55,16 @@ func BackTrace() { rsp, err := http.Get("http://ipinfo.io") if err != nil { log.Fatalln("Get ip info err", err) + } else { + info := IpInfo{} + err = json.NewDecoder(rsp.Body).Decode(&info) + if err != nil { + log.Fatalln("json decode err", err) + } else { + fmt.Println(Green("国家: ") + White(info.Country) + Green(" 城市: ") + White(info.City) + + Green(" 服务商: ") + Blue(info.Org)) + } } - info := IpInfo{} - err = json.NewDecoder(rsp.Body).Decode(&info) - if err != nil { - log.Fatalln("json decode err", err) - } - fmt.Println(Green("国家: ") + White(info.Country) + Green(" 城市: ") + White(info.City) + - Green(" 服务商: ") + Blue(info.Org)) for i := range ips { go trace(c, i, cmin2) } diff --git a/backtrace_install.sh b/backtrace_install.sh index 6ab21c2..7397802 100644 --- a/backtrace_install.sh +++ b/backtrace_install.sh @@ -1,11 +1,83 @@ #!/bin/bash +#From https://github.com/oneclickvirt/backtrace +#2024.05.01 +os=$(uname -s) arch=$(uname -m) -if [ "$arch" = "x86_64" ]; then - wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-linux-amd64 -else - wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-linux-arm64 -fi + +case $os in + Linux) + case $arch in + x86_64) + wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-linux-amd64 + ;; + arm*) + wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-linux-arm64 + ;; + *) + echo "Unsupported architecture: $arch" + exit 1 + ;; + esac + ;; + Darwin) + case $arch in + x86_64) + wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-darwin-amd64 + ;; + arm64) + wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-darwin-arm64 + ;; + *) + echo "Unsupported architecture: $arch" + exit 1 + ;; + esac + ;; + FreeBSD) + case $arch in + amd64) + wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-freebsd-amd64 + ;; + i386) + wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-freebsd-386 + ;; + arm*) + wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-freebsd-arm64 + ;; + *) + echo "Unsupported architecture: $arch" + exit 1 + ;; + esac + ;; + OpenBSD) + case $arch in + amd64) + wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-openbsd-amd64 + ;; + i386) + wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-openbsd-386 + ;; + arm*) + wget -q -O backtrace https://github.com/oneclickvirt/backtrace/releases/output/backtrace-openbsd-arm64 + ;; + *) + echo "Unsupported architecture: $arch" + exit 1 + ;; + esac + ;; + *) + echo "Unsupported operating system: $os" + exit 1 + ;; +esac + chmod 777 backtrace -mv backtrace /usr/bin/ -backtrace \ No newline at end of file +if [ -f /usr/bin/ ]; then + mv backtrace /usr/bin/ + backtrace +else + ./backtrace +fi