5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-11-29 01:41:37 +00:00

Make yggdrasilctl less crashy

This commit is contained in:
Neil Alexander 2018-12-17 10:17:16 +00:00
parent 575572d9a0
commit 83d734e109
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944

View File

@ -30,6 +30,7 @@ func main() {
if r := recover(); r != nil { if r := recover(); r != nil {
logger.Println("Fatal error:", r) logger.Println("Fatal error:", r)
fmt.Print(logbuffer) fmt.Print(logbuffer)
panic(r)
os.Exit(1) os.Exit(1)
} }
}() }()
@ -37,13 +38,15 @@ func main() {
endpoint := defaults.GetDefaults().DefaultAdminListen endpoint := defaults.GetDefaults().DefaultAdminListen
flag.Usage = func() { flag.Usage = func() {
fmt.Fprintf(flag.CommandLine.Output(), "Usage: %s [options] command [key=value] [key=value] ...\n", os.Args[0]) fmt.Fprintf(flag.CommandLine.Output(), "Usage: %s [options] command [key=value] [key=value] ...\n\n", os.Args[0])
fmt.Println("Options:") fmt.Println("Options:")
flag.PrintDefaults() flag.PrintDefaults()
fmt.Println("Commands:\n - Use \"list\" for a list of available commands") fmt.Println("\nPlease note that options must always specified BEFORE the command\non the command line or they will be ignored.\n")
fmt.Println("Commands:\n - Use \"list\" for a list of available commands\n")
fmt.Println("Examples:") fmt.Println("Examples:")
fmt.Println(" - ", os.Args[0], "list") fmt.Println(" - ", os.Args[0], "list")
fmt.Println(" - ", os.Args[0], "getPeers") fmt.Println(" - ", os.Args[0], "getPeers")
fmt.Println(" - ", os.Args[0], "-v getSelf")
fmt.Println(" - ", os.Args[0], "setTunTap name=auto mtu=1500 tap_mode=false") fmt.Println(" - ", os.Args[0], "setTunTap name=auto mtu=1500 tap_mode=false")
fmt.Println(" - ", os.Args[0], "-endpoint=tcp://localhost:9001 getDHT") fmt.Println(" - ", os.Args[0], "-endpoint=tcp://localhost:9001 getDHT")
fmt.Println(" - ", os.Args[0], "-endpoint=unix:///var/run/ygg.sock getDHT") fmt.Println(" - ", os.Args[0], "-endpoint=unix:///var/run/ygg.sock getDHT")
@ -122,24 +125,34 @@ func main() {
for c, a := range args { for c, a := range args {
if c == 0 { if c == 0 {
if strings.HasPrefix(a, "-") {
logger.Printf("Ignoring flag %s as it should be specified before other parameters\n", a)
continue
}
logger.Printf("Sending request: %v\n", a) logger.Printf("Sending request: %v\n", a)
send["request"] = a send["request"] = a
continue continue
} }
tokens := strings.Split(a, "=") tokens := strings.Split(a, "=")
if i, err := strconv.Atoi(tokens[1]); err == nil { if len(tokens) == 1 {
logger.Printf("Sending parameter %s: %d\n", tokens[0], i) send[tokens[0]] = true
send[tokens[0]] = i } else if len(tokens) > 2 {
} else { send[tokens[0]] = strings.Join(tokens[1:], "=")
switch strings.ToLower(tokens[1]) { } else if len(tokens) == 2 {
case "true": if i, err := strconv.Atoi(tokens[1]); err == nil {
send[tokens[0]] = true logger.Printf("Sending parameter %s: %d\n", tokens[0], i)
case "false": send[tokens[0]] = i
send[tokens[0]] = false } else {
default: switch strings.ToLower(tokens[1]) {
send[tokens[0]] = tokens[1] case "true":
send[tokens[0]] = true
case "false":
send[tokens[0]] = false
default:
send[tokens[0]] = tokens[1]
}
logger.Printf("Sending parameter %s: %v\n", tokens[0], send[tokens[0]])
} }
logger.Printf("Sending parameter %s: %v\n", tokens[0], send[tokens[0]])
} }
} }