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"
 | 
						"time"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func BackTrace() {
 | 
					func BackTrace(test bool) {
 | 
				
			||||||
    // 获取IP地址数量
 | 
						if !test {
 | 
				
			||||||
    ipCount := len(ipv4s)
 | 
							// 获取IP地址数量
 | 
				
			||||||
    var (
 | 
							ipCount := len(ipv4s)
 | 
				
			||||||
        s = make([]string, ipCount) // 动态分配切片大小
 | 
							var (
 | 
				
			||||||
        c = make(chan Result)
 | 
								s = make([]string, ipCount) // 动态分配切片大小
 | 
				
			||||||
        t = time.After(time.Second * 10)
 | 
								c = make(chan Result)
 | 
				
			||||||
    )
 | 
								t = time.After(time.Second * 10)
 | 
				
			||||||
    for i := range ipv4s {
 | 
							)
 | 
				
			||||||
        go trace(c, i)
 | 
							for i := range ipv4s {
 | 
				
			||||||
    }
 | 
								go trace(c, i)
 | 
				
			||||||
    
 | 
							}
 | 
				
			||||||
loop:
 | 
						loop:
 | 
				
			||||||
    for range s {
 | 
							for range s {
 | 
				
			||||||
        select {
 | 
								select {
 | 
				
			||||||
        case o := <-c:
 | 
								case o := <-c:
 | 
				
			||||||
            s[o.i] = o.s
 | 
									s[o.i] = o.s
 | 
				
			||||||
        case <-t:
 | 
								case <-t:
 | 
				
			||||||
            break loop
 | 
									break loop
 | 
				
			||||||
        }
 | 
								}
 | 
				
			||||||
    }
 | 
							}
 | 
				
			||||||
    
 | 
							for _, r := range s {
 | 
				
			||||||
    for _, r := range s {
 | 
								if r != "" {
 | 
				
			||||||
        if r != "" {
 | 
									fmt.Println(r)
 | 
				
			||||||
            fmt.Println(r)
 | 
								}
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -16,5 +16,5 @@ import (
 | 
				
			|||||||
//}
 | 
					//}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestBackTrace(t *testing.T) {
 | 
					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")
 | 
							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"))
 | 
						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 := flag.NewFlagSet("backtrace", flag.ContinueOnError)
 | 
				
			||||||
	backtraceFlag.BoolVar(&help, "h", false, "Show help information")
 | 
						backtraceFlag.BoolVar(&help, "h", false, "Show help information")
 | 
				
			||||||
	backtraceFlag.BoolVar(&showVersion, "v", false, "Show version")
 | 
						backtraceFlag.BoolVar(&showVersion, "v", false, "Show version")
 | 
				
			||||||
	backtraceFlag.BoolVar(&showIpInfo, "s", true, "Disabe show ip info")
 | 
						backtraceFlag.BoolVar(&showIpInfo, "s", true, "Disabe show ip info")
 | 
				
			||||||
	backtraceFlag.BoolVar(&backtrace.EnableLoger, "e", false, "Enable logging")
 | 
						backtraceFlag.BoolVar(&backtrace.EnableLoger, "e", false, "Enable logging")
 | 
				
			||||||
 | 
						backtraceFlag.BoolVar(&test, "test", false, "Test Mode")
 | 
				
			||||||
	backtraceFlag.Parse(os.Args[1:])
 | 
						backtraceFlag.Parse(os.Args[1:])
 | 
				
			||||||
	if help {
 | 
						if help {
 | 
				
			||||||
		fmt.Printf("Usage: %s [options]\n", os.Args[0])
 | 
							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("准确线路自行查看详细路由,本测试结果仅作参考"))
 | 
				
			||||||
	fmt.Println(Yellow("同一目标地址多个线路时,可能检测已越过汇聚层,除了第一个线路外,后续信息可能无效"))
 | 
						fmt.Println(Yellow("同一目标地址多个线路时,可能检测已越过汇聚层,除了第一个线路外,后续信息可能无效"))
 | 
				
			||||||
	if runtime.GOOS == "windows" || runtime.GOOS == "darwin" {
 | 
						if runtime.GOOS == "windows" || runtime.GOOS == "darwin" {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user