refactor: streamline domain mismatch check in certState function

This commit is contained in:
yusing 2025-05-24 07:20:58 +08:00
parent 63c4bdc73d
commit 1cf18657b6

View file

@ -5,10 +5,11 @@ import (
"crypto/x509"
"errors"
"fmt"
"maps"
"os"
"path"
"reflect"
"sort"
"slices"
"strings"
"time"
"github.com/go-acme/lego/v4/certificate"
@ -283,22 +284,19 @@ func (p *Provider) certState() CertState {
return CertStateExpired
}
certDomains := make([]string, len(p.certExpiries))
wantedDomains := make([]string, len(p.cfg.Domains))
i := 0
for domain := range p.certExpiries {
certDomains[i] = domain
i++
}
copy(wantedDomains, p.cfg.Domains)
sort.Strings(wantedDomains)
sort.Strings(certDomains)
if !reflect.DeepEqual(certDomains, wantedDomains) {
log.Info().Msgf("cert domains mismatch: %v != %v", certDomains, p.cfg.Domains)
if len(p.certExpiries) != len(p.cfg.Domains) {
return CertStateMismatch
}
for i := range len(p.cfg.Domains) {
if _, ok := p.certExpiries[p.cfg.Domains[i]]; !ok {
log.Info().Msgf("autocert domains mismatch: cert: %s, wanted: %s",
strings.Join(slices.Collect(maps.Keys(p.certExpiries)), ", "),
strings.Join(p.cfg.Domains, ", "))
return CertStateMismatch
}
}
return CertStateValid
}