@@ -37,7 +37,7 @@ type IWebsiteCAService interface {
3737 Create (create request.WebsiteCACreate ) (* request.WebsiteCACreate , error )
3838 GetCA (id uint ) (* response.WebsiteCADTO , error )
3939 Delete (id uint ) error
40- ObtainSSL (req request.WebsiteCAObtain ) error
40+ ObtainSSL (req request.WebsiteCAObtain ) ( * model. WebsiteSSL , error )
4141}
4242
4343func NewIWebsiteCAService () IWebsiteCAService {
@@ -169,10 +169,17 @@ func (w WebsiteCAService) Delete(id uint) error {
169169 if len (ssls ) > 0 {
170170 return buserr .New ("ErrDeleteCAWithSSL" )
171171 }
172+ exist , err := websiteCARepo .GetFirst (commonRepo .WithByID (id ))
173+ if err != nil {
174+ return err
175+ }
176+ if exist .Name == "1Panel" {
177+ return buserr .New ("ErrDefaultCA" )
178+ }
172179 return websiteCARepo .DeleteBy (commonRepo .WithByID (id ))
173180}
174181
175- func (w WebsiteCAService ) ObtainSSL (req request.WebsiteCAObtain ) error {
182+ func (w WebsiteCAService ) ObtainSSL (req request.WebsiteCAObtain ) ( * model. WebsiteSSL , error ) {
176183 var (
177184 domains []string
178185 ips []net.IP
@@ -183,11 +190,11 @@ func (w WebsiteCAService) ObtainSSL(req request.WebsiteCAObtain) error {
183190 if req .Renew {
184191 websiteSSL , err = websiteSSLRepo .GetFirst (commonRepo .WithByID (req .SSLID ))
185192 if err != nil {
186- return err
193+ return nil , err
187194 }
188195 ca , err = websiteCARepo .GetFirst (commonRepo .WithByID (websiteSSL .CaID ))
189196 if err != nil {
190- return err
197+ return nil , err
191198 }
192199 existDomains := []string {websiteSSL .PrimaryDomain }
193200 if websiteSSL .Domains != "" {
@@ -203,7 +210,7 @@ func (w WebsiteCAService) ObtainSSL(req request.WebsiteCAObtain) error {
203210 } else {
204211 ca , err = websiteCARepo .GetFirst (commonRepo .WithByID (req .ID ))
205212 if err != nil {
206- return err
213+ return nil , err
207214 }
208215 websiteSSL = & model.WebsiteSSL {
209216 Provider : constant .SelfSigned ,
@@ -214,7 +221,7 @@ func (w WebsiteCAService) ObtainSSL(req request.WebsiteCAObtain) error {
214221 }
215222 if req .PushDir {
216223 if ! files .NewFileOp ().Stat (req .Dir ) {
217- return buserr .New (constant .ErrLinkPathNotFound )
224+ return nil , buserr .New (constant .ErrLinkPathNotFound )
218225 }
219226 websiteSSL .Dir = req .Dir
220227 }
@@ -223,7 +230,7 @@ func (w WebsiteCAService) ObtainSSL(req request.WebsiteCAObtain) error {
223230 for _ , domain := range domainArray {
224231 if ! common .IsValidDomain (domain ) {
225232 err = buserr .WithName ("ErrDomainFormat" , domain )
226- return err
233+ return nil , err
227234 } else {
228235 if ipAddress := net .ParseIP (domain ); ipAddress == nil {
229236 domains = append (domains , domain )
@@ -241,32 +248,32 @@ func (w WebsiteCAService) ObtainSSL(req request.WebsiteCAObtain) error {
241248
242249 rootCertBlock , _ := pem .Decode ([]byte (ca .CSR ))
243250 if rootCertBlock == nil {
244- return buserr .New ("ErrSSLCertificateFormat" )
251+ return nil , buserr .New ("ErrSSLCertificateFormat" )
245252 }
246253 rootCsr , err := x509 .ParseCertificate (rootCertBlock .Bytes )
247254 if err != nil {
248- return err
255+ return nil , err
249256 }
250257 rootPrivateKeyBlock , _ := pem .Decode ([]byte (ca .PrivateKey ))
251258 if rootPrivateKeyBlock == nil {
252- return buserr .New ("ErrSSLCertificateFormat" )
259+ return nil , buserr .New ("ErrSSLCertificateFormat" )
253260 }
254261
255262 var rootPrivateKey any
256263 if ssl .KeyType (websiteSSL .KeyType ) == certcrypto .EC256 || ssl .KeyType (websiteSSL .KeyType ) == certcrypto .EC384 {
257264 rootPrivateKey , err = x509 .ParseECPrivateKey (rootPrivateKeyBlock .Bytes )
258265 if err != nil {
259- return err
266+ return nil , err
260267 }
261268 } else {
262269 rootPrivateKey , err = x509 .ParsePKCS1PrivateKey (rootPrivateKeyBlock .Bytes )
263270 if err != nil {
264- return err
271+ return nil , err
265272 }
266273 }
267274 interPrivateKey , interPublicKey , _ , err := createPrivateKey (websiteSSL .KeyType )
268275 if err != nil {
269- return err
276+ return nil , err
270277 }
271278 notAfter := time .Now ()
272279 if req .Unit == "year" {
@@ -287,16 +294,16 @@ func (w WebsiteCAService) ObtainSSL(req request.WebsiteCAObtain) error {
287294 }
288295 interDer , err := x509 .CreateCertificate (rand .Reader , interCsr , rootCsr , interPublicKey , rootPrivateKey )
289296 if err != nil {
290- return err
297+ return nil , err
291298 }
292299 interCert , err := x509 .ParseCertificate (interDer )
293300 if err != nil {
294- return err
301+ return nil , err
295302 }
296303
297304 _ , publicKey , privateKeyBytes , err := createPrivateKey (websiteSSL .KeyType )
298305 if err != nil {
299- return err
306+ return nil , err
300307 }
301308
302309 csr := & x509.Certificate {
@@ -314,11 +321,11 @@ func (w WebsiteCAService) ObtainSSL(req request.WebsiteCAObtain) error {
314321
315322 der , err := x509 .CreateCertificate (rand .Reader , csr , interCert , publicKey , interPrivateKey )
316323 if err != nil {
317- return err
324+ return nil , err
318325 }
319326 cert , err := x509 .ParseCertificate (der )
320327 if err != nil {
321- return err
328+ return nil , err
322329 }
323330
324331 certBlock := & pem.Block {
@@ -335,11 +342,11 @@ func (w WebsiteCAService) ObtainSSL(req request.WebsiteCAObtain) error {
335342
336343 if req .Renew {
337344 if err := websiteSSLRepo .Save (websiteSSL ); err != nil {
338- return err
345+ return nil , err
339346 }
340347 } else {
341348 if err := websiteSSLRepo .Create (context .Background (), websiteSSL ); err != nil {
342- return err
349+ return nil , err
343350 }
344351 }
345352
@@ -348,7 +355,7 @@ func (w WebsiteCAService) ObtainSSL(req request.WebsiteCAObtain) error {
348355 logger := log .New (logFile , "" , log .LstdFlags )
349356 logger .Println (i18n .GetMsgWithMap ("ApplySSLSuccess" , map [string ]interface {}{"domain" : strings .Join (domains , "," )}))
350357 saveCertificateFile (websiteSSL , logger )
351- return nil
358+ return websiteSSL , nil
352359}
353360
354361func createPrivateKey (keyType string ) (privateKey any , publicKey any , privateKeyBytes []byte , err error ) {
0 commit comments