73 lines
1.7 KiB
Go
73 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/safing/jess"
|
|
"github.com/safing/jess/hashtools"
|
|
"github.com/safing/jess/tools"
|
|
)
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(listCmd)
|
|
}
|
|
|
|
var listCmd = &cobra.Command{
|
|
Use: "list",
|
|
Short: "list all available suites and tools",
|
|
DisableFlagsInUseLine: true,
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
fmt.Printf("Suites\n\n")
|
|
suitesTable := [][]string{
|
|
{"Name/ID", "Provides", "Security Level", "Tools", "Notes"},
|
|
}
|
|
for _, suite := range jess.Suites() {
|
|
suitesTable = append(suitesTable, []string{
|
|
suite.ID,
|
|
suite.Provides.ShortString(),
|
|
formatSecurityLevel(suite.SecurityLevel),
|
|
strings.Join(suite.Tools, ", "),
|
|
formatSuiteStatus(suite),
|
|
})
|
|
}
|
|
for _, line := range formatColumns(suitesTable) {
|
|
fmt.Println(line)
|
|
}
|
|
|
|
fmt.Printf("\n\nTools\n\n")
|
|
toolTable := [][]string{
|
|
{"Name/ID", "Purpose", "Security Level", "Author", "Comment"},
|
|
}
|
|
for _, tool := range tools.AsList() {
|
|
toolTable = append(toolTable, []string{
|
|
tool.Info.Name,
|
|
tool.Info.FormatPurpose(),
|
|
formatToolSecurityLevel(tool),
|
|
tool.Info.Author,
|
|
tool.Info.Comment,
|
|
})
|
|
}
|
|
for _, line := range formatColumns(toolTable) {
|
|
fmt.Println(line)
|
|
}
|
|
|
|
fmt.Printf("\n\nHashTools\n\n")
|
|
hashToolTable := [][]string{
|
|
{"Name/ID", "Security Level", "Author", "Comment"},
|
|
}
|
|
for _, hashTool := range hashtools.AsList() {
|
|
hashToolTable = append(hashToolTable, []string{
|
|
hashTool.Name,
|
|
fmt.Sprintf("%d b/s", hashTool.SecurityLevel),
|
|
hashTool.Author,
|
|
hashTool.Comment,
|
|
})
|
|
}
|
|
for _, line := range formatColumns(hashToolTable) {
|
|
fmt.Println(line)
|
|
}
|
|
},
|
|
}
|