mirror of
				https://github.com/oneclickvirt/backtrace.git
				synced 2025-11-04 15:52:37 +08:00 
			
		
		
		
	feat: 添加测试模式,方便开发调试
This commit is contained in:
		
							parent
							
								
									1a985cfbbe
								
							
						
					
					
						commit
						c9c62e86f3
					
				@ -5,31 +5,31 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func BackTrace() {
 | 
			
		||||
    // 获取IP地址数量
 | 
			
		||||
    ipCount := len(ipv4s)
 | 
			
		||||
    var (
 | 
			
		||||
        s = make([]string, ipCount) // 动态分配切片大小
 | 
			
		||||
        c = make(chan Result)
 | 
			
		||||
        t = time.After(time.Second * 10)
 | 
			
		||||
    )
 | 
			
		||||
    for i := range ipv4s {
 | 
			
		||||
        go trace(c, i)
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
loop:
 | 
			
		||||
    for range s {
 | 
			
		||||
        select {
 | 
			
		||||
        case o := <-c:
 | 
			
		||||
            s[o.i] = o.s
 | 
			
		||||
        case <-t:
 | 
			
		||||
            break loop
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    for _, r := range s {
 | 
			
		||||
        if r != "" {
 | 
			
		||||
            fmt.Println(r)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
func BackTrace(test bool) {
 | 
			
		||||
	if !test {
 | 
			
		||||
		// 获取IP地址数量
 | 
			
		||||
		ipCount := len(ipv4s)
 | 
			
		||||
		var (
 | 
			
		||||
			s = make([]string, ipCount) // 动态分配切片大小
 | 
			
		||||
			c = make(chan Result)
 | 
			
		||||
			t = time.After(time.Second * 10)
 | 
			
		||||
		)
 | 
			
		||||
		for i := range ipv4s {
 | 
			
		||||
			go trace(c, i)
 | 
			
		||||
		}
 | 
			
		||||
	loop:
 | 
			
		||||
		for range s {
 | 
			
		||||
			select {
 | 
			
		||||
			case o := <-c:
 | 
			
		||||
				s[o.i] = o.s
 | 
			
		||||
			case <-t:
 | 
			
		||||
				break loop
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		for _, r := range s {
 | 
			
		||||
			if r != "" {
 | 
			
		||||
				fmt.Println(r)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -16,5 +16,5 @@ import (
 | 
			
		||||
//}
 | 
			
		||||
 | 
			
		||||
func TestBackTrace(t *testing.T) {
 | 
			
		||||
	BackTrace()
 | 
			
		||||
	BackTrace(false)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -25,12 +25,13 @@ func main() {
 | 
			
		||||
		http.Get("https://hits.spiritlhl.net/backtrace.svg?action=hit&title=Hits&title_bg=%23555555&count_bg=%230eecf8&edge_flat=false")
 | 
			
		||||
	}()
 | 
			
		||||
	fmt.Println(Green("项目地址:"), Yellow("https://github.com/oneclickvirt/backtrace"))
 | 
			
		||||
	var showVersion, showIpInfo, help bool
 | 
			
		||||
	var showVersion, showIpInfo, help, test bool
 | 
			
		||||
	backtraceFlag := flag.NewFlagSet("backtrace", flag.ContinueOnError)
 | 
			
		||||
	backtraceFlag.BoolVar(&help, "h", false, "Show help information")
 | 
			
		||||
	backtraceFlag.BoolVar(&showVersion, "v", false, "Show version")
 | 
			
		||||
	backtraceFlag.BoolVar(&showIpInfo, "s", true, "Disabe show ip info")
 | 
			
		||||
	backtraceFlag.BoolVar(&backtrace.EnableLoger, "e", false, "Enable logging")
 | 
			
		||||
	backtraceFlag.BoolVar(&test, "test", false, "Test Mode")
 | 
			
		||||
	backtraceFlag.Parse(os.Args[1:])
 | 
			
		||||
	if help {
 | 
			
		||||
		fmt.Printf("Usage: %s [options]\n", os.Args[0])
 | 
			
		||||
@ -56,7 +57,7 @@ func main() {
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	backtrace.BackTrace()
 | 
			
		||||
	backtrace.BackTrace(test)
 | 
			
		||||
	fmt.Println(Yellow("准确线路自行查看详细路由,本测试结果仅作参考"))
 | 
			
		||||
	fmt.Println(Yellow("同一目标地址多个线路时,可能检测已越过汇聚层,除了第一个线路外,后续信息可能无效"))
 | 
			
		||||
	if runtime.GOOS == "windows" || runtime.GOOS == "darwin" {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user