diff --git a/src/yggdrasil/admin.go b/src/yggdrasil/admin.go index 35bdee0e..04035146 100644 --- a/src/yggdrasil/admin.go +++ b/src/yggdrasil/admin.go @@ -46,7 +46,7 @@ func (a *admin) init(c *Core, listenaddr string) { a.addHandler("help", nil, func(in admin_info) (admin_info, error) { handlers := make(map[string]interface{}) for _, handler := range a.handlers { - handlers[handler.name] = admin_info{ "fields": handler.args } + handlers[handler.name] = admin_info{"fields": handler.args} } return admin_info{"help": handlers}, nil }) @@ -57,7 +57,7 @@ func (a *admin) init(c *Core, listenaddr string) { self := a.getData_getSelf().asMap() ip := fmt.Sprint(self["ip"]) delete(self, "ip") - return admin_info{"self": admin_info{ ip: self }}, nil + return admin_info{"self": admin_info{ip: self}}, nil }) a.addHandler("getPeers", []string{}, func(in admin_info) (admin_info, error) { sort := "ip" @@ -136,7 +136,7 @@ func (a *admin) init(c *Core, listenaddr string) { a.addHandler("getTunTap", []string{}, func(in admin_info) (r admin_info, e error) { defer func() { recover() - r = admin_info{ "tuntap": admin_info{ "none": admin_info{ } } } + r = admin_info{"none": admin_info{}} e = nil }() @@ -278,7 +278,7 @@ func (a *admin) handleRequest(conn net.Conn) { if _, ok := recv[arg]; !ok { send = admin_info{ "status": "error", - "error": "Expected field missing", + "error": "Expected field missing: " + arg, "expecting": arg, } break handlers diff --git a/yggdrasilctl.go b/yggdrasilctl.go index ba42bea1..a2fd9c3b 100644 --- a/yggdrasilctl.go +++ b/yggdrasilctl.go @@ -61,7 +61,7 @@ func main() { if err := decoder.Decode(&recv); err == nil { if recv["status"] == "error" { if err, ok := recv["error"]; ok { - fmt.Println(err) + fmt.Println("Error:", err) } else { fmt.Println("Unspecified error occured") } @@ -77,16 +77,11 @@ func main() { } req := recv["request"].(map[string]interface{}) res := recv["response"].(map[string]interface{}) - defer func() { - recover() - if json, err := json.MarshalIndent(recv["response"], "", " "); err == nil { - fmt.Println(string(json)) - } - }() + switch req["request"] { case "dot": fmt.Println(res["dot"]) - default: + case "help", "getPeers", "getSwitchPeers", "getDHT", "getSessions": maxWidths := make(map[string]int) var keyOrder []string keysOrdered := false @@ -114,22 +109,35 @@ func main() { } if len(keyOrder) > 0 { - fmt.Printf("%-" + fmt.Sprint(maxWidths["key"]) + "s ", "") + fmt.Printf("%-"+fmt.Sprint(maxWidths["key"])+"s ", "") for _, v := range keyOrder { - fmt.Printf("%-" + fmt.Sprint(maxWidths[v]) + "s ", v) + fmt.Printf("%-"+fmt.Sprint(maxWidths[v])+"s ", v) } fmt.Println() } for slk, slv := range tlv.(map[string]interface{}) { - fmt.Printf("%-" + fmt.Sprint(maxWidths["key"]) + "s ", slk) + fmt.Printf("%-"+fmt.Sprint(maxWidths["key"])+"s ", slk) for _, k := range keyOrder { - fmt.Printf("%-" + fmt.Sprint(maxWidths[k]) + "s ", fmt.Sprint(slv.(map[string]interface{})[k])) + fmt.Printf("%-"+fmt.Sprint(maxWidths[k])+"s ", fmt.Sprint(slv.(map[string]interface{})[k])) } fmt.Println() } } - + case "getTunTap", "setTunTap": + for k, v := range res { + fmt.Println("Interface name:", k) + if mtu, ok := v.(map[string]interface{})["mtu"].(float64); ok { + fmt.Println("Interface MTU:", mtu) + } + if tap_mode, ok := v.(map[string]interface{})["tap_mode"].(bool); ok { + fmt.Println("TAP mode:", tap_mode) + } + } + default: + if json, err := json.MarshalIndent(recv["response"], "", " "); err == nil { + fmt.Println(string(json)) + } } }