Browse Source

feat(cdn): 添加编辑 SSL证书和策略的功能

- 在 SSlCert 结构体中添加 SslCertId 字段
- 在 SSLPolicy 结构体中添加 SslPolicyId 字段
- 新增 EditSSLCert 和 EditSSLPolicy 方法
huangjl 1 tháng trước cách đây
mục cha
commit
9be30595fc
2 tập tin đã thay đổi với 64 bổ sung1 xóa
  1. 2 0
      api/v1/cdn.go
  2. 62 1
      internal/service/cdn.go

+ 2 - 0
api/v1/cdn.go

@@ -108,6 +108,7 @@ type Addr struct {
 }
 
 type SSlCert struct {
+	SslCertId    int64    `json:"sslCertId" form:"sslCertId"`
 	IsOn         bool     `json:"isOn" form:"isOn"`                 //是否开启
 	UserId       int64    `json:"userId" form:"userId"`             //用户id
 	Name         string   `json:"name" form:"name"`                 //证书名称
@@ -140,6 +141,7 @@ type AddSSLPolicy struct {
 	OcspIsOn         bool     `json:"ocspIsOn" form:"ocspIsOn"`                 //可选项,是否开启OCSP
 }
 type SSLPolicy struct {
+	SslPolicyId      int64          `json:"sslPolicyId" form:"sslPolicyId"`
 	Http2Enabled     bool           `json:"http2Enabled" form:"http2Enabled"`         //是否支持HTTP/2
 	Http3Enabled     bool           `json:"http3Enabled" form:"http3Enabled"`         //是否支持Http3Enabled
 	MinVersion       string         `json:"minVersion" form:"minVersion"`             //最小TLS版本

+ 62 - 1
internal/service/cdn.go

@@ -38,7 +38,8 @@ type CdnService interface {
 	// 添加ssl策略
 	AddSSLPolicy(ctx context.Context, req v1.AddSSLPolicy) (int64, error)
 	DelSSLCert(ctx context.Context, sslCertId int64) error
-	GetSSLPolicy(ctx context.Context, sslPolicyId int64) (v1.SSLPolicy, error)
+	EditSSLCert(ctx context.Context, req v1.SSlCert) error
+	EditSSLPolicy(ctx context.Context, req v1.SSLPolicy) error
 }
 
 func NewCdnService(
@@ -702,3 +703,63 @@ func (s *cdnService) GetSSLPolicy(ctx context.Context, sslPolicyId int64) (v1.SS
 	}
 	return res.Data, nil
 }
+
+func (s *cdnService) EditSSLCert(ctx context.Context, req v1.SSlCert) error {
+	formData := map[string]interface{}{
+		"sslCertId":    req.SslCertId,
+		"userId":       req.UserId,
+		"isOn":         req.IsOn,
+		"name":         req.Name,
+		"description":  req.Description,
+		"isCA":         req.IsCA,
+		"certData":     req.CertData,
+		"keyData":      req.KeyData,
+		"timeBeginAt":  req.TimeBeginAt,
+		"timeEndAt":    req.TimeEndAt,
+		"dnsNames":     req.DnsNames,
+		"commonNames":  req.CommonNames,
+		"isSelfSigned": req.IsSelfSigned,
+	}
+	apiUrl := s.Url + "SSLCertService/createSSLCert"
+	resBody, err := s.sendDataWithTokenRetry(ctx, formData, apiUrl)
+	if err != nil {
+		return err
+	}
+	var res v1.GeneralResponse[any]
+	if err := json.Unmarshal(resBody, &res); err != nil {
+		return fmt.Errorf("反序列化响应 JSON 失败 (内容: %s): %w", string(resBody), err)
+	}
+	if res.Code != 200 {
+		return fmt.Errorf("API 错误: code %d, msg '%s'", res.Code, res.Message)
+	}
+	return nil
+
+}
+
+func (s *cdnService) EditSSLPolicy(ctx context.Context, req v1.SSLPolicy) error {
+	formData := map[string]interface{}{
+		"sslPolicyId":      req.SslPolicyId,
+		"http2Enabled":     req.Http2Enabled,
+		"http3Enabled":     req.Http3Enabled,
+		"minVersion":       req.MinVersion,
+		"sslCertsJSON":     req.SslCertsJSON,
+		"hstsJSON":         req.HstsJSON,
+		"clientAuthType":   req.ClientAuthType,
+		"cipherSuites":     req.CipherSuites,
+		"cipherSuitesIsOn": req.CipherSuitesIsOn,
+	}
+	apiUrl := s.Url + "SSLPolicyService/updateSSLPolicy"
+	resBody, err := s.sendDataWithTokenRetry(ctx, formData, apiUrl)
+	if err != nil {
+		return err
+	}
+	var res v1.GeneralResponse[any]
+	if err := json.Unmarshal(resBody, &res); err != nil {
+		return fmt.Errorf("反序列化响应 JSON 失败 (内容: %s): %w", string(resBody), err)
+	}
+	if res.Code != 200 {
+		return fmt.Errorf("API 错误: code %d, msg '%s'", res.Code, res.Message)
+	}
+	return nil
+
+}