43 lines
1 KiB
Go
43 lines
1 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"flag"
|
|
"fmt"
|
|
)
|
|
|
|
func cmdCPEScores(args []string) error {
|
|
fs := flag.NewFlagSet("cpe-scores", flag.ExitOnError)
|
|
jsonMode := fs.Bool("json", false, "emit raw API JSON")
|
|
if err := fs.Parse(args); err != nil {
|
|
return err
|
|
}
|
|
c, err := NewClient()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
var raw []byte
|
|
if err := c.get(apiPrefix+"/cpe_radio_scores", nil, &raw); err != nil {
|
|
return err
|
|
}
|
|
if *jsonMode {
|
|
return printJSON(raw)
|
|
}
|
|
var arr []CPERadioScore
|
|
if err := json.Unmarshal(raw, &arr); err != nil {
|
|
var one CPERadioScore
|
|
if err2 := json.Unmarshal(raw, &one); err2 == nil {
|
|
arr = []CPERadioScore{one}
|
|
} else {
|
|
return fmt.Errorf("decode cpe-scores: %w (body: %s)", err, truncate(string(raw), 200))
|
|
}
|
|
}
|
|
tw := newTab()
|
|
fmt.Fprintln(tw, "NAME\tSTATUS\tAP\tSITE\tRF\tBV\tFW")
|
|
for _, s := range arr {
|
|
fmt.Fprintf(tw, "%s\t%s\t%s\t%s\t%.1f\t%.1f\t%s\n",
|
|
s.Name, s.Status, s.APName, s.APSiteName,
|
|
s.RFScore, s.BusinessValue, s.Firmware)
|
|
}
|
|
return tw.Flush()
|
|
}
|