123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package web
- import (
- "context"
- "fmt"
- v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
- "github.com/go-nunu/nunu-layout-advanced/internal/model"
- )
- // ProcessSSLCertificate 处理SSL证书
- func (s *AidedWebService) ProcessSSLCertificate(ctx context.Context, req *v1.WebForwardingRequest, cdnUid int) error {
- if !s.IsHttpsProtocol(req.WebForwardingData.IsHttps) {
- return nil // 非HTTPS协议不需要处理SSL证书
- }
- // 添加SSL证书
- sslCertId, err := s.sslCert.AddSSLCert(ctx, v1.SSL{
- Name: req.WebForwardingData.Domain,
- Domain: req.WebForwardingData.Domain,
- CertData: req.WebForwardingData.HttpsCert,
- KeyData: req.WebForwardingData.HttpsKey,
- CdnUserId: cdnUid,
- Description: req.WebForwardingData.Comment,
- })
- if err != nil {
- return fmt.Errorf("添加SSL证书失败: %w", err)
- }
- // 更新请求中的证书ID
- req.WebForwardingData.SslCertId = sslCertId
- // 编辑SSL策略
- if err := s.sslCert.EditSslPolicy(ctx, req.WebForwardingData.SslPolicyId, []int64{sslCertId}, "add"); err != nil {
- return fmt.Errorf("编辑SSL策略失败: %w", err)
- }
- return nil
- }
- // ProcessSSLCertificateUpdate 处理SSL证书更新
- func (s *AidedWebService) ProcessSSLCertificateUpdate(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, cdnUid int) error {
- if !s.IsHttpsProtocol(req.WebForwardingData.IsHttps) {
- return nil // 非HTTPS协议不需要处理SSL证书
- }
- // 如果证书ID为0
- if oldData.SslCertId == 0 {
- err := s.ProcessSSLCertificate(ctx, req, cdnUid)
- if err != nil {
- return fmt.Errorf("处理SSL证书失败: %w", err)
- }
- return nil
- }
- // 如果证书内容有变化
- if oldData.HttpsCert != req.WebForwardingData.HttpsCert || oldData.HttpsKey != req.WebForwardingData.HttpsKey {
- if err := s.sslCert.EditSSLCert(ctx, v1.SSL{
- Name: req.WebForwardingData.Domain,
- CertId: oldData.SslCertId,
- CertData: req.WebForwardingData.HttpsCert,
- KeyData: req.WebForwardingData.HttpsKey,
- CdnUserId: cdnUid,
- Domain: req.WebForwardingData.Domain,
- Description: req.WebForwardingData.Comment,
- }); err != nil {
- return fmt.Errorf("更新SSL证书失败: %w", err)
- }
- }
- return nil
- }
- // CleanupSSLCertificate 清理SSL证书
- func (s *AidedWebService) CleanupSSLCertificate(ctx context.Context, oldData *model.WebForwarding) error {
- if oldData.SslCertId != 0 {
- if err := s.cdn.DelSSLCert(ctx, int64(oldData.SslCertId)); err != nil {
- return fmt.Errorf("删除SSL证书失败: %w", err)
- }
- if err := s.sslCert.EditSslPolicy(ctx, int64(oldData.SslPolicyId), []int64{int64(oldData.SslCertId)}, "del"); err != nil {
- return fmt.Errorf("删除SSL策略失败: %w", err)
- }
- }
- return nil
- }
|