From a2d6a6493e45f8c7b895b7671df661ba97a52fdc Mon Sep 17 00:00:00 2001 From: Moritz Marquardt Date: Mon, 28 Feb 2022 21:59:23 +0100 Subject: [PATCH] Add "certs list" command to view existing certs in the database --- cmd/certs.go | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/cmd/certs.go b/cmd/certs.go index 434eaf0..071234b 100644 --- a/cmd/certs.go +++ b/cmd/certs.go @@ -2,7 +2,7 @@ package cmd import ( "fmt" - + "github.com/akrylysov/pogreb" "github.com/urfave/cli/v2" "codeberg.org/codeberg/pages/server/database" @@ -12,6 +12,11 @@ var Certs = &cli.Command{ Name: "certs", Usage: "manage certs manually", Subcommands: []*cli.Command{ + &cli.Command{ + Name: "list", + Usage: "list all certificates in the database", + Action: listCerts, + }, &cli.Command{ Name: "remove", Usage: "remove a certificate from the database", @@ -20,6 +25,26 @@ var Certs = &cli.Command{ }, } +func listCerts(ctx *cli.Context) error { + // TODO: make "key-database.pogreb" set via flag + keyDatabase, err := database.New("key-database.pogreb") + if err != nil { + return fmt.Errorf("could not create database: %v", err) + } + + items := keyDatabase.Items() + for domain, _, err := items.Next(); err != pogreb.ErrIterationDone; domain, _, err = items.Next() { + if err != nil { + return err + } + if domain[0] == '.' { + fmt.Printf("*") + } + fmt.Printf("%s\n", domain) + } + return nil +} + func removeCert(ctx *cli.Context) error { if ctx.Args().Len() < 1 { return fmt.Errorf("'certs remove' requires at least one domain as an argument")