diff --git a/TODO.md b/TODO.md index 3c7d5c8..f986dcf 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1,4 @@ # TODO - add unit tests +- add example for configuring DNS challenge \ No newline at end of file diff --git a/config.go b/config.go index 8657ca7..408a924 100644 --- a/config.go +++ b/config.go @@ -29,8 +29,8 @@ var ( var Default = &Config{ // 30 Days before expiration RenewBefore: 30 * 24, - // Once a week - CheckInterval: 7 * 24 * time.Hour, + // every two days + CheckInterval: 2 * 24 * time.Hour, SSLEmail: "", DirectoryURL: "https://acme-v02.api.letsencrypt.org/directory", HTTPAddress: ":80", diff --git a/renew.go b/renew.go index 4e79f07..6bb1b11 100644 --- a/renew.go +++ b/renew.go @@ -19,7 +19,7 @@ import ( "github.com/go-acme/lego/v3/certificate" ) -func renew(cert *certificate.Resource) error { +func renew(cert *certificate.Resource, cfg *Config) error { // Input certificate is PEM encoded. Decode it here as we may need the decoded // cert later on in the renewal process. The input may be a bundle or a single certificate. @@ -88,12 +88,18 @@ func renew(cert *certificate.Resource) error { return fmt.Errorf("simplecert: failed to write new cert to disk: %s", err) } - log.Println("[INFO] simplecert: wrote new cert to disk! triggering reload via SIGHUP") + log.Println("[INFO] simplecert: wrote new cert to disk!") - // trigger reload by sending our process a SIGHUP - err = syscall.Kill(os.Getpid(), syscall.SIGHUP) - if err != nil { - return fmt.Errorf("simplecert: failed to trigger reload of renewed certificate: %s", err) + // if not using a DNS provider: trigger reload via SIGHUP + if cfg.DNSProvider == "" { + + log.Println("[INFO] triggering reload via SIGHUP") + + // trigger reload by sending our process a SIGHUP + err = syscall.Kill(os.Getpid(), syscall.SIGHUP) + if err != nil { + return fmt.Errorf("simplecert: failed to trigger reload of renewed certificate: %s", err) + } } } @@ -103,7 +109,7 @@ func renew(cert *certificate.Resource) error { // take care of checking the cert in the configured interval // and renew if timeLeft is less than or equal to renewBefore // when initially started, the certificate is checked against the thresholds and renewed if neccessary -func renewalRoutine(cr *certificate.Resource) { +func renewalRoutine(cr *certificate.Resource, cfg *Config) { for { // sleep for duration of checkInterval @@ -115,7 +121,7 @@ func renewalRoutine(cr *certificate.Resource) { } // renew the certificate - err := renew(cr) + err := renew(cr, cfg) if err != nil { // something went wrong. // call handler if set diff --git a/simplecert.go b/simplecert.go index 00fa59a..3d87241 100644 --- a/simplecert.go +++ b/simplecert.go @@ -132,13 +132,13 @@ func Init(cfg *Config, cleanup func()) (*CertReloader, error) { cert := getACMECertResource(cr) // renew cert if necessary - errRenew := renew(cert) + errRenew := renew(cert, cfg) if errRenew != nil { log.Fatal("[FATAL] failed to renew cached cert on startup: ", errRenew) } // kickoff renewal routine - go renewalRoutine(cert) + go renewalRoutine(cert, cfg) return NewCertReloader(certFilePath, keyFilePath, logFile, cleanup) } @@ -185,7 +185,7 @@ obtainNewCert: log.Println("[INFO] simplecert: wrote new cert to disk!") // kickoff renewal routine - go renewalRoutine(cert) + go renewalRoutine(cert, cfg) return NewCertReloader(certFilePath, keyFilePath, logFile, cleanup) }