mirror of
https://github.com/certimate-go/certimate.git
synced 2026-09-01 15:39:35 +08:00
refactor: clean code
This commit is contained in:
@@ -1,236 +0,0 @@
|
||||
package onepanelssl
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/certimate-go/certimate/pkg/core/certmgr"
|
||||
opsdk "github.com/certimate-go/certimate/pkg/sdk3rd/1panel"
|
||||
opsdkv2 "github.com/certimate-go/certimate/pkg/sdk3rd/1panel/v2"
|
||||
)
|
||||
|
||||
type CertmgrConfig struct {
|
||||
// 1Panel 服务地址。
|
||||
ServerUrl string `json:"serverUrl"`
|
||||
// 1Panel 版本。
|
||||
ApiVersion string `json:"apiVersion"`
|
||||
// 1Panel 接口密钥。
|
||||
ApiKey string `json:"apiKey"`
|
||||
// 是否允许不安全的连接。
|
||||
AllowInsecureConnections bool `json:"allowInsecureConnections,omitempty"`
|
||||
}
|
||||
|
||||
type Certmgr struct {
|
||||
config *CertmgrConfig
|
||||
logger *slog.Logger
|
||||
sdkClient any
|
||||
}
|
||||
|
||||
var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.ServerUrl, config.ApiVersion, config.ApiKey, config.AllowInsecureConnections)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
config: config,
|
||||
logger: slog.Default(),
|
||||
sdkClient: client,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 避免重复上传
|
||||
if res, err := m.tryFindCert(ctx, certPEM, privkeyPEM); err != nil {
|
||||
return nil, err
|
||||
} else if res != nil {
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// 生成新证书名(需符合 1Panel 命名规则)
|
||||
certName := fmt.Sprintf("certimate-%d", time.Now().UnixMilli())
|
||||
|
||||
// 上传证书
|
||||
switch sdkClient := m.sdkClient.(type) {
|
||||
case *opsdk.Client:
|
||||
{
|
||||
uploadWebsiteSSLReq := &opsdk.UploadWebsiteSSLRequest{
|
||||
Type: "paste",
|
||||
Description: certName,
|
||||
Certificate: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
}
|
||||
uploadWebsiteSSLResp, err := sdkClient.UploadWebsiteSSL(uploadWebsiteSSLReq)
|
||||
m.logger.Debug("sdk request '1panel.UploadWebsiteSSL'", slog.Any("request", uploadWebsiteSSLReq), slog.Any("response", uploadWebsiteSSLResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.UploadWebsiteSSL': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
case *opsdkv2.Client:
|
||||
{
|
||||
uploadWebsiteSSLReq := &opsdkv2.UploadWebsiteSSLRequest{
|
||||
Type: "paste",
|
||||
Description: certName,
|
||||
Certificate: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
}
|
||||
uploadWebsiteSSLResp, err := sdkClient.UploadWebsiteSSL(uploadWebsiteSSLReq)
|
||||
m.logger.Debug("sdk request '1panel.UploadWebsiteSSL'", slog.Any("request", uploadWebsiteSSLReq), slog.Any("response", uploadWebsiteSSLResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.UploadWebsiteSSL': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
panic("sdk client is not implemented")
|
||||
}
|
||||
|
||||
// 获取刚刚上传证书 ID
|
||||
if res, err := m.tryFindCert(ctx, certPEM, privkeyPEM); err != nil {
|
||||
return nil, err
|
||||
} else if res == nil {
|
||||
return nil, fmt.Errorf("could not find ssl certificate, may be upload failed")
|
||||
} else {
|
||||
return res, nil
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
searchWebsiteSSLPageNumber := 1
|
||||
searchWebsiteSSLPageSize := 100
|
||||
searchWebsiteSSLItemsCount := 0
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return nil, ctx.Err()
|
||||
default:
|
||||
}
|
||||
|
||||
switch sdkClient := m.sdkClient.(type) {
|
||||
case *opsdk.Client:
|
||||
{
|
||||
searchWebsiteSSLReq := &opsdk.SearchWebsiteSSLRequest{
|
||||
Page: int32(searchWebsiteSSLPageNumber),
|
||||
PageSize: int32(searchWebsiteSSLPageSize),
|
||||
}
|
||||
searchWebsiteSSLResp, err := sdkClient.SearchWebsiteSSL(searchWebsiteSSLReq)
|
||||
m.logger.Debug("sdk request '1panel.SearchWebsiteSSL'", slog.Any("request", searchWebsiteSSLReq), slog.Any("response", searchWebsiteSSLResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.SearchWebsiteSSL': %w", err)
|
||||
}
|
||||
|
||||
if searchWebsiteSSLResp.Data == nil {
|
||||
break
|
||||
}
|
||||
|
||||
for _, sslItem := range searchWebsiteSSLResp.Data.Items {
|
||||
if strings.TrimSpace(sslItem.PEM) == strings.TrimSpace(certPEM) &&
|
||||
strings.TrimSpace(sslItem.PrivateKey) == strings.TrimSpace(privkeyPEM) {
|
||||
// 如果已存在相同证书,直接返回
|
||||
return &certmgr.UploadResult{
|
||||
CertId: fmt.Sprintf("%d", sslItem.ID),
|
||||
CertName: sslItem.Description,
|
||||
}, nil
|
||||
}
|
||||
}
|
||||
|
||||
searchWebsiteSSLItemsCount = int(searchWebsiteSSLResp.Data.Total)
|
||||
}
|
||||
|
||||
case *opsdkv2.Client:
|
||||
{
|
||||
searchWebsiteSSLReq := &opsdkv2.SearchWebsiteSSLRequest{
|
||||
Page: int32(searchWebsiteSSLPageNumber),
|
||||
PageSize: int32(searchWebsiteSSLPageSize),
|
||||
}
|
||||
searchWebsiteSSLResp, err := sdkClient.SearchWebsiteSSL(searchWebsiteSSLReq)
|
||||
m.logger.Debug("sdk request '1panel.SearchWebsiteSSL'", slog.Any("request", searchWebsiteSSLReq), slog.Any("response", searchWebsiteSSLResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.SearchWebsiteSSL': %w", err)
|
||||
}
|
||||
|
||||
if searchWebsiteSSLResp.Data == nil {
|
||||
break
|
||||
}
|
||||
|
||||
for _, sslItem := range searchWebsiteSSLResp.Data.Items {
|
||||
if strings.TrimSpace(sslItem.PEM) == strings.TrimSpace(certPEM) &&
|
||||
strings.TrimSpace(sslItem.PrivateKey) == strings.TrimSpace(privkeyPEM) {
|
||||
// 如果已存在相同证书,直接返回
|
||||
return &certmgr.UploadResult{
|
||||
CertId: fmt.Sprintf("%d", sslItem.ID),
|
||||
CertName: sslItem.Description,
|
||||
}, nil
|
||||
}
|
||||
}
|
||||
|
||||
searchWebsiteSSLItemsCount = int(searchWebsiteSSLResp.Data.Total)
|
||||
}
|
||||
|
||||
default:
|
||||
panic("sdk client is not implemented")
|
||||
}
|
||||
|
||||
if searchWebsiteSSLItemsCount < searchWebsiteSSLPageSize {
|
||||
break
|
||||
} else {
|
||||
searchWebsiteSSLPageNumber++
|
||||
}
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
const (
|
||||
sdkVersionV1 = "v1"
|
||||
sdkVersionV2 = "v2"
|
||||
)
|
||||
|
||||
func createSDKClient(serverUrl, apiVersion, apiKey string, skipTlsVerify bool) (any, error) {
|
||||
if apiVersion == sdkVersionV1 {
|
||||
client, err := opsdk.NewClient(serverUrl, apiKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if skipTlsVerify {
|
||||
client.SetTLSConfig(&tls.Config{InsecureSkipVerify: true})
|
||||
}
|
||||
|
||||
return client, nil
|
||||
} else if apiVersion == sdkVersionV2 {
|
||||
client, err := opsdkv2.NewClient(serverUrl, apiKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if skipTlsVerify {
|
||||
client.SetTLSConfig(&tls.Config{InsecureSkipVerify: true})
|
||||
}
|
||||
|
||||
return client, nil
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("invalid 1panel api version")
|
||||
}
|
||||
@@ -0,0 +1,316 @@
|
||||
package onepanelssl
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/certimate-go/certimate/pkg/core/certmgr"
|
||||
onepanelsdk "github.com/certimate-go/certimate/pkg/sdk3rd/1panel"
|
||||
onepanelsdk2 "github.com/certimate-go/certimate/pkg/sdk3rd/1panel/v2"
|
||||
)
|
||||
|
||||
type CertmgrConfig struct {
|
||||
// 1Panel 服务地址。
|
||||
ServerUrl string `json:"serverUrl"`
|
||||
// 1Panel 版本。
|
||||
ApiVersion string `json:"apiVersion"`
|
||||
// 1Panel 接口密钥。
|
||||
ApiKey string `json:"apiKey"`
|
||||
// 是否允许不安全的连接。
|
||||
AllowInsecureConnections bool `json:"allowInsecureConnections,omitempty"`
|
||||
}
|
||||
|
||||
type Certmgr struct {
|
||||
config *CertmgrConfig
|
||||
logger *slog.Logger
|
||||
sdkClient any
|
||||
}
|
||||
|
||||
var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.ServerUrl, config.ApiVersion, config.ApiKey, config.AllowInsecureConnections)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
config: config,
|
||||
logger: slog.Default(),
|
||||
sdkClient: client,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 避免重复上传
|
||||
if upres, upok, err := c.tryGetResultIfCertExists(ctx, certPEM, privkeyPEM); err != nil {
|
||||
return nil, err
|
||||
} else if upok {
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return upres, nil
|
||||
}
|
||||
|
||||
// 生成新证书名(需符合 1Panel 命名规则)
|
||||
certName := fmt.Sprintf("certimate-%d", time.Now().UnixMilli())
|
||||
|
||||
// 上传证书
|
||||
switch sdkClient := c.sdkClient.(type) {
|
||||
case *onepanelsdk.Client:
|
||||
{
|
||||
websiteSSLUploadReq := &onepanelsdk.WebsiteSSLUploadRequest{
|
||||
Type: "paste",
|
||||
Description: certName,
|
||||
Certificate: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
}
|
||||
websiteSSLUploadResp, err := sdkClient.WebsiteSSLUpload(websiteSSLUploadReq)
|
||||
c.logger.Debug("sdk request '1panel.WebsiteSSLUpload'", slog.Any("request", websiteSSLUploadReq), slog.Any("response", websiteSSLUploadResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.WebsiteSSLUpload': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
case *onepanelsdk2.Client:
|
||||
{
|
||||
websiteSSLUploadReq := &onepanelsdk2.WebsiteSSLUploadRequest{
|
||||
Type: "paste",
|
||||
Description: certName,
|
||||
Certificate: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
}
|
||||
websiteSSLUploadResp, err := sdkClient.WebsiteSSLUpload(websiteSSLUploadReq)
|
||||
c.logger.Debug("sdk request '1panel.WebsiteSSLUpload'", slog.Any("request", websiteSSLUploadReq), slog.Any("response", websiteSSLUploadResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.WebsiteSSLUpload': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
panic("unreachable")
|
||||
}
|
||||
|
||||
// 获取刚刚上传证书 ID
|
||||
if upres, upok, err := c.tryGetResultIfCertExists(ctx, certPEM, privkeyPEM); err != nil {
|
||||
return nil, err
|
||||
} else if !upok {
|
||||
return nil, fmt.Errorf("could not find ssl certificate, may be upload failed")
|
||||
} else {
|
||||
return upres, nil
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
sslId, err := strconv.ParseInt(certIdOrName, 10, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
switch sdkClient := c.sdkClient.(type) {
|
||||
case *onepanelsdk.Client:
|
||||
{
|
||||
// 获取证书详情
|
||||
websiteSSLGetResp, err := sdkClient.WebsiteSSLGet(sslId)
|
||||
c.logger.Debug("sdk request '1panel.WebsiteSSLGet'", slog.Int64("sslId", sslId), slog.Any("response", websiteSSLGetResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.WebsiteSSLGet': %w", err)
|
||||
}
|
||||
|
||||
// 更新证书
|
||||
websiteSSLUploadReq := &onepanelsdk.WebsiteSSLUploadRequest{
|
||||
SSLID: sslId,
|
||||
Type: "paste",
|
||||
Description: websiteSSLGetResp.Data.Description,
|
||||
Certificate: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
}
|
||||
websiteSSLUploadResp, err := sdkClient.WebsiteSSLUpload(websiteSSLUploadReq)
|
||||
c.logger.Debug("sdk request '1panel.WebsiteSSLUpload'", slog.Any("request", websiteSSLUploadReq), slog.Any("response", websiteSSLUploadResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.WebsiteSSLUpload': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
case *onepanelsdk2.Client:
|
||||
{
|
||||
// 获取证书详情
|
||||
websiteSSLGetResp, err := sdkClient.WebsiteSSLGet(sslId)
|
||||
c.logger.Debug("sdk request '1panel.WebsiteSSLGet'", slog.Any("sslId", sslId), slog.Any("response", websiteSSLGetResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.WebsiteSSLGet': %w", err)
|
||||
}
|
||||
|
||||
// 更新证书
|
||||
websiteSSLUploadReq := &onepanelsdk2.WebsiteSSLUploadRequest{
|
||||
SSLID: sslId,
|
||||
Type: "paste",
|
||||
Description: websiteSSLGetResp.Data.Description,
|
||||
Certificate: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
}
|
||||
websiteSSLUploadResp, err := sdkClient.WebsiteSSLUpload(websiteSSLUploadReq)
|
||||
c.logger.Debug("sdk request '1panel.WebsiteSSLUpload'", slog.Any("request", websiteSSLUploadReq), slog.Any("response", websiteSSLUploadResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.WebsiteSSLUpload': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
panic("unreachable")
|
||||
}
|
||||
|
||||
return &certmgr.OperateResult{}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, bool, error) {
|
||||
switch sdkClient := c.sdkClient.(type) {
|
||||
case *onepanelsdk.Client:
|
||||
{
|
||||
searchWebsiteSSLPage := 1
|
||||
searchWebsiteSSLPageSize := 100
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return nil, false, ctx.Err()
|
||||
default:
|
||||
}
|
||||
|
||||
websiteSSLSearchReq := &onepanelsdk.WebsiteSSLSearchRequest{
|
||||
Page: int32(searchWebsiteSSLPage),
|
||||
PageSize: int32(searchWebsiteSSLPageSize),
|
||||
}
|
||||
websiteSSLSearchResp, err := sdkClient.WebsiteSSLSearch(websiteSSLSearchReq)
|
||||
c.logger.Debug("sdk request '1panel.WebsiteSSLSearch'", slog.Any("request", websiteSSLSearchReq), slog.Any("response", websiteSSLSearchResp))
|
||||
if err != nil {
|
||||
return nil, false, fmt.Errorf("failed to execute sdk request '1panel.WebsiteSSLSearch': %w", err)
|
||||
}
|
||||
|
||||
if websiteSSLSearchResp.Data == nil {
|
||||
break
|
||||
}
|
||||
|
||||
for _, sslItem := range websiteSSLSearchResp.Data.Items {
|
||||
oldCertPEM := strings.TrimSpace(strings.ReplaceAll(strings.ReplaceAll(sslItem.PEM, "\r", ""), "\n", ""))
|
||||
oldPrivkeyPEM := strings.TrimSpace(strings.ReplaceAll(strings.ReplaceAll(sslItem.PrivateKey, "\r", ""), "\n", ""))
|
||||
newCertPEM := strings.TrimSpace(strings.ReplaceAll(strings.ReplaceAll(certPEM, "\r", ""), "\n", ""))
|
||||
newPrivkeyPEM := strings.TrimSpace(strings.ReplaceAll(strings.ReplaceAll(privkeyPEM, "\r", ""), "\n", ""))
|
||||
if oldCertPEM == newCertPEM && oldPrivkeyPEM == newPrivkeyPEM {
|
||||
// 如果已存在相同证书,直接返回
|
||||
return &certmgr.UploadResult{
|
||||
CertId: fmt.Sprintf("%d", sslItem.ID),
|
||||
CertName: sslItem.Description,
|
||||
}, true, nil
|
||||
}
|
||||
}
|
||||
|
||||
if len(websiteSSLSearchResp.Data.Items) < int(websiteSSLSearchResp.Data.Total) {
|
||||
break
|
||||
}
|
||||
|
||||
searchWebsiteSSLPage++
|
||||
}
|
||||
}
|
||||
|
||||
case *onepanelsdk2.Client:
|
||||
{
|
||||
searchWebsiteSSLPage := 1
|
||||
searchWebsiteSSLPageSize := 100
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return nil, false, ctx.Err()
|
||||
default:
|
||||
}
|
||||
|
||||
websiteSSLSearchReq := &onepanelsdk2.WebsiteSSLSearchRequest{
|
||||
Page: int32(searchWebsiteSSLPage),
|
||||
PageSize: int32(searchWebsiteSSLPageSize),
|
||||
}
|
||||
websiteSSLSearchResp, err := sdkClient.WebsiteSSLSearch(websiteSSLSearchReq)
|
||||
c.logger.Debug("sdk request '1panel.WebsiteSSLSearch'", slog.Any("request", websiteSSLSearchReq), slog.Any("response", websiteSSLSearchResp))
|
||||
if err != nil {
|
||||
return nil, false, fmt.Errorf("failed to execute sdk request '1panel.WebsiteSSLSearch': %w", err)
|
||||
}
|
||||
|
||||
if websiteSSLSearchResp.Data == nil {
|
||||
break
|
||||
}
|
||||
|
||||
for _, sslItem := range websiteSSLSearchResp.Data.Items {
|
||||
oldCertPEM := strings.TrimSpace(strings.ReplaceAll(strings.ReplaceAll(sslItem.PEM, "\r", ""), "\n", ""))
|
||||
oldPrivkeyPEM := strings.TrimSpace(strings.ReplaceAll(strings.ReplaceAll(sslItem.PrivateKey, "\r", ""), "\n", ""))
|
||||
newCertPEM := strings.TrimSpace(strings.ReplaceAll(strings.ReplaceAll(certPEM, "\r", ""), "\n", ""))
|
||||
newPrivkeyPEM := strings.TrimSpace(strings.ReplaceAll(strings.ReplaceAll(privkeyPEM, "\r", ""), "\n", ""))
|
||||
if oldCertPEM == newCertPEM && oldPrivkeyPEM == newPrivkeyPEM {
|
||||
// 如果已存在相同证书,直接返回
|
||||
return &certmgr.UploadResult{
|
||||
CertId: fmt.Sprintf("%d", sslItem.ID),
|
||||
CertName: sslItem.Description,
|
||||
}, true, nil
|
||||
}
|
||||
}
|
||||
|
||||
if len(websiteSSLSearchResp.Data.Items) < int(websiteSSLSearchResp.Data.Total) {
|
||||
break
|
||||
}
|
||||
|
||||
searchWebsiteSSLPage++
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
panic("unreachable")
|
||||
}
|
||||
|
||||
return nil, false, nil
|
||||
}
|
||||
|
||||
const (
|
||||
sdkVersionV1 = "v1"
|
||||
sdkVersionV2 = "v2"
|
||||
)
|
||||
|
||||
func createSDKClient(serverUrl, apiVersion, apiKey string, skipTlsVerify bool) (any, error) {
|
||||
if apiVersion == sdkVersionV1 {
|
||||
client, err := onepanelsdk.NewClient(serverUrl, apiKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if skipTlsVerify {
|
||||
client.SetTLSConfig(&tls.Config{InsecureSkipVerify: true})
|
||||
}
|
||||
|
||||
return client, nil
|
||||
} else if apiVersion == sdkVersionV2 {
|
||||
client, err := onepanelsdk2.NewClient(serverUrl, apiKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if skipTlsVerify {
|
||||
client.SetTLSConfig(&tls.Config{InsecureSkipVerify: true})
|
||||
}
|
||||
|
||||
return client, nil
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("invalid 1panel api version")
|
||||
}
|
||||
+8
-8
@@ -9,7 +9,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
provider "github.com/certimate-go/certimate/pkg/core/certmgr/providers/1panel-ssl"
|
||||
provider "github.com/certimate-go/certimate/pkg/core/certmgr/providers/1panel"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_1PANELSSL_"
|
||||
argsPrefix := "1PANEL_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -33,12 +33,12 @@ func init() {
|
||||
/*
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./1panel_ssl_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_1PANELSSL_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_1PANELSSL_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_1PANELSSL_SERVERURL="http://127.0.0.1:20410" \
|
||||
--CERTIMATE_SSLMANAGER_1PANELSSL_APIVERSION="v1" \
|
||||
--CERTIMATE_SSLMANAGER_1PANELSSL_APIKEY="your-api-key"
|
||||
go test -v ./1panel_test.go -args \
|
||||
--1PANEL_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--1PANEL_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--1PANEL_SERVERURL="http://127.0.0.1:20410" \
|
||||
--1PANEL_APIVERSION="v1" \
|
||||
--1PANEL_APIKEY="your-api-key"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
@@ -40,12 +40,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -55,15 +55,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -83,13 +83,13 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
listUserCertificateOrderReq := &alicas.ListUserCertificateOrderRequest{
|
||||
ResourceGroupId: lo.EmptyableToPtr(m.config.ResourceGroupId),
|
||||
ResourceGroupId: lo.EmptyableToPtr(c.config.ResourceGroupId),
|
||||
CurrentPage: tea.Int64(int64(listUserCertificateOrderPage)),
|
||||
ShowSize: tea.Int64(int64(listUserCertificateOrderLimit)),
|
||||
OrderType: tea.String("CERT"),
|
||||
}
|
||||
listUserCertificateOrderResp, err := m.sdkClient.ListUserCertificateOrderWithContext(ctx, listUserCertificateOrderReq, &dara.RuntimeOptions{})
|
||||
m.logger.Debug("sdk request 'cas.ListUserCertificateOrder'", slog.Any("request", listUserCertificateOrderReq), slog.Any("response", listUserCertificateOrderResp))
|
||||
listUserCertificateOrderResp, err := c.sdkClient.ListUserCertificateOrderWithContext(ctx, listUserCertificateOrderReq, &dara.RuntimeOptions{})
|
||||
c.logger.Debug("sdk request 'cas.ListUserCertificateOrder'", slog.Any("request", listUserCertificateOrderReq), slog.Any("response", listUserCertificateOrderResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cas.ListUserCertificateOrder': %w", err)
|
||||
}
|
||||
@@ -116,8 +116,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
getUserCertificateDetailReq := &alicas.GetUserCertificateDetailRequest{
|
||||
CertId: certItem.CertificateId,
|
||||
}
|
||||
getUserCertificateDetailResp, err := m.sdkClient.GetUserCertificateDetailWithContext(ctx, getUserCertificateDetailReq, &dara.RuntimeOptions{})
|
||||
m.logger.Debug("sdk request 'cas.GetUserCertificateDetail'", slog.Any("request", getUserCertificateDetailReq), slog.Any("response", getUserCertificateDetailResp))
|
||||
getUserCertificateDetailResp, err := c.sdkClient.GetUserCertificateDetailWithContext(ctx, getUserCertificateDetailReq, &dara.RuntimeOptions{})
|
||||
c.logger.Debug("sdk request 'cas.GetUserCertificateDetail'", slog.Any("request", getUserCertificateDetailReq), slog.Any("response", getUserCertificateDetailResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cas.GetUserCertificateDetail': %w", err)
|
||||
} else {
|
||||
@@ -127,7 +127,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: fmt.Sprintf("%d", tea.Int64Value(certItem.CertificateId)),
|
||||
CertName: *certItem.Name,
|
||||
@@ -151,13 +151,13 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
// 上传新证书
|
||||
// REF: https://help.aliyun.com/zh/ssl-certificate/developer-reference/api-cas-2020-04-07-uploadusercertificate
|
||||
uploadUserCertificateReq := &alicas.UploadUserCertificateRequest{
|
||||
ResourceGroupId: lo.EmptyableToPtr(m.config.ResourceGroupId),
|
||||
ResourceGroupId: lo.EmptyableToPtr(c.config.ResourceGroupId),
|
||||
Name: tea.String(certName),
|
||||
Cert: tea.String(certPEM),
|
||||
Key: tea.String(privkeyPEM),
|
||||
}
|
||||
uploadUserCertificateResp, err := m.sdkClient.UploadUserCertificateWithContext(ctx, uploadUserCertificateReq, &dara.RuntimeOptions{})
|
||||
m.logger.Debug("sdk request 'cas.UploadUserCertificate'", slog.Any("request", uploadUserCertificateReq), slog.Any("response", uploadUserCertificateResp))
|
||||
uploadUserCertificateResp, err := c.sdkClient.UploadUserCertificateWithContext(ctx, uploadUserCertificateReq, &dara.RuntimeOptions{})
|
||||
c.logger.Debug("sdk request 'cas.UploadUserCertificate'", slog.Any("request", uploadUserCertificateReq), slog.Any("response", uploadUserCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cas.UploadUserCertificate': %w", err)
|
||||
}
|
||||
@@ -168,8 +168,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
CertId: uploadUserCertificateResp.Body.CertId,
|
||||
CertFilter: tea.Bool(true),
|
||||
}
|
||||
getUserCertificateDetailResp, err := m.sdkClient.GetUserCertificateDetailWithContext(ctx, getUserCertificateDetailReq, &dara.RuntimeOptions{})
|
||||
m.logger.Debug("sdk request 'cas.GetUserCertificateDetail'", slog.Any("request", getUserCertificateDetailReq), slog.Any("response", getUserCertificateDetailResp))
|
||||
getUserCertificateDetailResp, err := c.sdkClient.GetUserCertificateDetailWithContext(ctx, getUserCertificateDetailReq, &dara.RuntimeOptions{})
|
||||
c.logger.Debug("sdk request 'cas.GetUserCertificateDetail'", slog.Any("request", getUserCertificateDetailReq), slog.Any("response", getUserCertificateDetailResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cas.GetUserCertificateDetail': %w", err)
|
||||
}
|
||||
@@ -184,6 +184,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, accessKeySecret, region string) (*internal.CasClient, error) {
|
||||
// 接入点一览 https://api.aliyun.com/product/cas
|
||||
var endpoint string
|
||||
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_ALIYUNCAS_"
|
||||
argsPrefix := "ALIYUNCAS_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -34,11 +34,11 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_cas_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_ALIYUNCAS_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_ALIYUNCAS_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_ALIYUNCAS_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_ALIYUNCAS_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLMANAGER_ALIYUNCAS_REGION="cn-hangzhou"
|
||||
--ALIYUNCAS_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNCAS_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNCAS_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNCAS_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNCAS_REGION="cn-hangzhou"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -42,12 +42,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -57,15 +57,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -75,11 +75,11 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
// 查询证书列表,避免重复上传
|
||||
// REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-describeservercertificates
|
||||
describeServerCertificatesReq := &alislb.DescribeServerCertificatesRequest{
|
||||
ResourceGroupId: lo.EmptyableToPtr(m.config.ResourceGroupId),
|
||||
RegionId: tea.String(m.config.Region),
|
||||
ResourceGroupId: lo.EmptyableToPtr(c.config.ResourceGroupId),
|
||||
RegionId: tea.String(c.config.Region),
|
||||
}
|
||||
describeServerCertificatesResp, err := m.sdkClient.DescribeServerCertificates(describeServerCertificatesReq)
|
||||
m.logger.Debug("sdk request 'slb.DescribeServerCertificates'", slog.Any("request", describeServerCertificatesReq), slog.Any("response", describeServerCertificatesResp))
|
||||
describeServerCertificatesResp, err := c.sdkClient.DescribeServerCertificates(describeServerCertificatesReq)
|
||||
c.logger.Debug("sdk request 'slb.DescribeServerCertificates'", slog.Any("request", describeServerCertificatesReq), slog.Any("response", describeServerCertificatesResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'slb.DescribeServerCertificates': %w", err)
|
||||
}
|
||||
@@ -99,7 +99,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: *certItem.ServerCertificateId,
|
||||
CertName: *certItem.ServerCertificateName,
|
||||
@@ -119,14 +119,14 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
// 上传新证书
|
||||
// REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-uploadservercertificate
|
||||
uploadServerCertificateReq := &alislb.UploadServerCertificateRequest{
|
||||
ResourceGroupId: lo.EmptyableToPtr(m.config.ResourceGroupId),
|
||||
RegionId: tea.String(m.config.Region),
|
||||
ResourceGroupId: lo.EmptyableToPtr(c.config.ResourceGroupId),
|
||||
RegionId: tea.String(c.config.Region),
|
||||
ServerCertificateName: tea.String(certName),
|
||||
ServerCertificate: tea.String(certPEM),
|
||||
PrivateKey: tea.String(privkeyPEM),
|
||||
}
|
||||
uploadServerCertificateResp, err := m.sdkClient.UploadServerCertificate(uploadServerCertificateReq)
|
||||
m.logger.Debug("sdk request 'slb.UploadServerCertificate'", slog.Any("request", uploadServerCertificateReq), slog.Any("response", uploadServerCertificateResp))
|
||||
uploadServerCertificateResp, err := c.sdkClient.UploadServerCertificate(uploadServerCertificateReq)
|
||||
c.logger.Debug("sdk request 'slb.UploadServerCertificate'", slog.Any("request", uploadServerCertificateReq), slog.Any("response", uploadServerCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'slb.UploadServerCertificate': %w", err)
|
||||
}
|
||||
@@ -137,6 +137,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, accessKeySecret, region string) (*internal.SlbClient, error) {
|
||||
// 接入点一览 https://api.aliyun.com/product/Slb
|
||||
var endpoint string
|
||||
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_ALIYUNSLB_"
|
||||
argsPrefix := "ALIYUNSLB_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -34,11 +34,11 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_slb_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_ALIYUNSLB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_ALIYUNSLB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_ALIYUNSLB_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_ALIYUNSLB_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLMANAGER_ALIYUNSLB_REGION="cn-hangzhou"
|
||||
--ALIYUNSLB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNSLB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNSLB_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNSLB_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNSLB_REGION="cn-hangzhou"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -35,12 +35,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -50,15 +50,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -86,8 +86,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
NextToken: listCertificatesNextToken,
|
||||
MaxItems: aws.Int32(1000),
|
||||
}
|
||||
listCertificatesResp, err := m.sdkClient.ListCertificates(ctx, listCertificatesReq)
|
||||
m.logger.Debug("sdk request 'acm.ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
|
||||
listCertificatesResp, err := c.sdkClient.ListCertificates(ctx, listCertificatesReq)
|
||||
c.logger.Debug("sdk request 'acm.ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'acm.ListCertificates': %w", err)
|
||||
}
|
||||
@@ -110,7 +110,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
getCertificateReq := &awsacm.GetCertificateInput{
|
||||
CertificateArn: certItem.CertificateArn,
|
||||
}
|
||||
getCertificateResp, err := m.sdkClient.GetCertificate(ctx, getCertificateReq)
|
||||
getCertificateResp, err := c.sdkClient.GetCertificate(ctx, getCertificateReq)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'acm.GetCertificate': %w", err)
|
||||
} else {
|
||||
@@ -120,7 +120,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: *certItem.CertificateArn,
|
||||
}, nil
|
||||
@@ -140,8 +140,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
CertificateChain: ([]byte)(intermediaCertPEM),
|
||||
PrivateKey: ([]byte)(privkeyPEM),
|
||||
}
|
||||
importCertificateResp, err := m.sdkClient.ImportCertificate(ctx, importCertificateReq)
|
||||
m.logger.Debug("sdk request 'acm.ImportCertificate'", slog.Any("request", importCertificateReq), slog.Any("response", importCertificateResp))
|
||||
importCertificateResp, err := c.sdkClient.ImportCertificate(ctx, importCertificateReq)
|
||||
c.logger.Debug("sdk request 'acm.ImportCertificate'", slog.Any("request", importCertificateReq), slog.Any("response", importCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'acm.ImportCertificate': %w", err)
|
||||
}
|
||||
@@ -151,7 +151,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
// 提取服务器证书
|
||||
serverCertPEM, intermediaCertPEM, err := xcert.ExtractCertificatesFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -166,8 +166,8 @@ func (m *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri
|
||||
CertificateChain: ([]byte)(intermediaCertPEM),
|
||||
PrivateKey: ([]byte)(privkeyPEM),
|
||||
}
|
||||
importCertificateResp, err := m.sdkClient.ImportCertificate(ctx, importCertificateReq)
|
||||
m.logger.Debug("sdk request 'acm.ImportCertificate'", slog.Any("request", importCertificateReq), slog.Any("response", importCertificateResp))
|
||||
importCertificateResp, err := c.sdkClient.ImportCertificate(ctx, importCertificateReq)
|
||||
c.logger.Debug("sdk request 'acm.ImportCertificate'", slog.Any("request", importCertificateReq), slog.Any("response", importCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'acm.ImportCertificate': %w", err)
|
||||
}
|
||||
|
||||
@@ -38,12 +38,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -53,15 +53,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -89,18 +89,18 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
Marker: listServerCertificatesMarker,
|
||||
MaxItems: aws.Int32(1000),
|
||||
}
|
||||
if m.config.CertificatePath != "" {
|
||||
listServerCertificatesReq.PathPrefix = aws.String(m.config.CertificatePath)
|
||||
if c.config.CertificatePath != "" {
|
||||
listServerCertificatesReq.PathPrefix = aws.String(c.config.CertificatePath)
|
||||
}
|
||||
listServerCertificatesResp, err := m.sdkClient.ListServerCertificates(ctx, listServerCertificatesReq)
|
||||
m.logger.Debug("sdk request 'iam.ListServerCertificates'", slog.Any("request", listServerCertificatesReq), slog.Any("response", listServerCertificatesResp))
|
||||
listServerCertificatesResp, err := c.sdkClient.ListServerCertificates(ctx, listServerCertificatesReq)
|
||||
c.logger.Debug("sdk request 'iam.ListServerCertificates'", slog.Any("request", listServerCertificatesReq), slog.Any("response", listServerCertificatesResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'iam.ListServerCertificates': %w", err)
|
||||
}
|
||||
|
||||
for _, certItem := range listServerCertificatesResp.ServerCertificateMetadataList {
|
||||
// 对比证书路径
|
||||
if m.config.CertificatePath != "" && aws.ToString(certItem.Path) != m.config.CertificatePath {
|
||||
if c.config.CertificatePath != "" && aws.ToString(certItem.Path) != c.config.CertificatePath {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
getServerCertificateReq := &awsiam.GetServerCertificateInput{
|
||||
ServerCertificateName: certItem.ServerCertificateName,
|
||||
}
|
||||
getServerCertificateResp, err := m.sdkClient.GetServerCertificate(ctx, getServerCertificateReq)
|
||||
getServerCertificateResp, err := c.sdkClient.GetServerCertificate(ctx, getServerCertificateReq)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'iam.GetServerCertificate': %w", err)
|
||||
} else {
|
||||
@@ -123,7 +123,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: aws.ToString(certItem.ServerCertificateId),
|
||||
CertName: aws.ToString(certItem.ServerCertificateName),
|
||||
@@ -144,16 +144,16 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
// REF: https://docs.aws.amazon.com/en_us/IAM/latest/APIReference/API_UploadServerCertificate.html
|
||||
uploadServerCertificateReq := &awsiam.UploadServerCertificateInput{
|
||||
ServerCertificateName: aws.String(certName),
|
||||
Path: aws.String(m.config.CertificatePath),
|
||||
Path: aws.String(c.config.CertificatePath),
|
||||
CertificateBody: aws.String(serverCertPEM),
|
||||
CertificateChain: aws.String(intermediaCertPEM),
|
||||
PrivateKey: aws.String(privkeyPEM),
|
||||
}
|
||||
if m.config.CertificatePath == "" {
|
||||
if c.config.CertificatePath == "" {
|
||||
uploadServerCertificateReq.Path = aws.String("/")
|
||||
}
|
||||
uploadServerCertificateResp, err := m.sdkClient.UploadServerCertificate(ctx, uploadServerCertificateReq)
|
||||
m.logger.Debug("sdk request 'iam.UploadServerCertificate'", slog.Any("request", uploadServerCertificateReq), slog.Any("response", uploadServerCertificateResp))
|
||||
uploadServerCertificateResp, err := c.sdkClient.UploadServerCertificate(ctx, uploadServerCertificateReq)
|
||||
c.logger.Debug("sdk request 'iam.UploadServerCertificate'", slog.Any("request", uploadServerCertificateReq), slog.Any("response", uploadServerCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'iam.UploadServerCertificate': %w", err)
|
||||
}
|
||||
@@ -164,6 +164,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, secretAccessKey, region string) (*awsiam.Client, error) {
|
||||
cfg, err := awscfg.LoadDefaultConfig(context.Background())
|
||||
if err != nil {
|
||||
|
||||
@@ -41,12 +41,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.TenantId, config.ClientId, config.ClientSecret, config.CloudName, config.KeyVaultName)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -56,15 +56,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -79,7 +79,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
|
||||
// 获取证书列表,避免重复上传
|
||||
// REF: https://learn.microsoft.com/en-us/rest/api/keyvault/certificates/get-certificates/get-certificates
|
||||
listCertificatesPager := m.sdkClient.NewListCertificatePropertiesPager(nil)
|
||||
listCertificatesPager := c.sdkClient.NewListCertificatePropertiesPager(nil)
|
||||
for listCertificatesPager.More() {
|
||||
page, err := listCertificatesPager.NextPage(context.TODO())
|
||||
if err != nil {
|
||||
@@ -113,8 +113,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
}
|
||||
|
||||
// 对比证书内容
|
||||
getCertificateResp, err := m.sdkClient.GetCertificate(ctx, certItem.ID.Name(), certItem.ID.Version(), nil)
|
||||
m.logger.Debug("sdk request 'keyvault.GetCertificate'", slog.String("request.certificateName", certItem.ID.Name()), slog.String("request.certificateVersion", certItem.ID.Version()), slog.Any("response", getCertificateResp))
|
||||
getCertificateResp, err := c.sdkClient.GetCertificate(ctx, certItem.ID.Name(), certItem.ID.Version(), nil)
|
||||
c.logger.Debug("sdk request 'keyvault.GetCertificate'", slog.String("request.certificateName", certItem.ID.Name()), slog.String("request.certificateVersion", certItem.ID.Version()), slog.Any("response", getCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'keyvault.GetCertificate': %w", err)
|
||||
} else {
|
||||
@@ -124,7 +124,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: string(*certItem.ID),
|
||||
CertName: certItem.ID.Name(),
|
||||
@@ -157,8 +157,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
TAG_CERTSN: to.Ptr(certSN),
|
||||
},
|
||||
}
|
||||
importCertificateResp, err := m.sdkClient.ImportCertificate(ctx, certName, importCertificateParams, nil)
|
||||
m.logger.Debug("sdk request 'keyvault.ImportCertificate'", slog.String("request.certificateName", certName), slog.Any("request.parameters", importCertificateParams), slog.Any("response", importCertificateResp))
|
||||
importCertificateResp, err := c.sdkClient.ImportCertificate(ctx, certName, importCertificateParams, nil)
|
||||
c.logger.Debug("sdk request 'keyvault.ImportCertificate'", slog.String("request.certificateName", certName), slog.Any("request.parameters", importCertificateParams), slog.Any("response", importCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'keyvault.ImportCertificate': %w", err)
|
||||
}
|
||||
@@ -169,7 +169,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -184,8 +184,8 @@ func (m *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri
|
||||
|
||||
// 获取证书
|
||||
// REF: https://learn.microsoft.com/en-us/rest/api/keyvault/certificates/get-certificate/get-certificate
|
||||
getCertificateResp, err := m.sdkClient.GetCertificate(ctx, certIdOrName, "", nil)
|
||||
m.logger.Debug("sdk request 'keyvault.GetCertificate'", slog.String("request.certificateName", certIdOrName), slog.Any("response", getCertificateResp))
|
||||
getCertificateResp, err := c.sdkClient.GetCertificate(ctx, certIdOrName, "", nil)
|
||||
c.logger.Debug("sdk request 'keyvault.GetCertificate'", slog.String("request.certificateName", certIdOrName), slog.Any("response", getCertificateResp))
|
||||
if err != nil {
|
||||
var respErr *azcore.ResponseError
|
||||
if !errors.As(err, &respErr) || (respErr.ErrorCode != "ResourceNotFound" && respErr.ErrorCode != "CertificateNotFound") {
|
||||
@@ -212,8 +212,8 @@ func (m *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri
|
||||
"certimate/cert-sn": to.Ptr(certX509.SerialNumber.Text(16)),
|
||||
},
|
||||
}
|
||||
importCertificateResp, err := m.sdkClient.ImportCertificate(ctx, certIdOrName, importCertificateParams, nil)
|
||||
m.logger.Debug("sdk request 'keyvault.ImportCertificate'", slog.String("request.certificateName", certIdOrName), slog.Any("request.parameters", importCertificateParams), slog.Any("response", importCertificateResp))
|
||||
importCertificateResp, err := c.sdkClient.ImportCertificate(ctx, certIdOrName, importCertificateParams, nil)
|
||||
c.logger.Debug("sdk request 'keyvault.ImportCertificate'", slog.String("request.certificateName", certIdOrName), slog.Any("request.parameters", importCertificateParams), slog.Any("response", importCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'keyvault.ImportCertificate': %w", err)
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_AZUREKEYVAULT_"
|
||||
argsPrefix := "AZUREKEYVAULT_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -38,13 +38,13 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./azure_keyvault_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_AZUREKEYVAULT_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_AZUREKEYVAULT_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_AZUREKEYVAULT_TENANTID="your-tenant-id" \
|
||||
--CERTIMATE_SSLMANAGER_AZUREKEYVAULT_CLIENTID="your-app-registration-client-id" \
|
||||
--CERTIMATE_SSLMANAGER_AZUREKEYVAULT_CLIENTSECRET="your-app-registration-client-secret" \
|
||||
--CERTIMATE_SSLMANAGER_AZUREKEYVAULT_CLOUDNAME="china" \
|
||||
--CERTIMATE_SSLMANAGER_AZUREKEYVAULT_KEYVAULTNAME="your-keyvault-name"
|
||||
--AZUREKEYVAULT_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--AZUREKEYVAULT_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--AZUREKEYVAULT_TENANTID="your-tenant-id" \
|
||||
--AZUREKEYVAULT_CLIENTID="your-app-registration-client-id" \
|
||||
--AZUREKEYVAULT_CLIENTSECRET="your-app-registration-client-secret" \
|
||||
--AZUREKEYVAULT_CLOUDNAME="china" \
|
||||
--AZUREKEYVAULT_KEYVAULTNAME="your-keyvault-name"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/certimate-go/certimate/pkg/core/certmgr"
|
||||
bdsdk "github.com/certimate-go/certimate/pkg/sdk3rd/baiducloud/cert"
|
||||
baiducert "github.com/certimate-go/certimate/pkg/sdk3rd/baiducloud/cert"
|
||||
xcert "github.com/certimate-go/certimate/pkg/utils/cert"
|
||||
)
|
||||
|
||||
@@ -23,19 +23,19 @@ type CertmgrConfig struct {
|
||||
type Certmgr struct {
|
||||
config *CertmgrConfig
|
||||
logger *slog.Logger
|
||||
sdkClient *bdsdk.Client
|
||||
sdkClient *baiducert.Client
|
||||
}
|
||||
|
||||
var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -45,15 +45,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -62,8 +62,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
|
||||
// 查看证书列表
|
||||
// REF: https://cloud.baidu.com/doc/Reference/s/Gjwvz27xu#35-%E6%9F%A5%E7%9C%8B%E8%AF%81%E4%B9%A6%E5%88%97%E8%A1%A8%E8%AF%A6%E6%83%85
|
||||
listCertDetail, err := m.sdkClient.ListCertDetail()
|
||||
m.logger.Debug("sdk request 'cert.ListCertDetail'", slog.Any("response", listCertDetail))
|
||||
listCertDetail, err := c.sdkClient.ListCertDetail()
|
||||
c.logger.Debug("sdk request 'cert.ListCertDetail'", slog.Any("response", listCertDetail))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cert.ListCertDetail': %w", err)
|
||||
} else {
|
||||
@@ -86,8 +86,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 对比证书内容
|
||||
getCertDetailResp, err := m.sdkClient.GetCertRawData(certItem.CertId)
|
||||
m.logger.Debug("sdk request 'cert.GetCertRawData'", slog.Any("certId", certItem.CertId), slog.Any("response", getCertDetailResp))
|
||||
getCertDetailResp, err := c.sdkClient.GetCertRawData(certItem.CertId)
|
||||
c.logger.Debug("sdk request 'cert.GetCertRawData'", slog.Any("certId", certItem.CertId), slog.Any("response", getCertDetailResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cert.GetCertRawData': %w", err)
|
||||
} else {
|
||||
@@ -97,7 +97,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: certItem.CertId,
|
||||
CertName: certItem.CertName,
|
||||
@@ -107,12 +107,12 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
|
||||
// 创建证书
|
||||
// REF: https://cloud.baidu.com/doc/Reference/s/Gjwvz27xu#31-%E5%88%9B%E5%BB%BA%E8%AF%81%E4%B9%A6
|
||||
createCertReq := &bdsdk.CreateCertArgs{}
|
||||
createCertReq := &baiducert.CreateCertArgs{}
|
||||
createCertReq.CertName = fmt.Sprintf("certimate-%d", time.Now().UnixMilli())
|
||||
createCertReq.CertServerData = certPEM
|
||||
createCertReq.CertPrivateData = privkeyPEM
|
||||
createCertResp, err := m.sdkClient.CreateCert(createCertReq)
|
||||
m.logger.Debug("sdk request 'cert.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
createCertResp, err := c.sdkClient.CreateCert(createCertReq)
|
||||
c.logger.Debug("sdk request 'cert.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cert.CreateCert': %w", err)
|
||||
}
|
||||
@@ -123,8 +123,12 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, secretAccessKey string) (*bdsdk.Client, error) {
|
||||
client, err := bdsdk.NewClient(accessKeyId, secretAccessKey, "")
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, secretAccessKey string) (*baiducert.Client, error) {
|
||||
client, err := baiducert.NewClient(accessKeyId, secretAccessKey, "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_BAIDUCLOUDCERT_"
|
||||
argsPrefix := "BAIDUCLOUDCERT_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./baiducloud_cert_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_BAIDUCLOUDCERT_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_BAIDUCLOUDCERT_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_BAIDUCLOUDCERT_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_BAIDUCLOUDCERT_SECRETACCESSKEY="your-access-key-secret"
|
||||
--BAIDUCLOUDCERT_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--BAIDUCLOUDCERT_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--BAIDUCLOUDCERT_ACCESSKEYID="your-access-key-id" \
|
||||
--BAIDUCLOUDCERT_SECRETACCESSKEY="your-access-key-secret"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -30,12 +30,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.ApiToken)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
|
||||
@@ -18,7 +18,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_BAISHANCDN_"
|
||||
argsPrefix := "BAISHANCDN_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -29,9 +29,9 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./baishan_cdn_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_BAISHANCDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_BAISHANCDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_BAISHANCDN_APITOKEN="your-api-token"
|
||||
--BAISHANCDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--BAISHANCDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--BAISHANCDN_APITOKEN="your-api-token"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -34,7 +34,7 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client := bytepluscdn.NewInstance()
|
||||
@@ -48,15 +48,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -79,8 +79,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
PageSize: bytepluscdn.GetInt64Ptr(int64(listCertInfoPageSize)),
|
||||
Source: bytepluscdn.GetStrPtr("cert_center"),
|
||||
}
|
||||
listCertInfoResp, err := m.sdkClient.ListCertInfo(listCertInfoReq)
|
||||
m.logger.Debug("sdk request 'cdn.ListCertInfo'", slog.Any("request", listCertInfoReq), slog.Any("response", listCertInfoResp))
|
||||
listCertInfoResp, err := c.sdkClient.ListCertInfo(listCertInfoReq)
|
||||
c.logger.Debug("sdk request 'cdn.ListCertInfo'", slog.Any("request", listCertInfoReq), slog.Any("response", listCertInfoResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cdn.ListCertInfo': %w", err)
|
||||
}
|
||||
@@ -99,7 +99,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: certItem.CertId,
|
||||
CertName: certItem.Desc,
|
||||
@@ -124,8 +124,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
Source: bytepluscdn.GetStrPtr("cert_center"),
|
||||
Desc: bytepluscdn.GetStrPtr(certName),
|
||||
}
|
||||
addCertificateResp, err := m.sdkClient.AddCertificate(addCertificateReq)
|
||||
m.logger.Debug("sdk request 'cdn.AddCertificate'", slog.Any("request", addCertificateReq), slog.Any("response", addCertificateResp))
|
||||
addCertificateResp, err := c.sdkClient.AddCertificate(addCertificateReq)
|
||||
c.logger.Debug("sdk request 'cdn.AddCertificate'", slog.Any("request", addCertificateReq), slog.Any("response", addCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cdn.AddCertificate': %w", err)
|
||||
}
|
||||
@@ -135,3 +135,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
CertName: certName,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
@@ -33,12 +33,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -48,15 +48,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -80,8 +80,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
PerPage: lo.ToPtr(int32(listCertPerPage)),
|
||||
UsageMode: lo.ToPtr(int32(0)),
|
||||
}
|
||||
listCertsResp, err := m.sdkClient.ListCerts(listCertsReq)
|
||||
m.logger.Debug("sdk request 'ao.ListCerts'", slog.Any("request", listCertsReq), slog.Any("response", listCertsResp))
|
||||
listCertsResp, err := c.sdkClient.ListCerts(listCertsReq)
|
||||
c.logger.Debug("sdk request 'ao.ListCerts'", slog.Any("request", listCertsReq), slog.Any("response", listCertsResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'ao.ListCerts': %w", err)
|
||||
}
|
||||
@@ -112,8 +112,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
queryCertReq := &ctyunao.QueryCertRequest{
|
||||
Id: lo.ToPtr(certItem.Id),
|
||||
}
|
||||
queryCertResp, err := m.sdkClient.QueryCert(queryCertReq)
|
||||
m.logger.Debug("sdk request 'ao.QueryCert'", slog.Any("request", queryCertReq), slog.Any("response", queryCertResp))
|
||||
queryCertResp, err := c.sdkClient.QueryCert(queryCertReq)
|
||||
c.logger.Debug("sdk request 'ao.QueryCert'", slog.Any("request", queryCertReq), slog.Any("response", queryCertResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'ao.QueryCert': %w", err)
|
||||
} else if queryCertResp.ReturnObj != nil && queryCertResp.ReturnObj.Result != nil {
|
||||
@@ -123,7 +123,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: fmt.Sprintf("%d", queryCertResp.ReturnObj.Result.Id),
|
||||
CertName: queryCertResp.ReturnObj.Result.Name,
|
||||
@@ -147,8 +147,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
Certs: lo.ToPtr(certPEM),
|
||||
Key: lo.ToPtr(privkeyPEM),
|
||||
}
|
||||
createCertResp, err := m.sdkClient.CreateCert(createCertReq)
|
||||
m.logger.Debug("sdk request 'ao.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
createCertResp, err := c.sdkClient.CreateCert(createCertReq)
|
||||
c.logger.Debug("sdk request 'ao.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'ao.CreateCert': %w", err)
|
||||
}
|
||||
@@ -159,6 +159,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, secretAccessKey string) (*ctyunao.Client, error) {
|
||||
return ctyunao.NewClient(accessKeyId, secretAccessKey)
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_CTCCCLOUDAO_"
|
||||
argsPrefix := "CTCCCLOUDAO_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./ctcccloud_ao_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDAO_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDAO_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDAO_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDAO_SECRETACCESSKEY="your-secret-access-key"
|
||||
--CTCCCLOUDAO_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CTCCCLOUDAO_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CTCCCLOUDAO_ACCESSKEYID="your-access-key-id" \
|
||||
--CTCCCLOUDAO_SECRETACCESSKEY="your-secret-access-key"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -33,12 +33,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -48,15 +48,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -80,8 +80,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
PerPage: lo.ToPtr(int32(queryCertListPerPage)),
|
||||
UsageMode: lo.ToPtr(int32(0)),
|
||||
}
|
||||
queryCertListResp, err := m.sdkClient.QueryCertList(queryCertListReq)
|
||||
m.logger.Debug("sdk request 'cdn.QueryCertList'", slog.Any("request", queryCertListReq), slog.Any("response", queryCertListResp))
|
||||
queryCertListResp, err := c.sdkClient.QueryCertList(queryCertListReq)
|
||||
c.logger.Debug("sdk request 'cdn.QueryCertList'", slog.Any("request", queryCertListReq), slog.Any("response", queryCertListResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cdn.QueryCertList': %w", err)
|
||||
}
|
||||
@@ -112,8 +112,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
queryCertDetailReq := &ctyuncdn.QueryCertDetailRequest{
|
||||
Id: lo.ToPtr(certItem.Id),
|
||||
}
|
||||
queryCertDetailResp, err := m.sdkClient.QueryCertDetail(queryCertDetailReq)
|
||||
m.logger.Debug("sdk request 'cdn.QueryCertDetail'", slog.Any("request", queryCertDetailReq), slog.Any("response", queryCertDetailResp))
|
||||
queryCertDetailResp, err := c.sdkClient.QueryCertDetail(queryCertDetailReq)
|
||||
c.logger.Debug("sdk request 'cdn.QueryCertDetail'", slog.Any("request", queryCertDetailReq), slog.Any("response", queryCertDetailResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cdn.QueryCertDetail': %w", err)
|
||||
} else if queryCertDetailResp.ReturnObj != nil && queryCertDetailResp.ReturnObj.Result != nil {
|
||||
@@ -123,7 +123,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: fmt.Sprintf("%d", queryCertDetailResp.ReturnObj.Result.Id),
|
||||
CertName: queryCertDetailResp.ReturnObj.Result.Name,
|
||||
@@ -147,8 +147,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
Certs: lo.ToPtr(certPEM),
|
||||
Key: lo.ToPtr(privkeyPEM),
|
||||
}
|
||||
createCertResp, err := m.sdkClient.CreateCert(createCertReq)
|
||||
m.logger.Debug("sdk request 'cdn.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
createCertResp, err := c.sdkClient.CreateCert(createCertReq)
|
||||
c.logger.Debug("sdk request 'cdn.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cdn.CreateCert': %w", err)
|
||||
}
|
||||
@@ -159,6 +159,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, secretAccessKey string) (*ctyuncdn.Client, error) {
|
||||
return ctyuncdn.NewClient(accessKeyId, secretAccessKey)
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_CTCCCLOUDCDN_"
|
||||
argsPrefix := "CTCCCLOUDCDN_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./ctcccloud_cdn_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDCDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDCDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDCDN_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDCDN_SECRETACCESSKEY="your-secret-access-key"
|
||||
--CTCCCLOUDCDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CTCCCLOUDCDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CTCCCLOUDCDN_ACCESSKEYID="your-access-key-id" \
|
||||
--CTCCCLOUDCDN_SECRETACCESSKEY="your-secret-access-key"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -34,12 +34,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -49,21 +49,21 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 避免重复上传
|
||||
if res, err := m.tryFindCert(ctx, certPEM); err != nil {
|
||||
if upres, upok, err := c.tryGetResultIfCertExists(ctx, certPEM); err != nil {
|
||||
return nil, err
|
||||
} else if res != nil {
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
return res, nil
|
||||
} else if upok {
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return upres, nil
|
||||
}
|
||||
|
||||
// 提取服务器证书
|
||||
@@ -84,17 +84,17 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
PrivateKey: lo.ToPtr(privkeyPEM),
|
||||
EncryptionStandard: lo.ToPtr("INTERNATIONAL"),
|
||||
}
|
||||
uploadCertificateResp, err := m.sdkClient.UploadCertificate(uploadCertificateReq)
|
||||
m.logger.Debug("sdk request 'cms.UploadCertificate'", slog.Any("request", uploadCertificateReq), slog.Any("response", uploadCertificateResp))
|
||||
uploadCertificateResp, err := c.sdkClient.UploadCertificate(uploadCertificateReq)
|
||||
c.logger.Debug("sdk request 'cms.UploadCertificate'", slog.Any("request", uploadCertificateReq), slog.Any("response", uploadCertificateResp))
|
||||
if err != nil {
|
||||
if uploadCertificateResp != nil && uploadCertificateResp.GetError() == "CCMS_100000067" {
|
||||
if res, err := m.tryFindCert(ctx, certPEM); err != nil {
|
||||
if upres, upok, err := c.tryGetResultIfCertExists(ctx, certPEM); err != nil {
|
||||
return nil, err
|
||||
} else if res == nil {
|
||||
} else if !upok {
|
||||
return nil, errors.New("ctyun cms: no certificate found")
|
||||
} else {
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
return res, nil
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return upres, nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,20 +102,24 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 获取刚刚上传证书 ID
|
||||
if res, err := m.tryFindCert(ctx, certPEM); err != nil {
|
||||
if upres, upok, err := c.tryGetResultIfCertExists(ctx, certPEM); err != nil {
|
||||
return nil, err
|
||||
} else if res == nil {
|
||||
} else if !upok {
|
||||
return nil, fmt.Errorf("could not find ssl certificate, may be upload failed")
|
||||
} else {
|
||||
return res, nil
|
||||
return upres, nil
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM string) (*certmgr.UploadResult, bool, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, false, err
|
||||
}
|
||||
|
||||
// 查询用户证书列表
|
||||
@@ -125,7 +129,7 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return nil, ctx.Err()
|
||||
return nil, false, ctx.Err()
|
||||
default:
|
||||
}
|
||||
|
||||
@@ -135,10 +139,10 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
Keyword: lo.ToPtr(certX509.Subject.CommonName),
|
||||
Origin: lo.ToPtr("UPLOAD"),
|
||||
}
|
||||
getCertificateListResp, err := m.sdkClient.GetCertificateList(getCertificateListReq)
|
||||
m.logger.Debug("sdk request 'cms.GetCertificateList'", slog.Any("request", getCertificateListReq), slog.Any("response", getCertificateListResp))
|
||||
getCertificateListResp, err := c.sdkClient.GetCertificateList(getCertificateListReq)
|
||||
c.logger.Debug("sdk request 'cms.GetCertificateList'", slog.Any("request", getCertificateListReq), slog.Any("response", getCertificateListResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cms.GetCertificateList': %w", err)
|
||||
return nil, false, fmt.Errorf("failed to execute sdk request 'cms.GetCertificateList': %w", err)
|
||||
}
|
||||
|
||||
if getCertificateListResp.ReturnObj == nil {
|
||||
@@ -168,11 +172,11 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: certItem.Id,
|
||||
CertName: certItem.Name,
|
||||
}, nil
|
||||
}, true, nil
|
||||
}
|
||||
|
||||
if len(getCertificateListResp.ReturnObj.List) < getCertificateListPageSize {
|
||||
@@ -182,7 +186,7 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
getCertificateListPageNum++
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
return nil, false, nil
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, secretAccessKey string) (*ctyuncms.Client, error) {
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_CTCCCLOUDCMS_"
|
||||
argsPrefix := "CTCCCLOUDCMS_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./ctcccloud_cms_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDCMS_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDCMS_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDCMS_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDCMS_SECRETACCESSKEY="your-secret-access-key"
|
||||
--CTCCCLOUDCMS_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CTCCCLOUDCMS_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CTCCCLOUDCMS_ACCESSKEYID="your-access-key-id" \
|
||||
--CTCCCLOUDCMS_SECRETACCESSKEY="your-secret-access-key"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -34,12 +34,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -49,29 +49,29 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 查询证书列表,避免重复上传
|
||||
// REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=24&api=5692&data=88&isNormal=1&vid=82
|
||||
listCertificatesReq := &ctyunelb.ListCertificatesRequest{
|
||||
RegionID: lo.ToPtr(m.config.RegionId),
|
||||
RegionID: lo.ToPtr(c.config.RegionId),
|
||||
}
|
||||
listCertificatesResp, err := m.sdkClient.ListCertificates(listCertificatesReq)
|
||||
m.logger.Debug("sdk request 'elb.ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
|
||||
listCertificatesResp, err := c.sdkClient.ListCertificates(listCertificatesReq)
|
||||
c.logger.Debug("sdk request 'elb.ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'elb.ListCertificates': %w", err)
|
||||
} else {
|
||||
for _, certItem := range listCertificatesResp.ReturnObj {
|
||||
// 如果已存在相同证书,直接返回
|
||||
if xcert.EqualCertificatesFromPEM(certPEM, certItem.Certificate) {
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: certItem.ID,
|
||||
CertName: certItem.Name,
|
||||
@@ -87,15 +87,15 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
// REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=24&api=5685&data=88&isNormal=1&vid=82
|
||||
createCertificateReq := &ctyunelb.CreateCertificateRequest{
|
||||
ClientToken: lo.ToPtr(security.RandomString(32)),
|
||||
RegionID: lo.ToPtr(m.config.RegionId),
|
||||
RegionID: lo.ToPtr(c.config.RegionId),
|
||||
Name: lo.ToPtr(certName),
|
||||
Description: lo.ToPtr("upload from certimate"),
|
||||
Type: lo.ToPtr("Server"),
|
||||
Certificate: lo.ToPtr(certPEM),
|
||||
PrivateKey: lo.ToPtr(privkeyPEM),
|
||||
}
|
||||
createCertificateResp, err := m.sdkClient.CreateCertificate(createCertificateReq)
|
||||
m.logger.Debug("sdk request 'elb.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||
createCertificateResp, err := c.sdkClient.CreateCertificate(createCertificateReq)
|
||||
c.logger.Debug("sdk request 'elb.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'elb.CreateCertificate': %w", err)
|
||||
}
|
||||
@@ -106,6 +106,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, secretAccessKey string) (*ctyunelb.Client, error) {
|
||||
return ctyunelb.NewClient(accessKeyId, secretAccessKey)
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_CTCCCLOUDELB_"
|
||||
argsPrefix := "CTCCCLOUDELB_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -34,11 +34,11 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./ctcccloud_elb_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDELB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDELB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDELB_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDELB_SECRETACCESSKEY="your-secret-access-key" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDELB_REGIONID="your-region-id"
|
||||
--CTCCCLOUDELB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CTCCCLOUDELB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CTCCCLOUDELB_ACCESSKEYID="your-access-key-id" \
|
||||
--CTCCCLOUDELB_SECRETACCESSKEY="your-secret-access-key" \
|
||||
--CTCCCLOUDELB_REGIONID="your-region-id"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -33,12 +33,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -48,15 +48,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -80,8 +80,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
PerPage: lo.ToPtr(int32(queryCertListPerPage)),
|
||||
UsageMode: lo.ToPtr(int32(0)),
|
||||
}
|
||||
queryCertListResp, err := m.sdkClient.QueryCertList(queryCertListReq)
|
||||
m.logger.Debug("sdk request 'icdn.QueryCertList'", slog.Any("request", queryCertListReq), slog.Any("response", queryCertListResp))
|
||||
queryCertListResp, err := c.sdkClient.QueryCertList(queryCertListReq)
|
||||
c.logger.Debug("sdk request 'icdn.QueryCertList'", slog.Any("request", queryCertListReq), slog.Any("response", queryCertListResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'icdn.QueryCertList': %w", err)
|
||||
}
|
||||
@@ -112,8 +112,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
queryCertDetailReq := &ctyunicdn.QueryCertDetailRequest{
|
||||
Id: lo.ToPtr(certItem.Id),
|
||||
}
|
||||
queryCertDetailResp, err := m.sdkClient.QueryCertDetail(queryCertDetailReq)
|
||||
m.logger.Debug("sdk request 'icdn.QueryCertDetail'", slog.Any("request", queryCertDetailReq), slog.Any("response", queryCertDetailResp))
|
||||
queryCertDetailResp, err := c.sdkClient.QueryCertDetail(queryCertDetailReq)
|
||||
c.logger.Debug("sdk request 'icdn.QueryCertDetail'", slog.Any("request", queryCertDetailReq), slog.Any("response", queryCertDetailResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'icdn.QueryCertDetail': %w", err)
|
||||
} else if queryCertDetailResp.ReturnObj != nil && queryCertDetailResp.ReturnObj.Result != nil {
|
||||
@@ -123,7 +123,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: fmt.Sprintf("%d", queryCertDetailResp.ReturnObj.Result.Id),
|
||||
CertName: queryCertDetailResp.ReturnObj.Result.Name,
|
||||
@@ -147,8 +147,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
Certs: lo.ToPtr(certPEM),
|
||||
Key: lo.ToPtr(privkeyPEM),
|
||||
}
|
||||
createCertResp, err := m.sdkClient.CreateCert(createCertReq)
|
||||
m.logger.Debug("sdk request 'icdn.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
createCertResp, err := c.sdkClient.CreateCert(createCertReq)
|
||||
c.logger.Debug("sdk request 'icdn.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'icdn.CreateCert': %w", err)
|
||||
}
|
||||
@@ -159,6 +159,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, secretAccessKey string) (*ctyunicdn.Client, error) {
|
||||
return ctyunicdn.NewClient(accessKeyId, secretAccessKey)
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_CTCCCLOUDICDN_"
|
||||
argsPrefix := "CTCCCLOUDICDN_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./ctcccloud_icdn_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDICDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDICDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDICDN_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDICDN_SECRETACCESSKEY="your-secret-access-key"
|
||||
--CTCCCLOUDICDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CTCCCLOUDICDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CTCCCLOUDICDN_ACCESSKEYID="your-access-key-id" \
|
||||
--CTCCCLOUDICDN_SECRETACCESSKEY="your-secret-access-key"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -33,12 +33,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -48,15 +48,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -80,8 +80,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
PerPage: lo.ToPtr(int32(queryCertListPerPage)),
|
||||
UsageMode: lo.ToPtr(int32(0)),
|
||||
}
|
||||
queryCertListResp, err := m.sdkClient.QueryCertList(queryCertListReq)
|
||||
m.logger.Debug("sdk request 'lvdn.QueryCertList'", slog.Any("request", queryCertListReq), slog.Any("response", queryCertListResp))
|
||||
queryCertListResp, err := c.sdkClient.QueryCertList(queryCertListReq)
|
||||
c.logger.Debug("sdk request 'lvdn.QueryCertList'", slog.Any("request", queryCertListReq), slog.Any("response", queryCertListResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'lvdn.QueryCertList': %w", err)
|
||||
}
|
||||
@@ -112,8 +112,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
queryCertDetailReq := &ctyunlvdn.QueryCertDetailRequest{
|
||||
Id: lo.ToPtr(certItem.Id),
|
||||
}
|
||||
queryCertDetailResp, err := m.sdkClient.QueryCertDetail(queryCertDetailReq)
|
||||
m.logger.Debug("sdk request 'lvdn.QueryCertDetail'", slog.Any("request", queryCertDetailReq), slog.Any("response", queryCertDetailResp))
|
||||
queryCertDetailResp, err := c.sdkClient.QueryCertDetail(queryCertDetailReq)
|
||||
c.logger.Debug("sdk request 'lvdn.QueryCertDetail'", slog.Any("request", queryCertDetailReq), slog.Any("response", queryCertDetailResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'lvdn.QueryCertDetail': %w", err)
|
||||
} else if queryCertDetailResp.ReturnObj != nil && queryCertDetailResp.ReturnObj.Result != nil {
|
||||
@@ -123,7 +123,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: fmt.Sprintf("%d", queryCertDetailResp.ReturnObj.Result.Id),
|
||||
CertName: queryCertDetailResp.ReturnObj.Result.Name,
|
||||
@@ -147,8 +147,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
Certs: lo.ToPtr(certPEM),
|
||||
Key: lo.ToPtr(privkeyPEM),
|
||||
}
|
||||
createCertResp, err := m.sdkClient.CreateCert(createCertReq)
|
||||
m.logger.Debug("sdk request 'lvdn.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
createCertResp, err := c.sdkClient.CreateCert(createCertReq)
|
||||
c.logger.Debug("sdk request 'lvdn.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'lvdn.CreateCert': %w", err)
|
||||
}
|
||||
@@ -159,6 +159,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, secretAccessKey string) (*ctyunlvdn.Client, error) {
|
||||
return ctyunlvdn.NewClient(accessKeyId, secretAccessKey)
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_CTCCCLOUDLVDN_"
|
||||
argsPrefix := "CTCCCLOUDLVDN_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./ctcccloud_lvdn_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDLVDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDLVDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDLVDN_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_CTCCCLOUDLVDN_SECRETACCESSKEY="your-secret-access-key"
|
||||
--CTCCCLOUDLVDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CTCCCLOUDLVDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CTCCCLOUDLVDN_ACCESSKEYID="your-access-key-id" \
|
||||
--CTCCCLOUDLVDN_SECRETACCESSKEY="your-secret-access-key"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -28,12 +28,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKey, config.SecretKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -43,15 +43,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 生成新证书名(需符合多吉云命名规则)
|
||||
certName := fmt.Sprintf("certimate-%d", time.Now().UnixMilli())
|
||||
|
||||
@@ -62,8 +62,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
Certificate: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
}
|
||||
uploadSslCertResp, err := m.sdkClient.UploadCdnCert(uploadSslCertReq)
|
||||
m.logger.Debug("sdk request 'cdn.UploadCdnCert'", slog.Any("request", uploadSslCertReq), slog.Any("response", uploadSslCertResp))
|
||||
uploadSslCertResp, err := c.sdkClient.UploadCdnCert(uploadSslCertReq)
|
||||
c.logger.Debug("sdk request 'cdn.UploadCdnCert'", slog.Any("request", uploadSslCertReq), slog.Any("response", uploadSslCertResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cdn.UploadCdnCert': %w", err)
|
||||
}
|
||||
@@ -74,6 +74,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKey, secretKey string) (*dogesdk.Client, error) {
|
||||
return dogesdk.NewClient(accessKey, secretKey)
|
||||
}
|
||||
|
||||
@@ -29,12 +29,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.ApiToken)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -44,15 +44,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 新增证书
|
||||
// REF: https://api.gcore.com/docs/cdn#tag/SSL-certificates/operation/add_ssl_certificates
|
||||
createCertificateReq := &sslcerts.CreateRequest{
|
||||
@@ -62,8 +62,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
Automated: false,
|
||||
ValidateRootCA: false,
|
||||
}
|
||||
createCertificateResp, err := m.sdkClient.Create(ctx, createCertificateReq)
|
||||
m.logger.Debug("sdk request 'sslcerts.Create'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||
createCertificateResp, err := c.sdkClient.Create(ctx, createCertificateReq)
|
||||
c.logger.Debug("sdk request 'sslcerts.Create'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslcerts.Create': %w", err)
|
||||
}
|
||||
@@ -74,6 +74,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(apiToken string) (*sslcerts.Service, error) {
|
||||
if apiToken == "" {
|
||||
return nil, errors.New("invalid gcore api token")
|
||||
|
||||
@@ -43,12 +43,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -58,15 +58,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 查询已有证书,避免重复上传
|
||||
// REF: https://support.huaweicloud.com/api-elb/ListCertificates.html
|
||||
listCertificatesMarker := (*string)(nil)
|
||||
@@ -82,8 +82,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
Limit: lo.ToPtr(int32(2000)),
|
||||
Type: lo.ToPtr([]string{"server"}),
|
||||
}
|
||||
listCertificatesResp, err := m.sdkClient.ListCertificates(listCertificatesReq)
|
||||
m.logger.Debug("sdk request 'elb.ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
|
||||
listCertificatesResp, err := c.sdkClient.ListCertificates(listCertificatesReq)
|
||||
c.logger.Debug("sdk request 'elb.ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'elb.ListCertificates': %w", err)
|
||||
}
|
||||
@@ -95,7 +95,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
for _, certItem := range *listCertificatesResp.Certificates {
|
||||
// 如果已存在相同证书,直接返回
|
||||
if xcert.EqualCertificatesFromPEM(certPEM, certItem.Certificate) {
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: certItem.Id,
|
||||
CertName: certItem.Name,
|
||||
@@ -112,7 +112,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
|
||||
// 获取项目 ID
|
||||
// REF: https://support.huaweicloud.com/api-iam/iam_06_0001.html
|
||||
projectId, err := getSdkProjectId(m.config.AccessKeyId, m.config.SecretAccessKey, m.config.Region)
|
||||
projectId, err := getSdkProjectId(c.config.AccessKeyId, c.config.SecretAccessKey, c.config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get SDK project id: %w", err)
|
||||
}
|
||||
@@ -125,7 +125,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
createCertificateReq := &hcelbmodel.CreateCertificateRequest{
|
||||
Body: &hcelbmodel.CreateCertificateRequestBody{
|
||||
Certificate: &hcelbmodel.CreateCertificateOption{
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId),
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(c.config.EnterpriseProjectId),
|
||||
ProjectId: lo.ToPtr(projectId),
|
||||
Name: lo.ToPtr(certName),
|
||||
Certificate: lo.ToPtr(certPEM),
|
||||
@@ -133,8 +133,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
},
|
||||
},
|
||||
}
|
||||
createCertificateResp, err := m.sdkClient.CreateCertificate(createCertificateReq)
|
||||
m.logger.Debug("sdk request 'elb.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||
createCertificateResp, err := c.sdkClient.CreateCertificate(createCertificateReq)
|
||||
c.logger.Debug("sdk request 'elb.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'elb.CreateCertificate': %w", err)
|
||||
}
|
||||
@@ -145,7 +145,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
// 更新证书
|
||||
// REF: https://support.huaweicloud.com/api-elb/UpdateCertificate.html
|
||||
updateCertificateReq := &hcelbmodel.UpdateCertificateRequest{
|
||||
@@ -157,8 +157,8 @@ func (m *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri
|
||||
},
|
||||
},
|
||||
}
|
||||
updateCertificateResp, err := m.sdkClient.UpdateCertificate(updateCertificateReq)
|
||||
m.logger.Debug("sdk request 'elb.UpdateCertificate'", slog.Any("request", updateCertificateReq), slog.Any("response", updateCertificateResp))
|
||||
updateCertificateResp, err := c.sdkClient.UpdateCertificate(updateCertificateReq)
|
||||
c.logger.Debug("sdk request 'elb.UpdateCertificate'", slog.Any("request", updateCertificateReq), slog.Any("response", updateCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'elb.UpdateCertificate': %w", err)
|
||||
}
|
||||
|
||||
@@ -40,12 +40,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -55,15 +55,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -83,14 +83,14 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
listCertificatesReq := &hcscmmodel.ListCertificatesRequest{
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId),
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(c.config.EnterpriseProjectId),
|
||||
Limit: lo.ToPtr(int32(listCertificatesLimit)),
|
||||
Offset: lo.ToPtr(int32(listCertificatesOffset)),
|
||||
SortDir: lo.ToPtr("DESC"),
|
||||
SortKey: lo.ToPtr("certExpiredTime"),
|
||||
}
|
||||
listCertificatesResp, err := m.sdkClient.ListCertificates(listCertificatesReq)
|
||||
m.logger.Debug("sdk request 'scm.ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
|
||||
listCertificatesResp, err := c.sdkClient.ListCertificates(listCertificatesReq)
|
||||
c.logger.Debug("sdk request 'scm.ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'scm.ListCertificates': %w", err)
|
||||
}
|
||||
@@ -114,8 +114,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
exportCertificateReq := &hcscmmodel.ExportCertificateRequest{
|
||||
CertificateId: certItem.Id,
|
||||
}
|
||||
exportCertificateResp, err := m.sdkClient.ExportCertificate(exportCertificateReq)
|
||||
m.logger.Debug("sdk request 'scm.ExportCertificate'", slog.Any("request", exportCertificateReq), slog.Any("response", exportCertificateResp))
|
||||
exportCertificateResp, err := c.sdkClient.ExportCertificate(exportCertificateReq)
|
||||
c.logger.Debug("sdk request 'scm.ExportCertificate'", slog.Any("request", exportCertificateReq), slog.Any("response", exportCertificateResp))
|
||||
if err != nil {
|
||||
if exportCertificateResp != nil && exportCertificateResp.HttpStatusCode == 404 {
|
||||
continue
|
||||
@@ -128,7 +128,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: certItem.Id,
|
||||
CertName: certItem.Name,
|
||||
@@ -149,14 +149,14 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
// REF: https://support.huaweicloud.com/api-ccm/ImportCertificate.html
|
||||
importCertificateReq := &hcscmmodel.ImportCertificateRequest{
|
||||
Body: &hcscmmodel.ImportCertificateRequestBody{
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId),
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(c.config.EnterpriseProjectId),
|
||||
Name: certName,
|
||||
Certificate: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
},
|
||||
}
|
||||
importCertificateResp, err := m.sdkClient.ImportCertificate(importCertificateReq)
|
||||
m.logger.Debug("sdk request 'scm.ImportCertificate'", slog.Any("request", importCertificateReq), slog.Any("response", importCertificateResp))
|
||||
importCertificateResp, err := c.sdkClient.ImportCertificate(importCertificateReq)
|
||||
c.logger.Debug("sdk request 'scm.ImportCertificate'", slog.Any("request", importCertificateReq), slog.Any("response", importCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'scm.ImportCertificate': %w", err)
|
||||
}
|
||||
@@ -167,6 +167,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, secretAccessKey, region string) (*internal.ScmClient, error) {
|
||||
if region == "" {
|
||||
region = "cn-north-4" // SCM 服务默认区域:华北四北京
|
||||
|
||||
@@ -43,12 +43,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -58,15 +58,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 查询已有证书,避免重复上传
|
||||
// REF: https://support.huaweicloud.com/api-waf/ListCertificates.html
|
||||
// REF: https://support.huaweicloud.com/api-waf/ShowCertificate.html
|
||||
@@ -80,12 +80,12 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
listCertificatesReq := &hcwafmodel.ListCertificatesRequest{
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId),
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(c.config.EnterpriseProjectId),
|
||||
Page: lo.ToPtr(int32(listCertificatesPage)),
|
||||
Pagesize: lo.ToPtr(int32(listCertificatesPageSize)),
|
||||
}
|
||||
listCertificatesResp, err := m.sdkClient.ListCertificates(listCertificatesReq)
|
||||
m.logger.Debug("sdk request 'waf.ShowCertificate'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
|
||||
listCertificatesResp, err := c.sdkClient.ListCertificates(listCertificatesReq)
|
||||
c.logger.Debug("sdk request 'waf.ShowCertificate'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'waf.ListCertificates': %w", err)
|
||||
}
|
||||
@@ -96,18 +96,18 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
|
||||
for _, certItem := range *listCertificatesResp.Items {
|
||||
showCertificateReq := &hcwafmodel.ShowCertificateRequest{
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId),
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(c.config.EnterpriseProjectId),
|
||||
CertificateId: certItem.Id,
|
||||
}
|
||||
showCertificateResp, err := m.sdkClient.ShowCertificate(showCertificateReq)
|
||||
m.logger.Debug("sdk request 'waf.ShowCertificate'", slog.Any("request", showCertificateReq), slog.Any("response", showCertificateResp))
|
||||
showCertificateResp, err := c.sdkClient.ShowCertificate(showCertificateReq)
|
||||
c.logger.Debug("sdk request 'waf.ShowCertificate'", slog.Any("request", showCertificateReq), slog.Any("response", showCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'waf.ShowCertificate': %w", err)
|
||||
}
|
||||
|
||||
// 如果已存在相同证书,直接返回
|
||||
if xcert.EqualCertificatesFromPEM(certPEM, lo.FromPtr(showCertificateResp.Content)) {
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: certItem.Id,
|
||||
CertName: certItem.Name,
|
||||
@@ -128,15 +128,15 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
// 创建证书
|
||||
// REF: https://support.huaweicloud.com/api-waf/CreateCertificate.html
|
||||
createCertificateReq := &hcwafmodel.CreateCertificateRequest{
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId),
|
||||
EnterpriseProjectId: lo.EmptyableToPtr(c.config.EnterpriseProjectId),
|
||||
Body: &hcwafmodel.CreateCertificateRequestBody{
|
||||
Name: certName,
|
||||
Content: certPEM,
|
||||
Key: privkeyPEM,
|
||||
},
|
||||
}
|
||||
createCertificateResp, err := m.sdkClient.CreateCertificate(createCertificateReq)
|
||||
m.logger.Debug("sdk request 'waf.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||
createCertificateResp, err := c.sdkClient.CreateCertificate(createCertificateReq)
|
||||
c.logger.Debug("sdk request 'waf.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'waf.CreateCertificate': %w", err)
|
||||
}
|
||||
@@ -147,6 +147,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, secretAccessKey, region string) (*internal.WafClient, error) {
|
||||
projectId, err := getSdkProjectId(accessKeyId, secretAccessKey, region)
|
||||
if err != nil {
|
||||
|
||||
@@ -35,12 +35,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -50,15 +50,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -86,8 +86,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
describeCertsReq.SetDomainName(certX509.Subject.CommonName)
|
||||
describeCertsReq.SetPageNumber(describeCertsPageNumber)
|
||||
describeCertsReq.SetPageSize(describeCertsPageSize)
|
||||
describeCertsResp, err := m.sdkClient.DescribeCerts(describeCertsReq)
|
||||
m.logger.Debug("sdk request 'ssl.DescribeCerts'", slog.Any("request", describeCertsReq), slog.Any("response", describeCertsResp))
|
||||
describeCertsResp, err := c.sdkClient.DescribeCerts(describeCertsReq)
|
||||
c.logger.Debug("sdk request 'ssl.DescribeCerts'", slog.Any("request", describeCertsReq), slog.Any("response", describeCertsResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'ssl.DescribeCerts': %w", err)
|
||||
}
|
||||
@@ -118,7 +118,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: certItem.CertId,
|
||||
CertName: certItem.CertName,
|
||||
@@ -141,8 +141,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
uploadCertReq.SetCertName(certName)
|
||||
uploadCertReq.SetCertFile(certPEM)
|
||||
uploadCertReq.SetKeyFile(privkeyPEM)
|
||||
uploadCertResp, err := m.sdkClient.UploadCert(uploadCertReq)
|
||||
m.logger.Debug("sdk request 'ssl.UploadCertificate'", slog.Any("request", uploadCertReq), slog.Any("response", uploadCertResp))
|
||||
uploadCertResp, err := c.sdkClient.UploadCert(uploadCertReq)
|
||||
c.logger.Debug("sdk request 'ssl.UploadCertificate'", slog.Any("request", uploadCertReq), slog.Any("response", uploadCertResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'ssl.UploadCertificate': %w", err)
|
||||
}
|
||||
@@ -153,6 +153,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, accessKeySecret string) (*jdsslclient.SslClient, error) {
|
||||
clientCredentials := jdcore.NewCredentials(accessKeyId, accessKeySecret)
|
||||
client := jdsslclient.NewSslClient(clientCredentials)
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_JDCLOUDSSL_"
|
||||
argsPrefix := "JDCLOUDSSL_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./jdcloud_ssl_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_JDCLOUDSSL_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_JDCLOUDSSL_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_JDCLOUDSSL_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_JDCLOUDSSL_ACCESSKEYSECRET="your-access-key-secret"
|
||||
--JDCLOUDSSL_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--JDCLOUDSSL_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--JDCLOUDSSL_ACCESSKEYID="your-access-key-id" \
|
||||
--JDCLOUDSSL_ACCESSKEYSECRET="your-access-key-secret"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -34,12 +34,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKey, config.SecretKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -49,15 +49,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -76,8 +76,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
default:
|
||||
}
|
||||
|
||||
getSslCertListResp, err := m.sdkClient.GetSslCertList(ctx, getSslCertListMarker, 200)
|
||||
m.logger.Debug("sdk request 'sslcert.GetList'", slog.Any("request.marker", getSslCertListMarker), slog.Any("response", getSslCertListResp))
|
||||
getSslCertListResp, err := c.sdkClient.GetSslCertList(ctx, getSslCertListMarker, 200)
|
||||
c.logger.Debug("sdk request 'sslcert.GetList'", slog.Any("request.marker", getSslCertListMarker), slog.Any("response", getSslCertListResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslcert.GetList': %w", err)
|
||||
}
|
||||
@@ -118,7 +118,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: sslItem.CertID,
|
||||
CertName: sslItem.Name,
|
||||
@@ -134,8 +134,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
|
||||
// 上传新证书
|
||||
// REF: https://developer.qiniu.com/fusion/8593/interface-related-certificate
|
||||
uploadSslCertResp, err := m.sdkClient.UploadSslCert(ctx, certName, certX509.Subject.CommonName, certPEM, privkeyPEM)
|
||||
m.logger.Debug("sdk request 'sslcert.Upload'", slog.Any("response", uploadSslCertResp))
|
||||
uploadSslCertResp, err := c.sdkClient.UploadSslCert(ctx, certName, certX509.Subject.CommonName, certPEM, privkeyPEM)
|
||||
c.logger.Debug("sdk request 'sslcert.Upload'", slog.Any("response", uploadSslCertResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslcert.Upload': %w", err)
|
||||
}
|
||||
@@ -146,6 +146,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKey, secretKey string) (*qiniusdk.SslCertManager, error) {
|
||||
if secretKey == "" {
|
||||
return nil, errors.New("invalid qiniu access key")
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_QINIUSSLCERT_"
|
||||
argsPrefix := "QINIUSSLCERT_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./qiniu_sslcert_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_QINIUSSLCERT_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_QINIUSSLCERT_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_QINIUSSLCERT_ACCESSKEY="your-access-key" \
|
||||
--CERTIMATE_SSLMANAGER_QINIUSSLCERT_SECRETKEY="your-secret-key"
|
||||
--QINIUSSLCERT_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--QINIUSSLCERT_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--QINIUSSLCERT_ACCESSKEY="your-access-key" \
|
||||
--QINIUSSLCERT_SECRETKEY="your-secret-key"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -30,12 +30,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.ApiKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -45,21 +45,21 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 避免重复上传
|
||||
if res, err := m.tryFindCert(ctx, certPEM); err != nil {
|
||||
if upres, upok, err := c.tryGetResultIfCertExists(ctx, certPEM); err != nil {
|
||||
return nil, err
|
||||
} else if res != nil {
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
return res, nil
|
||||
} else if upok {
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return upres, nil
|
||||
}
|
||||
|
||||
// SSL 证书上传
|
||||
@@ -68,23 +68,23 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert
|
||||
Cert: certPEM,
|
||||
Key: privkeyPEM,
|
||||
}
|
||||
sslCenterCreateResp, err := m.sdkClient.SslCenterCreate(sslCenterCreateReq)
|
||||
m.logger.Debug("sdk request 'sslcenter.Create'", slog.Any("request", sslCenterCreateReq), slog.Any("response", sslCenterCreateResp))
|
||||
sslCenterCreateResp, err := c.sdkClient.SslCenterCreate(sslCenterCreateReq)
|
||||
c.logger.Debug("sdk request 'sslcenter.Create'", slog.Any("request", sslCenterCreateReq), slog.Any("response", sslCenterCreateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslcenter.Create': %w", err)
|
||||
}
|
||||
|
||||
// 获取刚刚上传证书 ID
|
||||
if res, err := m.tryFindCert(ctx, certPEM); err != nil {
|
||||
if upres, upok, err := c.tryGetResultIfCertExists(ctx, certPEM); err != nil {
|
||||
return nil, err
|
||||
} else if res == nil {
|
||||
} else if !upok {
|
||||
return nil, errors.New("could not find ssl certificate, may be upload failed")
|
||||
} else {
|
||||
return res, nil
|
||||
return upres, nil
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
certId, err := strconv.ParseInt(certIdOrName, 10, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -96,8 +96,8 @@ func (m *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri
|
||||
Cert: certPEM,
|
||||
Key: privkeyPEM,
|
||||
}
|
||||
sslCenterUpdateResp, err := m.sdkClient.SslCenterUpdate(certId, sslCenterUpdateReq)
|
||||
m.logger.Debug("sdk request 'sslcenter.Update'", slog.Int64("certId", certId), slog.Any("request", sslCenterUpdateReq), slog.Any("response", sslCenterUpdateResp))
|
||||
sslCenterUpdateResp, err := c.sdkClient.SslCenterUpdate(certId, sslCenterUpdateReq)
|
||||
c.logger.Debug("sdk request 'sslcenter.Update'", slog.Int64("certId", certId), slog.Any("request", sslCenterUpdateReq), slog.Any("response", sslCenterUpdateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslcenter.Update': %w", err)
|
||||
}
|
||||
@@ -105,11 +105,11 @@ func (m *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri
|
||||
return &certmgr.OperateResult{}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM string) (*certmgr.UploadResult, bool, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, false, err
|
||||
}
|
||||
|
||||
// 获取 SSL 证书列表
|
||||
@@ -120,7 +120,7 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return nil, ctx.Err()
|
||||
return nil, false, ctx.Err()
|
||||
default:
|
||||
}
|
||||
|
||||
@@ -131,10 +131,10 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
Page: lo.ToPtr(int32(sslCenterListPage)),
|
||||
PerPage: lo.ToPtr(int32(sslCenterListPerPage)),
|
||||
}
|
||||
sslCenterListResp, err := m.sdkClient.SslCenterList(sslCenterListReq)
|
||||
m.logger.Debug("sdk request 'sslcenter.List'", slog.Any("request", sslCenterListReq), slog.Any("response", sslCenterListResp))
|
||||
sslCenterListResp, err := c.sdkClient.SslCenterList(sslCenterListReq)
|
||||
c.logger.Debug("sdk request 'sslcenter.List'", slog.Any("request", sslCenterListReq), slog.Any("response", sslCenterListResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslcenter.List': %w", err)
|
||||
return nil, false, fmt.Errorf("failed to execute sdk request 'sslcenter.List': %w", err)
|
||||
}
|
||||
|
||||
if sslCenterListResp.Data == nil {
|
||||
@@ -153,9 +153,9 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
}
|
||||
|
||||
// 对比证书内容
|
||||
sslCenterGetResp, err := m.sdkClient.SslCenterGet(sslItem.ID)
|
||||
sslCenterGetResp, err := c.sdkClient.SslCenterGet(sslItem.ID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslcenter.Get': %w", err)
|
||||
return nil, false, fmt.Errorf("failed to execute sdk request 'sslcenter.Get': %w", err)
|
||||
} else {
|
||||
if !xcert.EqualCertificatesFromPEM(certPEM, sslCenterGetResp.Data.Cert) {
|
||||
continue
|
||||
@@ -165,7 +165,7 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
return &certmgr.UploadResult{
|
||||
CertId: fmt.Sprintf("%d", sslItem.ID),
|
||||
}, nil
|
||||
}, true, nil
|
||||
}
|
||||
|
||||
if len(sslCenterListResp.Data.Records) < sslCenterListPerPage {
|
||||
@@ -175,7 +175,7 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
sslCenterListPage++
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
return nil, false, nil
|
||||
}
|
||||
|
||||
func createSDKClient(apiKey string) (*rainyunsdk.Client, error) {
|
||||
|
||||
@@ -19,7 +19,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_RAINYUNSSLCENTER_"
|
||||
argsPrefix := "RAINYUNSSLCENTER_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -30,9 +30,9 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./rainyun_sslcenter_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_RAINYUNSSLCENTER_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_RAINYUNSSLCENTER_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_RAINYUNSSLCENTER_APIKEY="your-api-key"
|
||||
--RAINYUNSSLCENTER_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--RAINYUNSSLCENTER_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--RAINYUNSSLCENTER_APIKEY="your-api-key"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -33,12 +33,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.SecretId, config.SecretKey, config.Endpoint)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -48,23 +48,23 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 上传新证书
|
||||
// REF: https://cloud.tencent.com/document/api/400/41665
|
||||
uploadCertificateReq := tcssl.NewUploadCertificateRequest()
|
||||
uploadCertificateReq.CertificatePublicKey = common.StringPtr(certPEM)
|
||||
uploadCertificateReq.CertificatePrivateKey = common.StringPtr(privkeyPEM)
|
||||
uploadCertificateReq.Repeatable = common.BoolPtr(false)
|
||||
uploadCertificateResp, err := m.sdkClient.UploadCertificate(uploadCertificateReq)
|
||||
m.logger.Debug("sdk request 'ssl.UploadCertificate'", slog.Any("request", uploadCertificateReq), slog.Any("response", uploadCertificateResp))
|
||||
uploadCertificateResp, err := c.sdkClient.UploadCertificate(uploadCertificateReq)
|
||||
c.logger.Debug("sdk request 'ssl.UploadCertificate'", slog.Any("request", uploadCertificateReq), slog.Any("response", uploadCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'ssl.UploadCertificate': %w", err)
|
||||
}
|
||||
@@ -74,6 +74,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(secretId, secretKey, endpoint string) (*internal.SslClient, error) {
|
||||
credential := common.NewCredential(secretId, secretKey)
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_TENCENTCLOUDSSL_"
|
||||
argsPrefix := "TENCENTCLOUDSSL_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./tencentcloud_ssl_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_TENCENTCLOUDSSL_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_TENCENTCLOUDSSL_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_TENCENTCLOUDSSL_SECRETID="your-secret-id" \
|
||||
--CERTIMATE_SSLMANAGER_TENCENTCLOUDSSL_SECRETKEY="your-secret-key"
|
||||
--TENCENTCLOUDSSL_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--TENCENTCLOUDSSL_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--TENCENTCLOUDSSL_SECRETID="your-secret-id" \
|
||||
--TENCENTCLOUDSSL_SECRETKEY="your-secret-key"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -16,7 +16,7 @@ import (
|
||||
ucloudauth "github.com/ucloud/ucloud-sdk-go/ucloud/auth"
|
||||
|
||||
"github.com/certimate-go/certimate/pkg/core/certmgr"
|
||||
usslsdk "github.com/certimate-go/certimate/pkg/sdk3rd/ucloud/ussl"
|
||||
ucloudssl "github.com/certimate-go/certimate/pkg/sdk3rd/ucloud/ussl"
|
||||
xcert "github.com/certimate-go/certimate/pkg/utils/cert"
|
||||
)
|
||||
|
||||
@@ -32,19 +32,19 @@ type CertmgrConfig struct {
|
||||
type Certmgr struct {
|
||||
config *CertmgrConfig
|
||||
logger *slog.Logger
|
||||
sdkClient *usslsdk.USSLClient
|
||||
sdkClient *ucloudssl.USSLClient
|
||||
}
|
||||
|
||||
var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.PrivateKey, config.PublicKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -54,15 +54,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 生成新证书名(需符合优刻得命名规则)
|
||||
certName := fmt.Sprintf("certimate-%d", time.Now().UnixMilli())
|
||||
|
||||
@@ -74,25 +74,25 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
|
||||
// 上传托管证书
|
||||
// REF: https://docs.ucloud.cn/api/usslcertificate-api/upload_normal_certificate
|
||||
uploadNormalCertificateReq := m.sdkClient.NewUploadNormalCertificateRequest()
|
||||
uploadNormalCertificateReq := c.sdkClient.NewUploadNormalCertificateRequest()
|
||||
uploadNormalCertificateReq.CertificateName = ucloud.String(certName)
|
||||
uploadNormalCertificateReq.SslPublicKey = ucloud.String(certPEMBase64)
|
||||
uploadNormalCertificateReq.SslPrivateKey = ucloud.String(privkeyPEMBase64)
|
||||
uploadNormalCertificateReq.SslMD5 = ucloud.String(certMd5Hex)
|
||||
if m.config.ProjectId != "" {
|
||||
uploadNormalCertificateReq.ProjectId = ucloud.String(m.config.ProjectId)
|
||||
if c.config.ProjectId != "" {
|
||||
uploadNormalCertificateReq.ProjectId = ucloud.String(c.config.ProjectId)
|
||||
}
|
||||
uploadNormalCertificateResp, err := m.sdkClient.UploadNormalCertificate(uploadNormalCertificateReq)
|
||||
m.logger.Debug("sdk request 'ussl.UploadNormalCertificate'", slog.Any("request", uploadNormalCertificateReq), slog.Any("response", uploadNormalCertificateResp))
|
||||
uploadNormalCertificateResp, err := c.sdkClient.UploadNormalCertificate(uploadNormalCertificateReq)
|
||||
c.logger.Debug("sdk request 'ussl.UploadNormalCertificate'", slog.Any("request", uploadNormalCertificateReq), slog.Any("response", uploadNormalCertificateResp))
|
||||
if err != nil {
|
||||
if uploadNormalCertificateResp != nil && uploadNormalCertificateResp.GetRetCode() == 80035 {
|
||||
if res, err := m.tryFindCert(ctx, certPEM); err != nil {
|
||||
if upres, upok, err := c.tryGetResultIfCertExists(ctx, certPEM); err != nil {
|
||||
return nil, err
|
||||
} else if res == nil {
|
||||
} else if !upok {
|
||||
return nil, errors.New("could not find ssl certificate, may be upload failed")
|
||||
} else {
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
return res, nil
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return upres, nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,11 +108,15 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM string) (*certmgr.UploadResult, bool, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, false, err
|
||||
}
|
||||
|
||||
// 查询用户证书列表
|
||||
@@ -123,23 +127,23 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return nil, ctx.Err()
|
||||
return nil, false, ctx.Err()
|
||||
default:
|
||||
}
|
||||
|
||||
getCertificateListReq := m.sdkClient.NewGetCertificateListRequest()
|
||||
getCertificateListReq := c.sdkClient.NewGetCertificateListRequest()
|
||||
getCertificateListReq.Mode = ucloud.String("trust")
|
||||
getCertificateListReq.Domain = ucloud.String(certX509.Subject.CommonName)
|
||||
getCertificateListReq.Sort = ucloud.String("2")
|
||||
getCertificateListReq.Page = ucloud.Int(getCertificateListPage)
|
||||
getCertificateListReq.PageSize = ucloud.Int(getCertificateListLimit)
|
||||
if m.config.ProjectId != "" {
|
||||
getCertificateListReq.ProjectId = ucloud.String(m.config.ProjectId)
|
||||
if c.config.ProjectId != "" {
|
||||
getCertificateListReq.ProjectId = ucloud.String(c.config.ProjectId)
|
||||
}
|
||||
getCertificateListResp, err := m.sdkClient.GetCertificateList(getCertificateListReq)
|
||||
m.logger.Debug("sdk request 'ussl.GetCertificateList'", slog.Any("request", getCertificateListReq), slog.Any("response", getCertificateListResp))
|
||||
getCertificateListResp, err := c.sdkClient.GetCertificateList(getCertificateListReq)
|
||||
c.logger.Debug("sdk request 'ussl.GetCertificateList'", slog.Any("request", getCertificateListReq), slog.Any("response", getCertificateListResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'ussl.GetCertificateList': %w", err)
|
||||
return nil, false, fmt.Errorf("failed to execute sdk request 'ussl.GetCertificateList': %w", err)
|
||||
}
|
||||
|
||||
for _, certItem := range getCertificateListResp.CertificateList {
|
||||
@@ -158,14 +162,14 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
continue
|
||||
}
|
||||
|
||||
getCertificateDetailInfoReq := m.sdkClient.NewGetCertificateDetailInfoRequest()
|
||||
getCertificateDetailInfoReq := c.sdkClient.NewGetCertificateDetailInfoRequest()
|
||||
getCertificateDetailInfoReq.CertificateID = ucloud.Int(certItem.CertificateID)
|
||||
if m.config.ProjectId != "" {
|
||||
getCertificateDetailInfoReq.ProjectId = ucloud.String(m.config.ProjectId)
|
||||
if c.config.ProjectId != "" {
|
||||
getCertificateDetailInfoReq.ProjectId = ucloud.String(c.config.ProjectId)
|
||||
}
|
||||
getCertificateDetailInfoResp, err := m.sdkClient.GetCertificateDetailInfo(getCertificateDetailInfoReq)
|
||||
getCertificateDetailInfoResp, err := c.sdkClient.GetCertificateDetailInfo(getCertificateDetailInfoReq)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'ussl.GetCertificateDetailInfo': %w", err)
|
||||
return nil, false, fmt.Errorf("failed to execute sdk request 'ussl.GetCertificateDetailInfo': %w", err)
|
||||
}
|
||||
|
||||
switch certX509.SignatureAlgorithm {
|
||||
@@ -216,7 +220,7 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
ExtendedData: map[string]any{
|
||||
"ResourceId": certItem.CertificateSN,
|
||||
},
|
||||
}, nil
|
||||
}, true, nil
|
||||
}
|
||||
|
||||
if len(getCertificateListResp.CertificateList) < getCertificateListLimit {
|
||||
@@ -226,16 +230,16 @@ func (m *Certmgr) tryFindCert(ctx context.Context, certPEM string) (*certmgr.Upl
|
||||
getCertificateListPage++
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
return nil, false, nil
|
||||
}
|
||||
|
||||
func createSDKClient(privateKey, publicKey string) (*usslsdk.USSLClient, error) {
|
||||
func createSDKClient(privateKey, publicKey string) (*ucloudssl.USSLClient, error) {
|
||||
cfg := ucloud.NewConfig()
|
||||
|
||||
credential := ucloudauth.NewCredential()
|
||||
credential.PrivateKey = privateKey
|
||||
credential.PublicKey = publicKey
|
||||
|
||||
client := usslsdk.NewClient(&cfg, &credential)
|
||||
client := ucloudssl.NewClient(&cfg, &credential)
|
||||
return client, nil
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_UCLOUDUSSL_"
|
||||
argsPrefix := "UCLOUDUSSL_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./ucloud_ussl_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_UCLOUDUSSL_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_UCLOUDUSSL_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_UCLOUDUSSL_PRIVATEKEY="your-private-key" \
|
||||
--CERTIMATE_SSLMANAGER_UCLOUDUSSL_PUBLICKEY="your-public-key"
|
||||
--UCLOUDUSSL_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--UCLOUDUSSL_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--UCLOUDUSSL_PRIVATEKEY="your-private-key" \
|
||||
--UCLOUDUSSL_PUBLICKEY="your-public-key"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -27,12 +27,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.Username, config.Password)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -42,22 +42,22 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 上传证书
|
||||
uploadHttpsCertificateReq := &upyunsdk.UploadHttpsCertificateRequest{
|
||||
Certificate: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
}
|
||||
uploadHttpsCertificateResp, err := m.sdkClient.UploadHttpsCertificate(uploadHttpsCertificateReq)
|
||||
m.logger.Debug("sdk request 'console.UploadHttpsCertificate'", slog.Any("response", uploadHttpsCertificateResp))
|
||||
uploadHttpsCertificateResp, err := c.sdkClient.UploadHttpsCertificate(uploadHttpsCertificateReq)
|
||||
c.logger.Debug("sdk request 'console.UploadHttpsCertificate'", slog.Any("response", uploadHttpsCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'console.UploadHttpsCertificate': %w", err)
|
||||
}
|
||||
@@ -67,6 +67,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(username, password string) (*upyunsdk.Client, error) {
|
||||
return upyunsdk.NewClient(username, password)
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_UPYUNSSL_"
|
||||
argsPrefix := "UPYUNSSL_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./upyun_ssl_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_UPYUNSSL_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_UPYUNSSL_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_UPYUNSSL_USERNAME="your-username" \
|
||||
--CERTIMATE_SSLMANAGER_UPYUNSSL_PASSWORD="your-password"
|
||||
--UPYUNSSL_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--UPYUNSSL_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--UPYUNSSL_USERNAME="your-username" \
|
||||
--UPYUNSSL_PASSWORD="your-password"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -37,12 +37,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -52,15 +52,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -83,8 +83,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
PageNum: ve.Int32(int32(listCertInfoPageNum)),
|
||||
PageSize: ve.Int32(int32(listCertInfoPageSize)),
|
||||
}
|
||||
listCertInfoResp, err := m.sdkClient.ListCertInfo(listCertInfoReq)
|
||||
m.logger.Debug("sdk request 'cdn.ListCertInfo'", slog.Any("request", listCertInfoReq), slog.Any("response", listCertInfoResp))
|
||||
listCertInfoResp, err := c.sdkClient.ListCertInfo(listCertInfoReq)
|
||||
c.logger.Debug("sdk request 'cdn.ListCertInfo'", slog.Any("request", listCertInfoReq), slog.Any("response", listCertInfoResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cdn.ListCertInfo': %w", err)
|
||||
}
|
||||
@@ -103,7 +103,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: ve.StringValue(certItem.CertId),
|
||||
CertName: ve.StringValue(certItem.Desc),
|
||||
@@ -128,8 +128,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
PrivateKey: ve.String(privkeyPEM),
|
||||
Desc: ve.String(certName),
|
||||
}
|
||||
addCertificateResp, err := m.sdkClient.AddCertificate(addCertificateReq)
|
||||
m.logger.Debug("sdk request 'cdn.AddCertificate'", slog.Any("request", addCertificateResp), slog.Any("response", addCertificateResp))
|
||||
addCertificateResp, err := c.sdkClient.AddCertificate(addCertificateReq)
|
||||
c.logger.Debug("sdk request 'cdn.AddCertificate'", slog.Any("request", addCertificateResp), slog.Any("response", addCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'cdn.AddCertificate': %w", err)
|
||||
}
|
||||
@@ -140,6 +140,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, accessKeySecret string) (*internal.CdnClient, error) {
|
||||
config := ve.NewConfig().
|
||||
WithAkSk(accessKeyId, accessKeySecret)
|
||||
|
||||
@@ -33,12 +33,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -48,15 +48,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 上传证书
|
||||
// REF: https://www.volcengine.com/docs/6638/1365580
|
||||
importCertificateReq := &vecs.ImportCertificateInput{
|
||||
@@ -66,8 +66,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
},
|
||||
Repeatable: ve.Bool(false),
|
||||
}
|
||||
importCertificateResp, err := m.sdkClient.ImportCertificate(importCertificateReq)
|
||||
m.logger.Debug("sdk request 'certcenter.ImportCertificate'", slog.Any("request", importCertificateReq), slog.Any("response", importCertificateResp))
|
||||
importCertificateResp, err := c.sdkClient.ImportCertificate(importCertificateReq)
|
||||
c.logger.Debug("sdk request 'certcenter.ImportCertificate'", slog.Any("request", importCertificateReq), slog.Any("response", importCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'certcenter.ImportCertificate': %w", err)
|
||||
}
|
||||
@@ -89,6 +89,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, accessKeySecret, region string) (*internal.CertificateserviceClient, error) {
|
||||
if region == "" {
|
||||
region = "cn-beijing" // 证书中心默认区域:北京
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_VOLCENGINECERTCENTER_"
|
||||
argsPrefix := "VOLCENGINECERTCENTER_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./volcengine_certcenter_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_VOLCENGINECERTCENTER_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_VOLCENGINECERTCENTER_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_VOLCENGINECERTCENTER_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_VOLCENGINECERTCENTER_ACCESSKEYSECRET="your-access-key-secret"
|
||||
--VOLCENGINECERTCENTER_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--VOLCENGINECERTCENTER_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--VOLCENGINECERTCENTER_ACCESSKEYID="your-access-key-id" \
|
||||
--VOLCENGINECERTCENTER_ACCESSKEYSECRET="your-access-key-secret"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -32,7 +32,7 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client := velive.NewInstance()
|
||||
@@ -46,20 +46,20 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 查询证书列表,避免重复上传
|
||||
// REF: https://www.volcengine.com/docs/6469/1186278#%E6%9F%A5%E8%AF%A2%E8%AF%81%E4%B9%A6%E5%88%97%E8%A1%A8
|
||||
listCertReq := &velive.ListCertV2Body{}
|
||||
listCertResp, err := m.sdkClient.ListCertV2(ctx, listCertReq)
|
||||
m.logger.Debug("sdk request 'live.ListCertV2'", slog.Any("request", listCertReq), slog.Any("response", listCertResp))
|
||||
listCertResp, err := c.sdkClient.ListCertV2(ctx, listCertReq)
|
||||
c.logger.Debug("sdk request 'live.ListCertV2'", slog.Any("request", listCertReq), slog.Any("response", listCertResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'live.ListCertV2': %w", err)
|
||||
}
|
||||
@@ -70,8 +70,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
describeCertDetailSecretReq := &velive.DescribeCertDetailSecretV2Body{
|
||||
ChainID: ve.String(certItem.ChainID),
|
||||
}
|
||||
describeCertDetailSecretResp, err := m.sdkClient.DescribeCertDetailSecretV2(ctx, describeCertDetailSecretReq)
|
||||
m.logger.Debug("sdk request 'live.DescribeCertDetailSecretV2'", slog.Any("request", describeCertDetailSecretReq), slog.Any("response", describeCertDetailSecretResp))
|
||||
describeCertDetailSecretResp, err := c.sdkClient.DescribeCertDetailSecretV2(ctx, describeCertDetailSecretReq)
|
||||
c.logger.Debug("sdk request 'live.DescribeCertDetailSecretV2'", slog.Any("request", describeCertDetailSecretReq), slog.Any("response", describeCertDetailSecretResp))
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
@@ -79,7 +79,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
// 如果已存在相同证书,直接返回
|
||||
oldCertPEM := strings.Join(describeCertDetailSecretResp.Result.SSL.Chain, "\n\n")
|
||||
if xcert.EqualCertificatesFromPEM(certPEM, oldCertPEM) {
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: certItem.ChainID,
|
||||
CertName: certItem.CertName,
|
||||
@@ -101,8 +101,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
},
|
||||
UseWay: "https",
|
||||
}
|
||||
createCertResp, err := m.sdkClient.CreateCert(ctx, createCertReq)
|
||||
m.logger.Debug("sdk request 'live.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
createCertResp, err := c.sdkClient.CreateCert(ctx, createCertReq)
|
||||
c.logger.Debug("sdk request 'live.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'live.CreateCert': %w", err)
|
||||
}
|
||||
@@ -112,3 +112,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
CertName: certName,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
@@ -33,12 +33,12 @@ var _ certmgr.Provider = (*Certmgr)(nil)
|
||||
|
||||
func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl manager provider is nil")
|
||||
return nil, errors.New("the configuration of the certmgr provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Certmgr{
|
||||
@@ -48,15 +48,15 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (m *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
if logger == nil {
|
||||
m.logger = slog.New(slog.DiscardHandler)
|
||||
c.logger = slog.New(slog.DiscardHandler)
|
||||
} else {
|
||||
m.logger = logger
|
||||
c.logger = logger
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*certmgr.UploadResult, error) {
|
||||
// 解析证书内容
|
||||
certX509, err := xcert.ParseCertificateFromPEM(certPEM)
|
||||
if err != nil {
|
||||
@@ -65,8 +65,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
|
||||
// 查询证书列表,避免重复上传
|
||||
// REF: https://www.wangsu.com/document/api-doc/22675?productCode=certificatemanagement
|
||||
listCertificatesResp, err := m.sdkClient.ListCertificates()
|
||||
m.logger.Debug("sdk request 'certificatemanagement.ListCertificates'", slog.Any("response", listCertificatesResp))
|
||||
listCertificatesResp, err := c.sdkClient.ListCertificates()
|
||||
c.logger.Debug("sdk request 'certificatemanagement.ListCertificates'", slog.Any("response", listCertificatesResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'certificatemanagement.ListCertificates': %w", err)
|
||||
}
|
||||
@@ -87,7 +87,7 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}
|
||||
|
||||
// 如果以上信息都一致,则视为已存在相同证书,直接返回
|
||||
m.logger.Info("ssl certificate already exists")
|
||||
c.logger.Info("ssl certificate already exists")
|
||||
return &certmgr.UploadResult{
|
||||
CertId: certItem.CertificateId,
|
||||
CertName: certItem.Name,
|
||||
@@ -106,8 +106,8 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
PrivateKey: lo.ToPtr(privkeyPEM),
|
||||
Comment: lo.ToPtr("upload from certimate"),
|
||||
}
|
||||
createCertificateResp, err := m.sdkClient.CreateCertificate(createCertificateReq)
|
||||
m.logger.Debug("sdk request 'certificatemanagement.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||
createCertificateResp, err := c.sdkClient.CreateCertificate(createCertificateReq)
|
||||
c.logger.Debug("sdk request 'certificatemanagement.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'certificatemanagement.CreateCertificate': %w", err)
|
||||
}
|
||||
@@ -126,6 +126,10 @@ func (m *Certmgr) Upload(ctx context.Context, certPEM string, privkeyPEM string)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*certmgr.OperateResult, error) {
|
||||
return nil, certmgr.ErrUnsupported
|
||||
}
|
||||
|
||||
func createSDKClient(accessKeyId, accessKeySecret string) (*wangsusdk.Client, error) {
|
||||
return wangsusdk.NewClient(accessKeyId, accessKeySecret)
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLMANAGER_WANGSUCERTIFICATE_"
|
||||
argsPrefix := "WANGSUCERTIFICATE_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -32,10 +32,10 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./wangsu_certificate_test.go -args \
|
||||
--CERTIMATE_SSLMANAGER_WANGSUCERTIFICATE_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLMANAGER_WANGSUCERTIFICATE_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLMANAGER_WANGSUCERTIFICATE_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLMANAGER_WANGSUCERTIFICATE_ACCESSKEYSECRET="your-access-key-secret"
|
||||
--WANGSUCERTIFICATE_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--WANGSUCERTIFICATE_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--WANGSUCERTIFICATE_ACCESSKEYID="your-access-key-id" \
|
||||
--WANGSUCERTIFICATE_ACCESSKEYSECRET="your-access-key-secret"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -23,7 +23,7 @@ type Provider interface {
|
||||
// 出参:
|
||||
// - res:部署结果。
|
||||
// - err: 错误。
|
||||
Deploy(ctx context.Context, certPEM string, privkeyPEM string) (_res *DeployResult, _err error)
|
||||
Deploy(ctx context.Context, certPEM, privkeyPEM string) (_res *DeployResult, _err error)
|
||||
}
|
||||
|
||||
// 表示 SSL 证书部署结果的数据结构。
|
||||
|
||||
@@ -9,8 +9,8 @@ import (
|
||||
"strconv"
|
||||
|
||||
"github.com/certimate-go/certimate/pkg/core/deployer"
|
||||
opsdk "github.com/certimate-go/certimate/pkg/sdk3rd/1panel"
|
||||
opsdkv2 "github.com/certimate-go/certimate/pkg/sdk3rd/1panel/v2"
|
||||
onepanelsdk "github.com/certimate-go/certimate/pkg/sdk3rd/1panel"
|
||||
onepanelsdk2 "github.com/certimate-go/certimate/pkg/sdk3rd/1panel/v2"
|
||||
)
|
||||
|
||||
type DeployerConfig struct {
|
||||
@@ -37,12 +37,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.ServerUrl, config.ApiVersion, config.ApiKey, config.AllowInsecureConnections)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -60,43 +60,43 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 设置面板 SSL 证书
|
||||
switch sdkClient := d.sdkClient.(type) {
|
||||
case *opsdk.Client:
|
||||
case *onepanelsdk.Client:
|
||||
{
|
||||
updateSettingsSSLReq := &opsdk.UpdateSettingsSSLRequest{
|
||||
settingsSSLUpdateReq := &onepanelsdk.SettingsSSLUpdateRequest{
|
||||
Cert: certPEM,
|
||||
Key: privkeyPEM,
|
||||
SSL: "enable",
|
||||
SSLType: "import-paste",
|
||||
AutoRestart: strconv.FormatBool(d.config.AutoRestart),
|
||||
}
|
||||
updateSystemSSLResp, err := sdkClient.UpdateSettingsSSL(updateSettingsSSLReq)
|
||||
d.logger.Debug("sdk request '1panel.UpdateSettingsSSL'", slog.Any("request", updateSettingsSSLReq), slog.Any("response", updateSystemSSLResp))
|
||||
settingsSSLUpdateResp, err := sdkClient.SettingsSSLUpdate(settingsSSLUpdateReq)
|
||||
d.logger.Debug("sdk request '1panel.SettingsSSLUpdate'", slog.Any("request", settingsSSLUpdateReq), slog.Any("response", settingsSSLUpdateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.UpdateSettingsSSL': %w", err)
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.SettingsSSLUpdate': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
case *opsdkv2.Client:
|
||||
case *onepanelsdk2.Client:
|
||||
{
|
||||
updateCoreSettingsSSLReq := &opsdkv2.UpdateCoreSettingsSSLRequest{
|
||||
coreSettingsSSLUpdateReq := &onepanelsdk2.CoreSettingsSSLUpdateRequest{
|
||||
Cert: certPEM,
|
||||
Key: privkeyPEM,
|
||||
SSL: "Enable",
|
||||
SSLType: "import-paste",
|
||||
AutoRestart: strconv.FormatBool(d.config.AutoRestart),
|
||||
}
|
||||
updateCoreSystemSSLResp, err := sdkClient.UpdateCoreSettingsSSL(updateCoreSettingsSSLReq)
|
||||
d.logger.Debug("sdk request '1panel.UpdateCoreSettingsSSL'", slog.Any("request", updateCoreSettingsSSLReq), slog.Any("response", updateCoreSystemSSLResp))
|
||||
coreSettingsSSLUpdateResp, err := sdkClient.CoreSettingsSSLUpdate(coreSettingsSSLUpdateReq)
|
||||
d.logger.Debug("sdk request '1panel.CoreSettingsSSLUpdate'", slog.Any("request", coreSettingsSSLUpdateReq), slog.Any("response", coreSettingsSSLUpdateResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.UpdateCoreSettingsSSL': %w", err)
|
||||
return nil, fmt.Errorf("failed to execute sdk request '1panel.CoreSettingsSSLUpdate': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
panic("sdk client is not implemented")
|
||||
panic("unreachable")
|
||||
}
|
||||
|
||||
return &deployer.DeployResult{}, nil
|
||||
@@ -109,7 +109,7 @@ const (
|
||||
|
||||
func createSDKClient(serverUrl, apiVersion, apiKey string, skipTlsVerify bool) (any, error) {
|
||||
if apiVersion == sdkVersionV1 {
|
||||
client, err := opsdk.NewClient(serverUrl, apiKey)
|
||||
client, err := onepanelsdk.NewClient(serverUrl, apiKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -120,7 +120,7 @@ func createSDKClient(serverUrl, apiVersion, apiKey string, skipTlsVerify bool) (
|
||||
|
||||
return client, nil
|
||||
} else if apiVersion == sdkVersionV2 {
|
||||
client, err := opsdkv2.NewClient(serverUrl, apiKey)
|
||||
client, err := onepanelsdk2.NewClient(serverUrl, apiKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_1PANELCONSOLE_"
|
||||
argsPrefix := "1PANELCONSOLE_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -33,11 +33,11 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./1panel_console_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_1PANELCONSOLE_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_1PANELCONSOLE_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_1PANELCONSOLE_SERVERURL="http://127.0.0.1:20410" \
|
||||
--CERTIMATE_SSLDEPLOYER_1PANELCONSOLE_APIVERSION="v1" \
|
||||
--CERTIMATE_SSLDEPLOYER_1PANELCONSOLE_APIKEY="your-api-key"
|
||||
--1PANELCONSOLE_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--1PANELCONSOLE_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--1PANELCONSOLE_SERVERURL="http://127.0.0.1:20410" \
|
||||
--1PANELCONSOLE_APIVERSION="v1" \
|
||||
--1PANELCONSOLE_APIKEY="your-api-key"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -9,10 +9,10 @@ import (
|
||||
"strconv"
|
||||
|
||||
"github.com/certimate-go/certimate/pkg/core/certmgr"
|
||||
mcertmgr "github.com/certimate-go/certimate/pkg/core/certmgr/providers/1panel-ssl"
|
||||
mcertmgr "github.com/certimate-go/certimate/pkg/core/certmgr/providers/1panel"
|
||||
"github.com/certimate-go/certimate/pkg/core/deployer"
|
||||
opsdk "github.com/certimate-go/certimate/pkg/sdk3rd/1panel"
|
||||
opsdkv2 "github.com/certimate-go/certimate/pkg/sdk3rd/1panel/v2"
|
||||
onepanelsdk "github.com/certimate-go/certimate/pkg/sdk3rd/1panel"
|
||||
onepanelsdk2 "github.com/certimate-go/certimate/pkg/sdk3rd/1panel/v2"
|
||||
)
|
||||
|
||||
type DeployerConfig struct {
|
||||
@@ -49,12 +49,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.ServerUrl, config.ApiVersion, config.ApiKey, config.AllowInsecureConnections, config.NodeName)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -64,7 +64,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
AllowInsecureConnections: config.AllowInsecureConnections,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -85,7 +85,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 根据部署资源类型决定部署方式
|
||||
switch d.config.ResourceType {
|
||||
case RESOURCE_TYPE_WEBSITE:
|
||||
@@ -105,7 +105,7 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string
|
||||
return &deployer.DeployResult{}, nil
|
||||
}
|
||||
|
||||
func (d *Deployer) deployToWebsite(ctx context.Context, certPEM string, privkeyPEM string) error {
|
||||
func (d *Deployer) deployToWebsite(ctx context.Context, certPEM, privkeyPEM string) error {
|
||||
if d.config.WebsiteId == 0 {
|
||||
return errors.New("config `websiteId` is required")
|
||||
}
|
||||
@@ -119,125 +119,80 @@ func (d *Deployer) deployToWebsite(ctx context.Context, certPEM string, privkeyP
|
||||
}
|
||||
|
||||
switch sdkClient := d.sdkClient.(type) {
|
||||
case *opsdk.Client:
|
||||
case *onepanelsdk.Client:
|
||||
{
|
||||
// 获取网站 HTTPS 配置
|
||||
getHttpsConfResp, err := sdkClient.GetHttpsConf(d.config.WebsiteId)
|
||||
d.logger.Debug("sdk request '1panel.GetHttpsConf'", slog.Int64("websiteId", d.config.WebsiteId), slog.Any("response", getHttpsConfResp))
|
||||
websiteHttpsGetResp, err := sdkClient.WebsiteHttpsGet(d.config.WebsiteId)
|
||||
d.logger.Debug("sdk request '1panel.WebsiteHttpsGet'", slog.Int64("websiteId", d.config.WebsiteId), slog.Any("response", websiteHttpsGetResp))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.GetHttpsConf': %w", err)
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.WebsiteHttpsGet': %w", err)
|
||||
}
|
||||
|
||||
// 修改网站 HTTPS 配置
|
||||
certId, _ := strconv.ParseInt(upres.CertId, 10, 64)
|
||||
updateHttpsConfReq := &opsdk.UpdateHttpsConfRequest{
|
||||
sslId, _ := strconv.ParseInt(upres.CertId, 10, 64)
|
||||
websiteHttpsPostReq := &onepanelsdk.WebsiteHttpsPostRequest{
|
||||
WebsiteID: d.config.WebsiteId,
|
||||
Type: "existed",
|
||||
WebsiteSSLID: certId,
|
||||
Enable: getHttpsConfResp.Data.Enable,
|
||||
HttpConfig: getHttpsConfResp.Data.HttpConfig,
|
||||
SSLProtocol: getHttpsConfResp.Data.SSLProtocol,
|
||||
Algorithm: getHttpsConfResp.Data.Algorithm,
|
||||
Hsts: getHttpsConfResp.Data.Hsts,
|
||||
WebsiteSSLID: sslId,
|
||||
Enable: websiteHttpsGetResp.Data.Enable,
|
||||
HttpConfig: websiteHttpsGetResp.Data.HttpConfig,
|
||||
SSLProtocol: websiteHttpsGetResp.Data.SSLProtocol,
|
||||
Algorithm: websiteHttpsGetResp.Data.Algorithm,
|
||||
Hsts: websiteHttpsGetResp.Data.Hsts,
|
||||
}
|
||||
updateHttpsConfResp, err := sdkClient.UpdateHttpsConf(d.config.WebsiteId, updateHttpsConfReq)
|
||||
d.logger.Debug("sdk request '1panel.UpdateHttpsConf'", slog.Int64("websiteId", d.config.WebsiteId), slog.Any("request", updateHttpsConfReq), slog.Any("response", updateHttpsConfResp))
|
||||
websiteHttpsPostResp, err := sdkClient.WebsiteHttpsPost(d.config.WebsiteId, websiteHttpsPostReq)
|
||||
d.logger.Debug("sdk request '1panel.WebsiteHttpsPost'", slog.Int64("websiteId", d.config.WebsiteId), slog.Any("request", websiteHttpsPostReq), slog.Any("response", websiteHttpsPostResp))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.UpdateHttpsConf': %w", err)
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.WebsiteHttpsPost': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
case *opsdkv2.Client:
|
||||
case *onepanelsdk2.Client:
|
||||
{
|
||||
// 获取网站 HTTPS 配置
|
||||
getHttpsConfResp, err := sdkClient.GetHttpsConf(d.config.WebsiteId)
|
||||
d.logger.Debug("sdk request '1panel.GetHttpsConf'", slog.Int64("websiteId", d.config.WebsiteId), slog.Any("response", getHttpsConfResp))
|
||||
websiteHttpsGetResp, err := sdkClient.WebsiteHttpsGet(d.config.WebsiteId)
|
||||
d.logger.Debug("sdk request '1panel.WebsiteHttpsGet'", slog.Int64("websiteId", d.config.WebsiteId), slog.Any("response", websiteHttpsGetResp))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.GetHttpsConf': %w", err)
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.WebsiteHttpsGet': %w", err)
|
||||
}
|
||||
|
||||
// 修改网站 HTTPS 配置
|
||||
certId, _ := strconv.ParseInt(upres.CertId, 10, 64)
|
||||
updateHttpsConfReq := &opsdkv2.UpdateHttpsConfRequest{
|
||||
sslId, _ := strconv.ParseInt(upres.CertId, 10, 64)
|
||||
websiteHttpsPostReq := &onepanelsdk2.WebsiteHttpsPostRequest{
|
||||
WebsiteID: d.config.WebsiteId,
|
||||
Type: "existed",
|
||||
WebsiteSSLID: certId,
|
||||
Enable: getHttpsConfResp.Data.Enable,
|
||||
HttpConfig: getHttpsConfResp.Data.HttpConfig,
|
||||
SSLProtocol: getHttpsConfResp.Data.SSLProtocol,
|
||||
Algorithm: getHttpsConfResp.Data.Algorithm,
|
||||
Hsts: getHttpsConfResp.Data.Hsts,
|
||||
WebsiteSSLID: sslId,
|
||||
Enable: websiteHttpsGetResp.Data.Enable,
|
||||
HttpConfig: websiteHttpsGetResp.Data.HttpConfig,
|
||||
SSLProtocol: websiteHttpsGetResp.Data.SSLProtocol,
|
||||
Algorithm: websiteHttpsGetResp.Data.Algorithm,
|
||||
Hsts: websiteHttpsGetResp.Data.Hsts,
|
||||
}
|
||||
updateHttpsConfResp, err := sdkClient.UpdateHttpsConf(d.config.WebsiteId, updateHttpsConfReq)
|
||||
d.logger.Debug("sdk request '1panel.UpdateHttpsConf'", slog.Int64("websiteId", d.config.WebsiteId), slog.Any("request", updateHttpsConfReq), slog.Any("response", updateHttpsConfResp))
|
||||
websiteHttpsPostResp, err := sdkClient.WebsiteHttpsPost(d.config.WebsiteId, websiteHttpsPostReq)
|
||||
d.logger.Debug("sdk request '1panel.WebsiteHttpsPost'", slog.Int64("websiteId", d.config.WebsiteId), slog.Any("request", websiteHttpsPostReq), slog.Any("response", websiteHttpsPostResp))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.UpdateHttpsConf': %w", err)
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.WebsiteHttpsPost': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
panic("sdk client is not implemented")
|
||||
panic("unreachable")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Deployer) deployToCertificate(ctx context.Context, certPEM string, privkeyPEM string) error {
|
||||
func (d *Deployer) deployToCertificate(ctx context.Context, certPEM, privkeyPEM string) error {
|
||||
if d.config.CertificateId == 0 {
|
||||
return errors.New("config `certificateId` is required")
|
||||
}
|
||||
|
||||
switch sdkClient := d.sdkClient.(type) {
|
||||
case *opsdk.Client:
|
||||
{
|
||||
// 获取证书详情
|
||||
getWebsiteSSLResp, err := sdkClient.GetWebsiteSSL(d.config.CertificateId)
|
||||
d.logger.Debug("sdk request '1panel.GetWebsiteSSL'", slog.Int64("sslId", d.config.CertificateId), slog.Any("response", getWebsiteSSLResp))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.GetWebsiteSSL': %w", err)
|
||||
}
|
||||
|
||||
// 更新证书
|
||||
uploadWebsiteSSLReq := &opsdk.UploadWebsiteSSLRequest{
|
||||
SSLID: d.config.CertificateId,
|
||||
Type: "paste",
|
||||
Description: getWebsiteSSLResp.Data.Description,
|
||||
Certificate: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
}
|
||||
uploadWebsiteSSLResp, err := sdkClient.UploadWebsiteSSL(uploadWebsiteSSLReq)
|
||||
d.logger.Debug("sdk request '1panel.UploadWebsiteSSL'", slog.Any("request", uploadWebsiteSSLReq), slog.Any("response", uploadWebsiteSSLResp))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.UploadWebsiteSSL': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
case *opsdkv2.Client:
|
||||
{
|
||||
// 获取证书详情
|
||||
getWebsiteSSLResp, err := sdkClient.GetWebsiteSSL(d.config.CertificateId)
|
||||
d.logger.Debug("sdk request '1panel.GetWebsiteSSL'", slog.Any("sslId", d.config.CertificateId), slog.Any("response", getWebsiteSSLResp))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.GetWebsiteSSL': %w", err)
|
||||
}
|
||||
|
||||
// 更新证书
|
||||
uploadWebsiteSSLReq := &opsdkv2.UploadWebsiteSSLRequest{
|
||||
SSLID: d.config.CertificateId,
|
||||
Type: "paste",
|
||||
Description: getWebsiteSSLResp.Data.Description,
|
||||
Certificate: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
}
|
||||
uploadWebsiteSSLResp, err := sdkClient.UploadWebsiteSSL(uploadWebsiteSSLReq)
|
||||
d.logger.Debug("sdk request '1panel.UploadWebsiteSSL'", slog.Any("request", uploadWebsiteSSLReq), slog.Any("response", uploadWebsiteSSLResp))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to execute sdk request '1panel.UploadWebsiteSSL': %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
panic("sdk client is not implemented")
|
||||
// 替换证书
|
||||
opres, err := d.sdkCertmgr.Replace(ctx, fmt.Sprintf("%d", d.config.CertificateId), certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to replace certificate file: %w", err)
|
||||
} else {
|
||||
d.logger.Info("ssl certificate replaced", slog.Any("result", opres))
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -250,7 +205,7 @@ const (
|
||||
|
||||
func createSDKClient(serverUrl, apiVersion, apiKey string, skipTlsVerify bool, nodeName string) (any, error) {
|
||||
if apiVersion == sdkVersionV1 {
|
||||
client, err := opsdk.NewClient(serverUrl, apiKey)
|
||||
client, err := onepanelsdk.NewClient(serverUrl, apiKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -261,15 +216,15 @@ func createSDKClient(serverUrl, apiVersion, apiKey string, skipTlsVerify bool, n
|
||||
|
||||
return client, nil
|
||||
} else if apiVersion == sdkVersionV2 {
|
||||
var client *opsdkv2.Client
|
||||
var client *onepanelsdk2.Client
|
||||
if nodeName == "" {
|
||||
temp, err := opsdkv2.NewClient(serverUrl, apiKey)
|
||||
temp, err := onepanelsdk2.NewClient(serverUrl, apiKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client = temp
|
||||
} else {
|
||||
temp, err := opsdkv2.NewClientWithNode(serverUrl, apiKey, nodeName)
|
||||
temp, err := onepanelsdk2.NewClientWithNode(serverUrl, apiKey, nodeName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_1PANELSITE_"
|
||||
argsPrefix := "1PANELSITE_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -35,12 +35,12 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./1panel_site_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_1PANELSITE_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_1PANELSITE_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_1PANELSITE_SERVERURL="http://127.0.0.1:20410" \
|
||||
--CERTIMATE_SSLDEPLOYER_1PANELSITE_APIVERSION="v1" \
|
||||
--CERTIMATE_SSLDEPLOYER_1PANELSITE_APIKEY="your-api-key" \
|
||||
--CERTIMATE_SSLDEPLOYER_1PANELSITE_WEBSITEID="your-website-id"
|
||||
--1PANELSITE_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--1PANELSITE_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--1PANELSITE_SERVERURL="http://127.0.0.1:20410" \
|
||||
--1PANELSITE_APIVERSION="v1" \
|
||||
--1PANELSITE_APIKEY="your-api-key" \
|
||||
--1PANELSITE_WEBSITEID="your-website-id"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -60,12 +60,12 @@ type wSDKClients struct {
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
clients, err := createSDKClients(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -77,7 +77,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Else("ap-southeast-1"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -98,7 +98,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
@@ -23,7 +23,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNALB_"
|
||||
argsPrefix := "ALIYUNALB_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -39,14 +39,14 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_alb_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNALB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNALB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNALB_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNALB_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNALB_REGION="cn-hangzhou" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNALB_LOADBALANCERID="your-alb-instance-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNALB_LISTENERID="your-alb-listener-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNALB_DOMAIN="your-alb-sni-domain"
|
||||
--ALIYUNALB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNALB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNALB_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNALB_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNALB_REGION="cn-hangzhou" \
|
||||
--ALIYUNALB_LOADBALANCERID="your-alb-instance-id" \
|
||||
--ALIYUNALB_LISTENERID="your-alb-listener-id" \
|
||||
--ALIYUNALB_DOMAIN="your-alb-sni-domain"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -63,12 +63,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
clients, err := createSDKClients(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -80,7 +80,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Else("ap-southeast-1"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -99,7 +99,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
switch d.config.ServiceType {
|
||||
case SERVICE_TYPE_TRADITIONAL:
|
||||
if err := d.deployToTraditional(ctx, certPEM, privkeyPEM); err != nil {
|
||||
@@ -118,7 +118,7 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string
|
||||
return &deployer.DeployResult{}, nil
|
||||
}
|
||||
|
||||
func (d *Deployer) deployToTraditional(ctx context.Context, certPEM string, privkeyPEM string) error {
|
||||
func (d *Deployer) deployToTraditional(ctx context.Context, certPEM, privkeyPEM string) error {
|
||||
if d.config.GroupId == "" {
|
||||
return errors.New("config `groupId` is required")
|
||||
}
|
||||
@@ -208,7 +208,7 @@ func (d *Deployer) deployToTraditional(ctx context.Context, certPEM string, priv
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Deployer) deployToCloudNative(ctx context.Context, certPEM string, privkeyPEM string) error {
|
||||
func (d *Deployer) deployToCloudNative(ctx context.Context, certPEM, privkeyPEM string) error {
|
||||
if d.config.GatewayId == "" {
|
||||
return errors.New("config `gatewayId` is required")
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNAPIGW_"
|
||||
argsPrefix := "ALIYUNAPIGW_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -41,15 +41,15 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_apigw_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNAPIGW_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNAPIGW_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNAPIGW_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNAPIGW_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNAPIGW_REGION="cn-hangzhou" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNAPIGW_SERVICETYPE="cloudnative" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNAPIGW_GATEWAYID="your-api-gateway-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNAPIGW_GROUPID="your-api-group-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNAPIGW_DOMAIN="example.com"
|
||||
--ALIYUNAPIGW_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNAPIGW_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNAPIGW_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNAPIGW_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNAPIGW_REGION="cn-hangzhou" \
|
||||
--ALIYUNAPIGW_SERVICETYPE="cloudnative" \
|
||||
--ALIYUNAPIGW_GATEWAYID="your-api-gateway-id" \
|
||||
--ALIYUNAPIGW_GROUPID="your-api-group-id" \
|
||||
--ALIYUNAPIGW_DOMAIN="example.com"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -46,12 +46,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -61,7 +61,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Region: config.Region,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -82,7 +82,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
if len(d.config.ResourceIds) == 0 {
|
||||
return nil, errors.New("config `resourceIds` is required")
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -42,7 +42,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Region: config.Region,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -62,7 +62,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
@@ -49,12 +49,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -66,7 +66,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Else("ap-southeast-1"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -85,7 +85,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNCDN_"
|
||||
argsPrefix := "ALIYUNCDN_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -33,11 +33,11 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_cdn_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCDN_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCDN_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCDN_DOMAIN="example.com"
|
||||
--ALIYUNCDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNCDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNCDN_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNCDN_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNCDN_DOMAIN="example.com"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -49,12 +49,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -64,7 +64,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Region: config.Region,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -85,7 +85,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
@@ -23,7 +23,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNCLB_"
|
||||
argsPrefix := "ALIYUNCLB_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -39,14 +39,14 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_clb_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCLB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCLB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCLB_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCLB_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCLB_REGION="cn-hangzhou" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCLB_LOADBALANCERID="your-clb-instance-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCLB_LISTENERPORT=443 \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNCLB_DOMAIN="your-clb-sni-domain"
|
||||
--ALIYUNCLB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNCLB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNCLB_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNCLB_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNCLB_REGION="cn-hangzhou" \
|
||||
--ALIYUNCLB_LOADBALANCERID="your-clb-instance-id" \
|
||||
--ALIYUNCLB_LISTENERPORT=443 \
|
||||
--ALIYUNCLB_DOMAIN="your-clb-sni-domain"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -49,12 +49,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -66,7 +66,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Else("ap-southeast-1"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -85,7 +85,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNDCDN_"
|
||||
argsPrefix := "ALIYUNDCDN_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -33,11 +33,11 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_dcdn_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNDCDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNDCDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNDCDN_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNDCDN_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNDCDN_DOMAIN="example.com"
|
||||
--ALIYUNDCDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNDCDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNDCDN_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNDCDN_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNDCDN_DOMAIN="example.com"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -48,12 +48,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -65,7 +65,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Else("ap-southeast-1"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -86,7 +86,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNDDOSPRO_"
|
||||
argsPrefix := "ALIYUNDDOSPRO_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -35,12 +35,12 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_ddospro_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNDDOSPRO_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNDDOSPRO_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNDDOSPRO_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNDDOSPRO_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNDDOSPRO_REGION="cn-hangzhou" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNDDOSPRO_DOMAIN="example.com"
|
||||
--ALIYUNDDOSPRO_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNDDOSPRO_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNDDOSPRO_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNDDOSPRO_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNDDOSPRO_REGION="cn-hangzhou" \
|
||||
--ALIYUNDDOSPRO_DOMAIN="example.com"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -44,12 +44,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -61,7 +61,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Else("ap-southeast-1"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -82,7 +82,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
if d.config.SiteId == 0 {
|
||||
return nil, errors.New("config `siteId` is required")
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNESA_"
|
||||
argsPrefix := "ALIYUNESA_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -35,12 +35,12 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_esa_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNESA_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNESA_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNESA_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNESA_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNESA_REGION="cn-hangzhou" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNESA_SITEID="your-esa-site-id"
|
||||
--ALIYUNESA_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNESA_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNESA_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNESA_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNESA_REGION="cn-hangzhou" \
|
||||
--ALIYUNESA_SITEID="your-esa-site-id"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -55,12 +55,12 @@ type wSDKClients struct {
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
clients, err := createSDKClients(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -78,7 +78,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
switch d.config.ServiceVersion {
|
||||
case "3", "3.0":
|
||||
if err := d.deployToFC3(ctx, certPEM, privkeyPEM); err != nil {
|
||||
@@ -97,7 +97,7 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string
|
||||
return &deployer.DeployResult{}, nil
|
||||
}
|
||||
|
||||
func (d *Deployer) deployToFC3(ctx context.Context, certPEM string, privkeyPEM string) error {
|
||||
func (d *Deployer) deployToFC3(ctx context.Context, certPEM, privkeyPEM string) error {
|
||||
// 获取待部署的域名列表
|
||||
var domains []string
|
||||
switch d.config.DomainMatchPattern {
|
||||
@@ -183,7 +183,7 @@ func (d *Deployer) deployToFC3(ctx context.Context, certPEM string, privkeyPEM s
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Deployer) deployToFC2(ctx context.Context, certPEM string, privkeyPEM string) error {
|
||||
func (d *Deployer) deployToFC2(ctx context.Context, certPEM, privkeyPEM string) error {
|
||||
// 获取待部署的域名列表
|
||||
var domains []string
|
||||
switch d.config.DomainMatchPattern {
|
||||
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNFC_"
|
||||
argsPrefix := "ALIYUNFC_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -35,12 +35,12 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_fc_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNFC_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNFC_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNFC_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNFC_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNFC_REGION="cn-hangzhou" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNFC_DOMAIN="example.com"
|
||||
--ALIYUNFC_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNFC_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNFC_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNFC_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNFC_REGION="cn-hangzhou" \
|
||||
--ALIYUNFC_DOMAIN="example.com"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -48,12 +48,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -63,7 +63,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Region: "cn-hangzhou",
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -84,7 +84,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
@@ -22,7 +22,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNGA_"
|
||||
argsPrefix := "ALIYUNGA_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -37,13 +37,13 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_ga_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNGA_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNGA_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNGA_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNGA_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNGA_ACCELERATORID="your-ga-accelerator-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNGA_LISTENERID="your-ga-listener-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNGA_DOMAIN="your-ga-sni-domain"
|
||||
--ALIYUNGA_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNGA_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNGA_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNGA_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNGA_ACCELERATORID="your-ga-accelerator-id" \
|
||||
--ALIYUNGA_LISTENERID="your-ga-listener-id" \
|
||||
--ALIYUNGA_DOMAIN="your-ga-sni-domain"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -46,12 +46,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -69,7 +69,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 获取待部署的域名列表
|
||||
var domains []string
|
||||
switch d.config.DomainMatchPattern {
|
||||
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNLIVE_"
|
||||
argsPrefix := "ALIYUNLIVE_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -35,12 +35,12 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_live_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNLIVE_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNLIVE_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNLIVE_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNLIVE_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNLIVE_REGION="cn-hangzhou" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNLIVE_DOMAIN="example.com"
|
||||
--ALIYUNLIVE_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNLIVE_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNLIVE_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNLIVE_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNLIVE_REGION="cn-hangzhou" \
|
||||
--ALIYUNLIVE_DOMAIN="example.com"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -49,12 +49,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -66,7 +66,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Else("ap-southeast-1"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -87,7 +87,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
@@ -22,7 +22,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNNLB_"
|
||||
argsPrefix := "ALIYUNNLB_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -37,13 +37,13 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_nlb_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNNLB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNNLB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNNLB_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNNLB_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNNLB_REGION="cn-hangzhou" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNNLB_LOADBALANCERID="your-nlb-instance-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNNLB_LISTENERID="your-nlb-listener-id"
|
||||
--ALIYUNNLB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNNLB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNNLB_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNNLB_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNNLB_REGION="cn-hangzhou" \
|
||||
--ALIYUNNLB_LOADBALANCERID="your-nlb-instance-id" \
|
||||
--ALIYUNNLB_LISTENERID="your-nlb-listener-id"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -38,12 +38,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -61,7 +61,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
if d.config.Bucket == "" {
|
||||
return nil, errors.New("config `bucket` is required")
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNOSS_"
|
||||
argsPrefix := "ALIYUNOSS_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -37,13 +37,13 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_oss_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNOSS_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNOSS_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNOSS_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNOSS_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNOSS_REGION="cn-hangzhou" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNOSS_BUCKET="your-oss-bucket" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNOSS_DOMAIN="example.com"
|
||||
--ALIYUNOSS_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNOSS_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNOSS_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNOSS_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNOSS_REGION="cn-hangzhou" \
|
||||
--ALIYUNOSS_BUCKET="your-oss-bucket" \
|
||||
--ALIYUNOSS_DOMAIN="example.com"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -49,12 +49,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -66,7 +66,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Else("ap-southeast-1"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -85,7 +85,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 获取待部署的域名列表
|
||||
var domains []string
|
||||
switch d.config.DomainMatchPattern {
|
||||
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNVOD_"
|
||||
argsPrefix := "ALIYUNVOD_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -35,12 +35,12 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_vod_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNVOD_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNVOD_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNVOD_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNVOD_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNVOD_REGION="cn-hangzhou" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNVOD_DOMAIN="example.com"
|
||||
--ALIYUNVOD_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNVOD_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNVOD_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNVOD_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNVOD_REGION="cn-hangzhou" \
|
||||
--ALIYUNVOD_DOMAIN="example.com"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -60,12 +60,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -77,7 +77,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Else("ap-southeast-1"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -98,7 +98,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
switch d.config.ServiceVersion {
|
||||
case "3", "3.0":
|
||||
if err := d.deployToWAF3(ctx, certPEM, privkeyPEM); err != nil {
|
||||
@@ -112,7 +112,7 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string
|
||||
return &deployer.DeployResult{}, nil
|
||||
}
|
||||
|
||||
func (d *Deployer) deployToWAF3(ctx context.Context, certPEM string, privkeyPEM string) error {
|
||||
func (d *Deployer) deployToWAF3(ctx context.Context, certPEM, privkeyPEM string) error {
|
||||
if d.config.InstanceId == "" {
|
||||
return errors.New("config `instanceId` is required")
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_ALIYUNWAF_"
|
||||
argsPrefix := "ALIYUNWAF_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -35,12 +35,12 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aliyun_waf_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNWAF_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNWAF_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNWAF_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNWAF_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNWAF_REGION="cn-hangzhou" \
|
||||
--CERTIMATE_SSLDEPLOYER_ALIYUNWAF_INSTANCEID="your-waf-instance-id"
|
||||
--ALIYUNWAF_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--ALIYUNWAF_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--ALIYUNWAF_ACCESSKEYID="your-access-key-id" \
|
||||
--ALIYUNWAF_ACCESSKEYSECRET="your-access-key-secret" \
|
||||
--ALIYUNWAF_REGION="cn-hangzhou" \
|
||||
--ALIYUNWAF_INSTANCEID="your-waf-instance-id"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -39,12 +39,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.ServerUrl, config.ApiKey, config.AllowInsecureConnections)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -62,7 +62,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 根据部署资源类型决定部署方式
|
||||
switch d.config.ResourceType {
|
||||
case RESOURCE_TYPE_CERTIFICATE:
|
||||
@@ -77,7 +77,7 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string
|
||||
return &deployer.DeployResult{}, nil
|
||||
}
|
||||
|
||||
func (d *Deployer) deployToCertificate(ctx context.Context, certPEM string, privkeyPEM string) error {
|
||||
func (d *Deployer) deployToCertificate(ctx context.Context, certPEM, privkeyPEM string) error {
|
||||
if d.config.CertificateId == "" {
|
||||
return errors.New("config `certificateId` is required")
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_APISIX_"
|
||||
argsPrefix := "APISIX_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -33,11 +33,11 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./apisix_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_APISIX_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_APISIX_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_APISIX_SERVERURL="http://127.0.0.1:9080" \
|
||||
--CERTIMATE_SSLDEPLOYER_APISIX_APIKEY="your-api-key" \
|
||||
--CERTIMATE_SSLDEPLOYER_APISIX_CERTIFICATEID="your-certificate-id"
|
||||
--APISIX_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--APISIX_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--APISIX_SERVERURL="http://127.0.0.1:9080" \
|
||||
--APISIX_APIKEY="your-api-key" \
|
||||
--APISIX_CERTIFICATEID="your-certificate-id"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -33,7 +33,7 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -42,7 +42,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Region: config.Region,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
|
||||
@@ -43,12 +43,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
var pcertmgr certmgr.Provider
|
||||
@@ -60,7 +60,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
Region: config.Region,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
case CERTIFICATE_SOURCE_IAM:
|
||||
@@ -71,7 +71,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
CertificatePath: "/cloudfront/",
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
default:
|
||||
@@ -96,7 +96,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
if d.config.DistributionId == "" {
|
||||
return nil, errors.New("config `distribuitionId` is required")
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_AWSCLOUDFRONT_"
|
||||
argsPrefix := "AWSCLOUDFRONT_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -35,12 +35,12 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./aws_cloudfront_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_AWSCLOUDFRONT_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_AWSCLOUDFRONT_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_AWSCLOUDFRONT_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_AWSCLOUDFRONT_SECRETACCESSKEY="your-secret-access-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_AWSCLOUDFRONT_REGION="us-east-1" \
|
||||
--CERTIMATE_SSLDEPLOYER_AWSCLOUDFRONT_DISTRIBUTIONID="your-distribution-id"
|
||||
--AWSCLOUDFRONT_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--AWSCLOUDFRONT_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--AWSCLOUDFRONT_ACCESSKEYID="your-access-key-id" \
|
||||
--AWSCLOUDFRONT_SECRETACCESSKEY="your-secret-access-id" \
|
||||
--AWSCLOUDFRONT_REGION="us-east-1" \
|
||||
--AWSCLOUDFRONT_DISTRIBUTIONID="your-distribution-id"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -33,7 +33,7 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -43,7 +43,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
CertificatePath: config.CertificatePath,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -63,7 +63,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
d.sdkCertmgr.SetLogger(logger)
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
@@ -43,12 +43,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.TenantId, config.ClientId, config.ClientSecret, config.CloudName, config.KeyVaultName)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -59,7 +59,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
KeyVaultName: config.KeyVaultName,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
|
||||
@@ -48,12 +48,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -61,7 +61,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
SecretAccessKey: config.SecretAccessKey,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -80,7 +80,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
@@ -22,7 +22,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_BAIDUCLOUDAPPBLB_"
|
||||
argsPrefix := "BAIDUCLOUDAPPBLB_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -37,13 +37,13 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./baiducloud_appblb_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDAPPBLB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDAPPBLB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDAPPBLB_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDAPPBLB_SECRETACCESSKEY="your-secret-access-key" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDAPPBLB_REGION="bj" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDAPPBLB_LOADBALANCERID="your-blb-loadbalancer-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDAPPBLB_DOMAIN="your-blb-sni-domain"
|
||||
--BAIDUCLOUDAPPBLB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--BAIDUCLOUDAPPBLB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--BAIDUCLOUDAPPBLB_ACCESSKEYID="your-access-key-id" \
|
||||
--BAIDUCLOUDAPPBLB_SECRETACCESSKEY="your-secret-access-key" \
|
||||
--BAIDUCLOUDAPPBLB_REGION="bj" \
|
||||
--BAIDUCLOUDAPPBLB_LOADBALANCERID="your-blb-loadbalancer-id" \
|
||||
--BAIDUCLOUDAPPBLB_DOMAIN="your-blb-sni-domain"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -48,12 +48,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey, config.Region)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -61,7 +61,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
SecretAccessKey: config.SecretAccessKey,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -80,7 +80,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
@@ -22,7 +22,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_BAIDUCLOUDBLB_"
|
||||
argsPrefix := "BAIDUCLOUDBLB_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -37,13 +37,13 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./baiducloud_blb_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDBLB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDBLB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDBLB_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDBLB_SECRETACCESSKEY="your-secret-access-key" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDBLB_REGION="bj" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDBLB_LOADBALANCERID="your-blb-loadbalancer-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDBLB_DOMAIN="your-blb-sni-domain"
|
||||
--BAIDUCLOUDBLB_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--BAIDUCLOUDBLB_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--BAIDUCLOUDBLB_ACCESSKEYID="your-access-key-id" \
|
||||
--BAIDUCLOUDBLB_SECRETACCESSKEY="your-secret-access-key" \
|
||||
--BAIDUCLOUDBLB_REGION="bj" \
|
||||
--BAIDUCLOUDBLB_LOADBALANCERID="your-blb-loadbalancer-id" \
|
||||
--BAIDUCLOUDBLB_DOMAIN="your-blb-sni-domain"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -39,12 +39,12 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create sdk client: %w", err)
|
||||
return nil, fmt.Errorf("could not create client: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -62,7 +62,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 获取待部署的域名列表
|
||||
var domains []string
|
||||
switch d.config.DomainMatchPattern {
|
||||
|
||||
@@ -20,7 +20,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
argsPrefix := "CERTIMATE_SSLDEPLOYER_BAIDUCLOUDCDN_"
|
||||
argsPrefix := "BAIDUCLOUDCDN_"
|
||||
|
||||
flag.StringVar(&fInputCertPath, argsPrefix+"INPUTCERTPATH", "", "")
|
||||
flag.StringVar(&fInputKeyPath, argsPrefix+"INPUTKEYPATH", "", "")
|
||||
@@ -33,11 +33,11 @@ func init() {
|
||||
Shell command to run this test:
|
||||
|
||||
go test -v ./baiducloud_cdn_test.go -args \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDCDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDCDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDCDN_ACCESSKEYID="your-access-key-id" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDCDN_SECRETACCESSKEY="your-secret-access-key" \
|
||||
--CERTIMATE_SSLDEPLOYER_BAIDUCLOUDCDN_DOMAIN="example.com"
|
||||
--BAIDUCLOUDCDN_INPUTCERTPATH="/path/to/your-input-cert.pem" \
|
||||
--BAIDUCLOUDCDN_INPUTKEYPATH="/path/to/your-input-key.pem" \
|
||||
--BAIDUCLOUDCDN_ACCESSKEYID="your-access-key-id" \
|
||||
--BAIDUCLOUDCDN_SECRETACCESSKEY="your-secret-access-key" \
|
||||
--BAIDUCLOUDCDN_DOMAIN="example.com"
|
||||
*/
|
||||
func TestDeploy(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
@@ -28,7 +28,7 @@ var _ deployer.Provider = (*Deployer)(nil)
|
||||
|
||||
func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the ssl deployer provider is nil")
|
||||
return nil, errors.New("the configuration of the deployer provider is nil")
|
||||
}
|
||||
|
||||
pcertmgr, err := mcertmgr.NewCertmgr(&mcertmgr.CertmgrConfig{
|
||||
@@ -36,7 +36,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) {
|
||||
SecretAccessKey: config.SecretAccessKey,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not create ssl manager: %w", err)
|
||||
return nil, fmt.Errorf("could not create certmgr: %w", err)
|
||||
}
|
||||
|
||||
return &Deployer{
|
||||
@@ -54,7 +54,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*deployer.DeployResult, error) {
|
||||
// 上传证书
|
||||
upres, err := d.sdkCertmgr.Upload(ctx, certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user