mirror of
https://github.com/nxtrace/NTrace-core.git
synced 2025-08-12 06:26:39 +00:00
update: 现在默认无需配置即可使用,对于高阶用户,可以使用-c生成属于自己的偏好
This commit is contained in:
@@ -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
|
||||
|
||||
20
main.go
20
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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user