5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-11-22 10:40:27 +00:00

Merge pull request #258 from neilalexander/yggdrasilctl

Make yggdrasilctl less crashy
This commit is contained in:
Neil Alexander 2018-12-17 10:20:12 +00:00 committed by GitHub
commit 2995f24534
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -37,13 +37,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 +124,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]])
} }
} }
@ -188,7 +200,7 @@ func main() {
if !keysOrdered { if !keysOrdered {
for k := range slv.(map[string]interface{}) { for k := range slv.(map[string]interface{}) {
if !*verbose { if !*verbose {
if k == "box_pub_key" || k == "box_sig_key" { if k == "box_pub_key" || k == "box_sig_key" || k == "nodeinfo" {
continue continue
} }
} }