2024-02-15 16:08:29 +00:00
|
|
|
package cli
|
2021-12-03 01:12:51 +00:00
|
|
|
|
|
|
|
import (
|
2021-12-03 03:15:48 +00:00
|
|
|
"fmt"
|
2023-02-10 03:00:14 +00:00
|
|
|
"time"
|
2022-03-27 19:54:06 +00:00
|
|
|
|
2021-12-03 01:12:51 +00:00
|
|
|
"github.com/urfave/cli/v2"
|
|
|
|
)
|
|
|
|
|
|
|
|
var Certs = &cli.Command{
|
2022-03-20 22:18:00 +00:00
|
|
|
Name: "certs",
|
|
|
|
Usage: "manage certs manually",
|
|
|
|
Subcommands: []*cli.Command{
|
2022-03-27 19:54:06 +00:00
|
|
|
{
|
2022-03-20 22:18:00 +00:00
|
|
|
Name: "list",
|
|
|
|
Usage: "list all certificates in the database",
|
|
|
|
Action: listCerts,
|
|
|
|
},
|
2022-03-27 19:54:06 +00:00
|
|
|
{
|
2022-03-20 22:18:00 +00:00
|
|
|
Name: "remove",
|
|
|
|
Usage: "remove a certificate from the database",
|
|
|
|
Action: removeCert,
|
|
|
|
},
|
|
|
|
},
|
2023-02-11 02:04:57 +00:00
|
|
|
Flags: CertStorageFlags,
|
2023-02-10 03:00:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func listCerts(ctx *cli.Context) error {
|
2024-02-15 16:08:29 +00:00
|
|
|
certDB, closeFn, err := OpenCertDB(ctx)
|
2023-02-10 03:00:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
defer closeFn()
|
|
|
|
|
|
|
|
items, err := certDB.Items(0, 0)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
fmt.Printf("Domain\tValidTill\n\n")
|
|
|
|
for _, cert := range items {
|
|
|
|
fmt.Printf("%s\t%s\n",
|
|
|
|
cert.Domain,
|
|
|
|
time.Unix(cert.ValidTill, 0).Format(time.RFC3339))
|
2022-03-20 22:18:00 +00:00
|
|
|
}
|
|
|
|
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()
|
|
|
|
|
2024-02-15 16:08:29 +00:00
|
|
|
certDB, closeFn, err := OpenCertDB(ctx)
|
2022-03-20 22:18:00 +00:00
|
|
|
if err != nil {
|
2023-02-10 03:00:14 +00:00
|
|
|
return err
|
2022-03-20 22:18:00 +00:00
|
|
|
}
|
2023-02-10 03:00:14 +00:00
|
|
|
defer closeFn()
|
2022-03-20 22:18:00 +00:00
|
|
|
|
|
|
|
for _, domain := range domains {
|
|
|
|
fmt.Printf("Removing domain %s from the database...\n", domain)
|
2023-02-10 03:00:14 +00:00
|
|
|
if err := certDB.Delete(domain); err != nil {
|
2022-03-20 22:18:00 +00:00
|
|
|
return err
|
2021-12-03 01:12:51 +00:00
|
|
|
}
|
2022-03-20 22:18:00 +00:00
|
|
|
}
|
2021-12-03 01:12:51 +00:00
|
|
|
return nil
|
|
|
|
}
|