From 2b9d8176d4e8271f737bce4f24803671d4ce7c04 Mon Sep 17 00:00:00 2001 From: sjlleo Date: Sat, 4 Jun 2022 20:28:58 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E7=8E=B0=E5=9C=A8=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=97=A0=E9=9C=80=E9=85=8D=E7=BD=AE=E5=8D=B3=E5=8F=AF=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=EF=BC=8C=E5=AF=B9=E4=BA=8E=E9=AB=98=E9=98=B6=E7=94=A8?= =?UTF-8?q?=E6=88=B7=EF=BC=8C=E5=8F=AF=E4=BB=A5=E4=BD=BF=E7=94=A8-c?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=B1=9E=E4=BA=8E=E8=87=AA=E5=B7=B1=E7=9A=84?= =?UTF-8?q?=E5=81=8F=E5=A5=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/generate_config.go | 41 +++++++++++++++++++++++++++++++++------ main.go | 20 +++++++++++++++---- 2 files changed, 51 insertions(+), 10 deletions(-) diff --git a/config/generate_config.go b/config/generate_config.go index 2292c26..8d699e7 100644 --- a/config/generate_config.go +++ b/config/generate_config.go @@ -1,9 +1,10 @@ package config import ( - "os" - "io/ioutil" "fmt" + "io/ioutil" + "os" + "gopkg.in/yaml.v2" ) @@ -36,18 +37,46 @@ func writeFile(content []byte) error { } } - if err = ioutil.WriteFile(path + "ntraceConfig.yml", []byte(content), 0644); err != nil{ + if err = ioutil.WriteFile(path+"ntraceConfig.yml", []byte(content), 0644); err != nil { return err } return nil } +func AutoGenerate() (*tracerConfig, error) { + token := Token{ + LeoMoeAPI: "NextTraceDemo", + IPInfo: "", + } + + preference := Preference{ + AlwaysRoutePath: false, + } + + finalConfig := tracerConfig{ + Token: token, + Preference: preference, + } + + yamlData, err := yaml.Marshal(&finalConfig) + + if err != nil { + return nil, err + } + + if err = writeFile(yamlData); err != nil { + return nil, err + } else { + return &finalConfig, nil + } +} + func Generate() (*tracerConfig, error) { var leotoken string var iPInfoToken string var routePathEnable string - + fmt.Println("这是一个配置向导,我们会帮助您生成配置文件,它是一次性的,除非您主动要求重新生成,否则它将不会再出现") fmt.Println("请输入您的LeoMoeAPI Token,如果您没有,请到 Telegram Bot @NextTraceBot 获取一个") @@ -82,8 +111,8 @@ func Generate() (*tracerConfig, error) { yamlData, err := yaml.Marshal(&finalConfig) if err != nil { - return nil, err - } + return nil, err + } if err = writeFile(yamlData); err != nil { return nil, err diff --git a/main.go b/main.go index 320c22e..668dfdc 100644 --- a/main.go +++ b/main.go @@ -20,11 +20,12 @@ var fSet = flag.NewFlagSet("", flag.ExitOnError) var tcpSYNFlag = fSet.Bool("T", false, "Use TCP SYN for tracerouting (default port is 80)") var udpPackageFlag = fSet.Bool("U", false, "Use UDP Package for tracerouting (default port is 53 in UDP)") var port = fSet.Int("p", 80, "Set SYN Traceroute Port") +var manualConfig = fSet.Bool("c", false, "Manual Config [Advanced]") var numMeasurements = fSet.Int("q", 3, "Set the number of probes per each hop.") var parallelRequests = fSet.Int("r", 18, "Set ParallelRequests number. It should be 1 when there is a multi-routing.") var maxHops = fSet.Int("m", 30, "Set the max number of hops (max TTL to be reached).") var dataOrigin = fSet.String("d", "LeoMoeAPI", "Choose IP Geograph Data Provider [LeoMoeAPI, IP.SB, IPInfo, IPInsight, IPAPI.com]") -var rdnsenable = fSet.Bool("rdns", false, "Set whether rDNS will be display") +var noRdns = fSet.Bool("n", false, "Do not try to map IP address to host") var routePath = fSet.Bool("report", false, "Route Path") var tablePrint = fSet.Bool("table", false, "Output trace results as table") var ver = fSet.Bool("V", false, "Check Version") @@ -49,9 +50,19 @@ func flagApply() string { fSet.Parse(os.Args[1:]) target = fSet.Arg(0) } + if *ver { os.Exit(0) } + + // Advanced Config + if *manualConfig { + if _, err := config.Generate(); err != nil { + log.Fatal(err) + } + os.Exit(0) + } + if target == "" { printArgHelp() } @@ -66,10 +77,11 @@ func main() { log.Fatalln("Traceroute requires root/sudo privileges.") } - configData, err := config.Read(); + configData, err := config.Read() + // Initialize Default Config if err != nil { - if configData, err = config.Generate(); err != nil { + if configData, err = config.AutoGenerate(); err != nil { log.Fatal(err) } } @@ -100,7 +112,7 @@ func main() { MaxHops: *maxHops, NumMeasurements: *numMeasurements, ParallelRequests: *parallelRequests, - RDns: *rdnsenable, + RDns: !*noRdns, IPGeoSource: ipgeo.GetSource(*dataOrigin), Timeout: 2 * time.Second, }