59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
package cmd
|
|
|
|
import (
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/abronan/valkeyrie/store"
|
|
"github.com/ldez/traefik-certs-dumper/dumper/kv"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
// kvCmd represents the kv command
|
|
var kvCmd = &cobra.Command{
|
|
Use: "kv",
|
|
Short: `Dump the content of a KV store.`,
|
|
Long: `Dump the content of a KV store.`,
|
|
}
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(kvCmd)
|
|
|
|
kvCmd.PersistentFlags().StringSlice("endpoints", []string{"localhost:8500"}, "List of endpoints.")
|
|
kvCmd.PersistentFlags().Int("connection-timeout", 0, "Connection timeout in seconds.")
|
|
kvCmd.PersistentFlags().String("prefix", "traefik", "Prefix used for KV store.")
|
|
kvCmd.PersistentFlags().String("password", "", "Password for connection.")
|
|
kvCmd.PersistentFlags().String("username", "", "Username for connection.")
|
|
kvCmd.PersistentFlags().Bool("watch", false, "Enable watching changes.")
|
|
|
|
// FIXME review TLS parts
|
|
// kvCmd.PersistentFlags().Bool("tls.enable", false, "Enable TLS encryption.")
|
|
// kvCmd.PersistentFlags().Bool("tls.insecureskipverify", false, "Trust unverified certificates if TLS is enabled.")
|
|
// kvCmd.PersistentFlags().String("tls.ca-cert-file", "", "Root CA file for certificate verification if TLS is enabled.")
|
|
}
|
|
|
|
func getKvConfig(cmd *cobra.Command) (*kv.Config, error) {
|
|
endpoints, err := cmd.Flags().GetStringSlice("endpoints")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
connectionTimeout, err := cmd.Flags().GetInt("connection-timeout")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
watch, _ := strconv.ParseBool(cmd.Flag("watch").Value.String())
|
|
|
|
return &kv.Config{
|
|
Endpoints: endpoints,
|
|
Prefix: cmd.Flag("prefix").Value.String(),
|
|
Options: &store.Config{
|
|
ConnectionTimeout: time.Duration(connectionTimeout) * time.Second,
|
|
Username: cmd.Flag("password").Value.String(),
|
|
Password: cmd.Flag("username").Value.String(),
|
|
},
|
|
Watch: watch,
|
|
}, nil
|
|
}
|