mirror of
https://codeberg.org/Codeberg/pages-server.git
synced 2024-11-18 10:29:43 +00:00
a5504acb0e
The command was using parts from the old os.Args approach and parts from the cli package, and together they didn't work at all. This fixes that and makes the command `pages-server certs remove [domain...]`. Co-authored-by: Moritz Marquardt <git@momar.de> Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/50 Co-authored-by: Moritz Marquardt <momar@noreply.codeberg.org> Co-committed-by: Moritz Marquardt <momar@noreply.codeberg.org>
71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/akrylysov/pogreb"
|
|
"github.com/urfave/cli/v2"
|
|
|
|
"codeberg.org/codeberg/pages/server/database"
|
|
)
|
|
|
|
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",
|
|
Action: removeCert,
|
|
},
|
|
},
|
|
}
|
|
|
|
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")
|
|
}
|
|
|
|
domains := ctx.Args().Slice()
|
|
|
|
// 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)
|
|
}
|
|
|
|
for _, domain := range domains {
|
|
fmt.Printf("Removing domain %s from the database...\n", domain)
|
|
if err := keyDatabase.Delete([]byte(domain)); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if err := keyDatabase.Close(); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|