From 008ce4ab02371e5f68ab8ae3f33e22d21786a7a8 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Fri, 10 Feb 2023 16:42:29 +0100 Subject: [PATCH] try to fix #176 --- cmd/certs.go | 3 --- server/database/interface.go | 8 +++++--- server/database/xorm.go | 12 +++++++++--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/cmd/certs.go b/cmd/certs.go index 4adf076..96244b7 100644 --- a/cmd/certs.go +++ b/cmd/certs.go @@ -98,9 +98,6 @@ func listCerts(ctx *cli.Context) error { fmt.Printf("Domain\tValidTill\n\n") for _, cert := range items { - if cert.Domain[0] == '.' { - cert.Domain = "*" + cert.Domain - } fmt.Printf("%s\t%s\n", cert.Domain, time.Unix(cert.ValidTill, 0).Format(time.RFC3339)) diff --git a/server/database/interface.go b/server/database/interface.go index 56537a4..eea5e8e 100644 --- a/server/database/interface.go +++ b/server/database/interface.go @@ -54,9 +54,11 @@ func toCert(name string, c *certificate.Resource) (*Cert, error) { } validTill := tlsCertificates[0].NotAfter.Unix() - // TODO: do we need this or can we just go with domain name for wildcard cert - // default *.mock cert is prefixed with '.' - if name != c.Domain && name[1:] != c.Domain && name[0] != '.' { + // handle wildcard certs + if name[:1] == "." { + name = "*" + name + } + if name != c.Domain { return nil, fmt.Errorf("domain key and cert domain not equal") } diff --git a/server/database/xorm.go b/server/database/xorm.go index 2a17a99..94296c7 100644 --- a/server/database/xorm.go +++ b/server/database/xorm.go @@ -3,7 +3,6 @@ package database import ( "errors" "fmt" - "strings" "github.com/rs/zerolog/log" @@ -77,8 +76,10 @@ func (x xDB) Put(domain string, cert *certificate.Resource) error { } func (x xDB) Get(domain string) (*certificate.Resource, error) { - // TODO: do we need this or can we just go with domain name for wildcard cert - domain = strings.TrimPrefix(domain, ".") + // handle wildcard certs + if domain[:1] == "." { + domain = "*" + domain + } cert := new(Cert) log.Trace().Str("domain", domain).Msg("get cert from db") @@ -91,6 +92,11 @@ func (x xDB) Get(domain string) (*certificate.Resource, error) { } func (x xDB) Delete(domain string) error { + // handle wildcard certs + if domain[:1] == "." { + domain = "*" + domain + } + log.Trace().Str("domain", domain).Msg("delete cert from db") _, err := x.engine.ID(domain).Delete(new(Cert)) return err