11package certificate
22
33import (
4+ "net/http"
5+
46 "github.com/0xJacky/Nginx-UI/internal/cert"
57 "github.com/0xJacky/Nginx-UI/model"
8+ "github.com/0xJacky/Nginx-UI/query"
69 "github.com/gin-gonic/gin"
710 "github.com/go-acme/lego/v4/certcrypto"
811 "github.com/gorilla/websocket"
912 "github.com/uozi-tech/cosy/logger"
10- "net/http "
13+ "gorm.io/gen/field "
1114)
1215
1316const (
@@ -46,6 +49,7 @@ func handleIssueCertLogChan(conn *websocket.Conn, log *cert.Logger, logChan chan
4649}
4750
4851func IssueCert (c * gin.Context ) {
52+ name := c .Param ("name" )
4953 var upGrader = websocket.Upgrader {
5054 CheckOrigin : func (r * http.Request ) bool {
5155 return true
@@ -72,16 +76,18 @@ func IssueCert(c *gin.Context) {
7276 return
7377 }
7478
75- certModel , err := model .FirstOrCreateCert ( c . Param ( " name" ) , payload .GetKeyType ())
79+ certModel , err := model .FirstOrInit ( name , payload .GetKeyType ())
7680 if err != nil {
7781 logger .Error (err )
7882 return
7983 }
8084
81- certInfo , _ := cert .GetCertInfo (certModel .SSLCertificatePath )
82- if certInfo != nil {
83- payload .Resource = certModel .Resource
84- payload .NotBefore = certInfo .NotBefore
85+ if certModel .SSLCertificatePath != "" {
86+ certInfo , _ := cert .GetCertInfo (certModel .SSLCertificatePath )
87+ if certInfo != nil {
88+ payload .Resource = certModel .Resource
89+ payload .NotBefore = certInfo .NotBefore
90+ }
8591 }
8692
8793 logChan := make (chan string , 1 )
@@ -109,22 +115,23 @@ func IssueCert(c *gin.Context) {
109115 logger .Error (err )
110116 return
111117 }
112- return
118+ return
113119 }
114120
115- err = certModel .Updates (& model.Cert {
121+ cert := query .Cert
122+
123+ _ , err = cert .Where (cert .Name .Eq (name ), cert .Filename .Eq (name ), cert .KeyType .Eq (string (payload .KeyType ))).
124+ Assign (field .Attrs (& model.Cert {
116125 Domains : payload .ServerName ,
117126 SSLCertificatePath : payload .GetCertificatePath (),
118127 SSLCertificateKeyPath : payload .GetCertificateKeyPath (),
119128 AutoCert : model .AutoCertEnabled ,
120- KeyType : payload .KeyType ,
121129 ChallengeMethod : payload .ChallengeMethod ,
122130 DnsCredentialID : payload .DNSCredentialID ,
123131 Resource : payload .Resource ,
124132 MustStaple : payload .MustStaple ,
125133 LegoDisableCNAMESupport : payload .LegoDisableCNAMESupport ,
126- })
127-
134+ })).FirstOrCreate ()
128135 if err != nil {
129136 logger .Error (err )
130137 _ = ws .WriteJSON (IssueCertResponse {
0 commit comments