Add "certs list" command to view existing certs in the database

This commit is contained in:
Moritz Marquardt 2022-02-28 21:59:23 +01:00
parent 6d9a8e2226
commit a2d6a6493e
No known key found for this signature in database
GPG key ID: D5788327BEE388B6

View file

@ -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")