mirror of
https://github.com/syncthing/syncthing.git
synced 2024-11-17 02:48:57 -07:00
71 lines
1.5 KiB
Go
71 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/AudriusButkevicius/cli"
|
|
)
|
|
|
|
func init() {
|
|
cliCommands = append(cliCommands, cli.Command{
|
|
Name: "report",
|
|
HideHelp: true,
|
|
Usage: "Reporting command group",
|
|
Subcommands: []cli.Command{
|
|
{
|
|
Name: "system",
|
|
Usage: "Report system state",
|
|
Requires: &cli.Requires{},
|
|
Action: reportSystem,
|
|
},
|
|
{
|
|
Name: "connections",
|
|
Usage: "Report about connections to other devices",
|
|
Requires: &cli.Requires{},
|
|
Action: reportConnections,
|
|
},
|
|
{
|
|
Name: "usage",
|
|
Usage: "Usage report",
|
|
Requires: &cli.Requires{},
|
|
Action: reportUsage,
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
func reportSystem(c *cli.Context) {
|
|
response := httpGet(c, "system/status")
|
|
data := make(map[string]interface{})
|
|
json.Unmarshal(responseToBArray(response), &data)
|
|
prettyPrintJson(data)
|
|
}
|
|
|
|
func reportConnections(c *cli.Context) {
|
|
response := httpGet(c, "system/connections")
|
|
data := make(map[string]map[string]interface{})
|
|
json.Unmarshal(responseToBArray(response), &data)
|
|
var overall map[string]interface{}
|
|
for key, value := range data {
|
|
if key == "total" {
|
|
overall = value
|
|
continue
|
|
}
|
|
value["Device ID"] = key
|
|
prettyPrintJson(value)
|
|
fmt.Println()
|
|
}
|
|
if overall != nil {
|
|
fmt.Println("=== Overall statistics ===")
|
|
prettyPrintJson(overall)
|
|
}
|
|
}
|
|
|
|
func reportUsage(c *cli.Context) {
|
|
response := httpGet(c, "svc/report")
|
|
report := make(map[string]interface{})
|
|
json.Unmarshal(responseToBArray(response), &report)
|
|
prettyPrintJson(report)
|
|
}
|