mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 10:25:52 +02:00
66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package cert
|
|
|
|
import (
|
|
"github.com/0xJacky/Nginx-UI/server/model"
|
|
"log"
|
|
"time"
|
|
)
|
|
|
|
func handleIssueCertLogChan(logChan chan string) {
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
log.Println("[Auto Cert] handleIssueCertLogChan", err)
|
|
}
|
|
}()
|
|
|
|
for logString := range logChan {
|
|
log.Println("[Auto Cert] Info", logString)
|
|
}
|
|
}
|
|
|
|
func AutoObtain() {
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
log.Println("[AutoCert] Recover", err)
|
|
}
|
|
}()
|
|
log.Println("[AutoCert] Start")
|
|
autoCertList := model.GetAutoCertList()
|
|
for _, certModel := range autoCertList {
|
|
confName := certModel.Filename
|
|
|
|
if certModel.SSLCertificatePath == "" {
|
|
log.Println("[AutoCert] Error ssl_certificate_path is empty, " +
|
|
"try to reopen auto-cert for this config:" + confName)
|
|
continue
|
|
}
|
|
|
|
cert, err := GetCertInfo(certModel.SSLCertificatePath)
|
|
if err != nil {
|
|
log.Println("GetCertInfo Err", err)
|
|
// Get certificate info error, ignore this domain
|
|
continue
|
|
}
|
|
// every week
|
|
if time.Now().Sub(cert.NotBefore).Hours()/24 < 7 {
|
|
continue
|
|
}
|
|
//
|
|
// after 1 mo, reissue certificate
|
|
logChan := make(chan string, 1)
|
|
errChan := make(chan error, 1)
|
|
|
|
// support SAN certification
|
|
go IssueCert(certModel.Domains, logChan, errChan)
|
|
|
|
go handleIssueCertLogChan(logChan)
|
|
|
|
// block, unless errChan closed
|
|
for err = range errChan {
|
|
log.Println("Error cert.IssueCert", err)
|
|
}
|
|
|
|
close(logChan)
|
|
}
|
|
log.Println("[AutoCert] End")
|
|
}
|