diff --git a/frontend/src/views/cert/DNSChallenge.vue b/frontend/src/views/cert/DNSChallenge.vue index 78ac1dbc..412a0b6b 100644 --- a/frontend/src/views/cert/DNSChallenge.vue +++ b/frontend/src/views/cert/DNSChallenge.vue @@ -14,6 +14,10 @@ const code = computed(() => { }) function init() { + data.configuration = { + credentials: {}, + additional: {} + } providers.value?.forEach((v: any, k: number) => { if (v.code === code.value) { provider_idx.value = k diff --git a/server/pkg/cert/auto_cert.go b/server/pkg/cert/auto_cert.go index 0772b013..42568e3c 100644 --- a/server/pkg/cert/auto_cert.go +++ b/server/pkg/cert/auto_cert.go @@ -1,128 +1,128 @@ package cert import ( - "fmt" - "github.com/0xJacky/Nginx-UI/server/model" - "github.com/pkg/errors" - "log" - "time" + "fmt" + "github.com/0xJacky/Nginx-UI/server/model" + "github.com/pkg/errors" + "log" + "time" ) func handleIssueCertLogChan(logChan chan string) { - defer func() { - if err := recover(); err != nil { - log.Println("[Auto Cert] handleIssueCertLogChan", err) - } - }() + defer func() { + if err := recover(); err != nil { + log.Println("[Auto Cert] handleIssueCertLogChan", err) + } + }() - for logString := range logChan { - log.Println("[Auto Cert] Info", logString) - } + for logString := range logChan { + log.Println("[Auto Cert] Info", logString) + } } type AutoCertErrorLog struct { - buffer []string - cert *model.Cert + buffer []string + cert *model.Cert } func (t *AutoCertErrorLog) SetCertModel(cert *model.Cert) { - t.cert = cert + t.cert = cert } func (t *AutoCertErrorLog) Push(text string, err error) { - t.buffer = append(t.buffer, text+" "+err.Error()) - log.Println("[AutoCert Error]", text, err) + t.buffer = append(t.buffer, text+" "+err.Error()) + log.Println("[AutoCert Error]", text, err) } func (t *AutoCertErrorLog) Exit(text string, err error) { - t.buffer = append(t.buffer, text+" "+err.Error()) - log.Println("[AutoCert Error]", text, err) + t.buffer = append(t.buffer, text+" "+err.Error()) + log.Println("[AutoCert Error]", text, err) - if t.cert == nil { - return - } + if t.cert == nil { + return + } - _ = t.cert.Updates(&model.Cert{ - Log: t.ToString(), - }) + _ = t.cert.Updates(&model.Cert{ + Log: t.ToString(), + }) } func (t *AutoCertErrorLog) ToString() (content string) { - for _, v := range t.buffer { - content += fmt.Sprintf("[AutoCert Error] %s\n", v) - } + for _, v := range t.buffer { + content += fmt.Sprintf("[AutoCert Error] %s\n", v) + } - return + return } 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 + 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 - errLog := &AutoCertErrorLog{} - errLog.SetCertModel(certModel) + errLog := &AutoCertErrorLog{} + errLog.SetCertModel(certModel) - if len(certModel.Filename) == 0 { - errLog.Exit("", errors.New("filename is empty")) - continue - } + if len(certModel.Filename) == 0 { + errLog.Exit("", errors.New("filename is empty")) + continue + } - if len(certModel.Domains) == 0 { - errLog.Exit(confName, errors.New("domains list is empty, "+ - "try to reopen auto-cert for this config:"+confName)) - continue - } + if len(certModel.Domains) == 0 { + errLog.Exit(confName, errors.New("domains list is empty, "+ + "try to reopen auto-cert for this config:"+confName)) + continue + } - if certModel.SSLCertificatePath != "" { - cert, err := GetCertInfo(certModel.SSLCertificatePath) - if err != nil { - errLog.Push("get cert info", 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) + if certModel.SSLCertificatePath != "" { + cert, err := GetCertInfo(certModel.SSLCertificatePath) + if err != nil { + errLog.Push("get cert info", 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 - payload := &ConfigPayload{ - ServerName: certModel.Domains, - ChallengeMethod: certModel.ChallengeMethod, - DNSCredentialID: certModel.DnsCredentialID, - } - go IssueCert(payload, logChan, errChan) + // support SAN certification + payload := &ConfigPayload{ + ServerName: certModel.Domains, + ChallengeMethod: certModel.ChallengeMethod, + DNSCredentialID: certModel.DnsCredentialID, + } + go IssueCert(payload, logChan, errChan) - go handleIssueCertLogChan(logChan) + go handleIssueCertLogChan(logChan) - // block, unless errChan closed - for err := range errChan { - errLog.Push("issue cert", err) - } + // block, unless errChan closed + for err := range errChan { + errLog.Push("issue cert", err) + } - logStr := errLog.ToString() - if logStr != "" { - // store error log to db - _ = certModel.Updates(&model.Cert{ - Log: errLog.ToString(), - }) - } else { - certModel.ClearLog() - } + logStr := errLog.ToString() + if logStr != "" { + // store error log to db + _ = certModel.Updates(&model.Cert{ + Log: errLog.ToString(), + }) + } else { + certModel.ClearLog() + } - close(logChan) - } - log.Println("[AutoCert] End") + close(logChan) + } + log.Println("[AutoCert] End") }