mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 02:15:48 +02:00
enhance(cert): do not create cert in db if issue failed
This commit is contained in:
parent
09671501e0
commit
6c7edf5c25
3 changed files with 23 additions and 19 deletions
|
@ -1,13 +1,16 @@
|
||||||
package certificate
|
package certificate
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
"github.com/0xJacky/Nginx-UI/internal/cert"
|
"github.com/0xJacky/Nginx-UI/internal/cert"
|
||||||
"github.com/0xJacky/Nginx-UI/model"
|
"github.com/0xJacky/Nginx-UI/model"
|
||||||
|
"github.com/0xJacky/Nginx-UI/query"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/go-acme/lego/v4/certcrypto"
|
"github.com/go-acme/lego/v4/certcrypto"
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
"github.com/uozi-tech/cosy/logger"
|
"github.com/uozi-tech/cosy/logger"
|
||||||
"net/http"
|
"gorm.io/gen/field"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -46,6 +49,7 @@ func handleIssueCertLogChan(conn *websocket.Conn, log *cert.Logger, logChan chan
|
||||||
}
|
}
|
||||||
|
|
||||||
func IssueCert(c *gin.Context) {
|
func IssueCert(c *gin.Context) {
|
||||||
|
name := c.Param("name")
|
||||||
var upGrader = websocket.Upgrader{
|
var upGrader = websocket.Upgrader{
|
||||||
CheckOrigin: func(r *http.Request) bool {
|
CheckOrigin: func(r *http.Request) bool {
|
||||||
return true
|
return true
|
||||||
|
@ -72,17 +76,19 @@ func IssueCert(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
certModel, err := model.FirstOrCreateCert(c.Param("name"), payload.GetKeyType())
|
certModel, err := model.FirstOrInit(name, payload.GetKeyType())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(err)
|
logger.Error(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if certModel.SSLCertificatePath != "" {
|
||||||
certInfo, _ := cert.GetCertInfo(certModel.SSLCertificatePath)
|
certInfo, _ := cert.GetCertInfo(certModel.SSLCertificatePath)
|
||||||
if certInfo != nil {
|
if certInfo != nil {
|
||||||
payload.Resource = certModel.Resource
|
payload.Resource = certModel.Resource
|
||||||
payload.NotBefore = certInfo.NotBefore
|
payload.NotBefore = certInfo.NotBefore
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
logChan := make(chan string, 1)
|
logChan := make(chan string, 1)
|
||||||
errChan := make(chan error, 1)
|
errChan := make(chan error, 1)
|
||||||
|
@ -112,19 +118,20 @@ func IssueCert(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = certModel.Updates(&model.Cert{
|
cert := query.Cert
|
||||||
|
|
||||||
|
_, err = cert.Where(cert.Name.Eq(name), cert.Filename.Eq(name), cert.KeyType.Eq(string(payload.KeyType))).
|
||||||
|
Assign(field.Attrs(&model.Cert{
|
||||||
Domains: payload.ServerName,
|
Domains: payload.ServerName,
|
||||||
SSLCertificatePath: payload.GetCertificatePath(),
|
SSLCertificatePath: payload.GetCertificatePath(),
|
||||||
SSLCertificateKeyPath: payload.GetCertificateKeyPath(),
|
SSLCertificateKeyPath: payload.GetCertificateKeyPath(),
|
||||||
AutoCert: model.AutoCertEnabled,
|
AutoCert: model.AutoCertEnabled,
|
||||||
KeyType: payload.KeyType,
|
|
||||||
ChallengeMethod: payload.ChallengeMethod,
|
ChallengeMethod: payload.ChallengeMethod,
|
||||||
DnsCredentialID: payload.DNSCredentialID,
|
DnsCredentialID: payload.DNSCredentialID,
|
||||||
Resource: payload.Resource,
|
Resource: payload.Resource,
|
||||||
MustStaple: payload.MustStaple,
|
MustStaple: payload.MustStaple,
|
||||||
LegoDisableCNAMESupport: payload.LegoDisableCNAMESupport,
|
LegoDisableCNAMESupport: payload.LegoDisableCNAMESupport,
|
||||||
})
|
})).FirstOrCreate()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(err)
|
logger.Error(err)
|
||||||
_ = ws.WriteJSON(IssueCertResponse{
|
_ = ws.WriteJSON(IssueCertResponse{
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
// Auto-generated notification messages
|
|
||||||
// Do not edit manually
|
|
||||||
|
|
||||||
const notifications: Record<string, string> = {
|
|
||||||
"Sync_Certificate_Error_Error": "err.Error()",
|
|
||||||
};
|
|
||||||
|
|
||||||
export default notifications;
|
|
|
@ -63,6 +63,11 @@ func FirstOrCreateCert(confName string, keyType certcrypto.KeyType) (c Cert, err
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func FirstOrInit(confName string, keyType certcrypto.KeyType) (c Cert, err error) {
|
||||||
|
err = db.FirstOrInit(&c, &Cert{Name: confName, Filename: confName, KeyType: keyType}).Error
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Cert) Insert() error {
|
func (c *Cert) Insert() error {
|
||||||
return db.Create(c).Error
|
return db.Create(c).Error
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue