Only update 1 cert per 4 hour loop
ci/woodpecker/push/build Pipeline was successful Details

This commit is contained in:
Melon 2023-03-12 13:34:12 +00:00
parent bb9fc74108
commit 7b8afa8b91
Signed by: melon
GPG Key ID: 6C9D970C50D26A25
1 changed files with 10 additions and 3 deletions

View File

@ -160,9 +160,13 @@ order by not_after DESC
return nil
}
for _, i := range certs {
r.logf("[Renewal] Cert '%d' runs out in 30 days", i.Id)
r.RequestUpdate(i)
switch {
case len(certs) == 1:
r.logf("[Renewal] Cert '%d - %d' runs out in 30 days", certs[0].Id, certs[0].DataId)
r.RequestUpdate(certs[0])
case len(certs) > 1:
r.logf("[Renewal] Cert '%d - %d' runs out in 30 days, so do %d other certs which will update one-by-one each 4 hours", certs[0].Id, certs[0].DataId, len(certs)-1)
r.RequestUpdate(certs[0])
}
return nil
@ -230,6 +234,7 @@ func (r *Renewal) updateCertificate(c *certificate2.CertificateMetaDomainJoiner)
domains := r.fetchDomains(&c.Certificate)
r.logf("[Renewal] Starting renewal service request for '%s' (%d)", strings.Join(domains, ", "), c.Id)
// switch to renewing state
c.Renewing = utils.PBool(true)
_, err := r.db.Where("id = ?", c.Id).Update(&c.Certificate)
if err != nil {
@ -237,12 +242,14 @@ func (r *Renewal) updateCertificate(c *certificate2.CertificateMetaDomainJoiner)
return
}
// setup LetsEncrypt client
client, err := r.setupForRequest(c)
if err != nil {
r.logf("[Renewal] Failed to generate a client for requesting a certificate: %s", err)
return
}
// use LetsEncrypt to obtain a new certificate
request := certificate.ObtainRequest{
Domains: domains,
Bundle: true,