refactor: clean code

This commit is contained in:
Fu Diwei 2024-10-28 14:15:33 +08:00
parent 48672d1a44
commit e1a3a3e7c7
11 changed files with 241 additions and 234 deletions

View File

@ -6,8 +6,8 @@ import (
"errors" "errors"
"fmt" "fmt"
alb20200616 "github.com/alibabacloud-go/alb-20200616/v2/client" aliyunAlb "github.com/alibabacloud-go/alb-20200616/v2/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" aliyunOpen "github.com/alibabacloud-go/darabonba-openapi/v2/client"
"github.com/alibabacloud-go/tea/tea" "github.com/alibabacloud-go/tea/tea"
"github.com/usual2970/certimate/internal/domain" "github.com/usual2970/certimate/internal/domain"
@ -18,7 +18,7 @@ type AliyunALBDeployer struct {
option *DeployerOption option *DeployerOption
infos []string infos []string
sdkClient *alb20200616.Client sdkClient *aliyunAlb.Client
sslUploader uploader.Uploader sslUploader uploader.Uploader
} }
@ -77,12 +77,12 @@ func (d *AliyunALBDeployer) Deploy(ctx context.Context) error {
return nil return nil
} }
func (d *AliyunALBDeployer) createSdkClient(accessKeyId, accessKeySecret, region string) (*alb20200616.Client, error) { func (d *AliyunALBDeployer) createSdkClient(accessKeyId, accessKeySecret, region string) (*aliyunAlb.Client, error) {
if region == "" { if region == "" {
region = "cn-hangzhou" // ALB 服务默认区域:华东一杭州 region = "cn-hangzhou" // ALB 服务默认区域:华东一杭州
} }
aConfig := &openapi.Config{ aConfig := &aliyunOpen.Config{
AccessKeyId: tea.String(accessKeyId), AccessKeyId: tea.String(accessKeyId),
AccessKeySecret: tea.String(accessKeySecret), AccessKeySecret: tea.String(accessKeySecret),
} }
@ -96,7 +96,7 @@ func (d *AliyunALBDeployer) createSdkClient(accessKeyId, accessKeySecret, region
} }
aConfig.Endpoint = tea.String(endpoint) aConfig.Endpoint = tea.String(endpoint)
client, err := alb20200616.NewClient(aConfig) client, err := aliyunAlb.NewClient(aConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -114,7 +114,7 @@ func (d *AliyunALBDeployer) deployToLoadbalancer(ctx context.Context) error {
// 查询负载均衡实例的详细信息 // 查询负载均衡实例的详细信息
// REF: https://help.aliyun.com/zh/slb/application-load-balancer/developer-reference/api-alb-2020-06-16-getloadbalancerattribute // REF: https://help.aliyun.com/zh/slb/application-load-balancer/developer-reference/api-alb-2020-06-16-getloadbalancerattribute
getLoadBalancerAttributeReq := &alb20200616.GetLoadBalancerAttributeRequest{ getLoadBalancerAttributeReq := &aliyunAlb.GetLoadBalancerAttributeRequest{
LoadBalancerId: tea.String(aliLoadbalancerId), LoadBalancerId: tea.String(aliLoadbalancerId),
} }
getLoadBalancerAttributeResp, err := d.sdkClient.GetLoadBalancerAttribute(getLoadBalancerAttributeReq) getLoadBalancerAttributeResp, err := d.sdkClient.GetLoadBalancerAttribute(getLoadBalancerAttributeReq)
@ -130,7 +130,7 @@ func (d *AliyunALBDeployer) deployToLoadbalancer(ctx context.Context) error {
listListenersLimit := int32(100) listListenersLimit := int32(100)
var listListenersToken *string = nil var listListenersToken *string = nil
for { for {
listListenersReq := &alb20200616.ListListenersRequest{ listListenersReq := &aliyunAlb.ListListenersRequest{
MaxResults: tea.Int32(listListenersLimit), MaxResults: tea.Int32(listListenersLimit),
NextToken: listListenersToken, NextToken: listListenersToken,
LoadBalancerIds: []*string{tea.String(aliLoadbalancerId)}, LoadBalancerIds: []*string{tea.String(aliLoadbalancerId)},
@ -162,7 +162,7 @@ func (d *AliyunALBDeployer) deployToLoadbalancer(ctx context.Context) error {
listListenersPage = 1 listListenersPage = 1
listListenersToken = nil listListenersToken = nil
for { for {
listListenersReq := &alb20200616.ListListenersRequest{ listListenersReq := &aliyunAlb.ListListenersRequest{
MaxResults: tea.Int32(listListenersLimit), MaxResults: tea.Int32(listListenersLimit),
NextToken: listListenersToken, NextToken: listListenersToken,
LoadBalancerIds: []*string{tea.String(aliLoadbalancerId)}, LoadBalancerIds: []*string{tea.String(aliLoadbalancerId)},
@ -236,7 +236,7 @@ func (d *AliyunALBDeployer) deployToListener(ctx context.Context) error {
func (d *AliyunALBDeployer) updateListenerCertificate(ctx context.Context, aliListenerId string, aliCertId string) error { func (d *AliyunALBDeployer) updateListenerCertificate(ctx context.Context, aliListenerId string, aliCertId string) error {
// 查询监听的属性 // 查询监听的属性
// REF: https://help.aliyun.com/zh/slb/application-load-balancer/developer-reference/api-alb-2020-06-16-getlistenerattribute // REF: https://help.aliyun.com/zh/slb/application-load-balancer/developer-reference/api-alb-2020-06-16-getlistenerattribute
getListenerAttributeReq := &alb20200616.GetListenerAttributeRequest{ getListenerAttributeReq := &aliyunAlb.GetListenerAttributeRequest{
ListenerId: tea.String(aliListenerId), ListenerId: tea.String(aliListenerId),
} }
getListenerAttributeResp, err := d.sdkClient.GetListenerAttribute(getListenerAttributeReq) getListenerAttributeResp, err := d.sdkClient.GetListenerAttribute(getListenerAttributeReq)
@ -248,9 +248,9 @@ func (d *AliyunALBDeployer) updateListenerCertificate(ctx context.Context, aliLi
// 修改监听的属性 // 修改监听的属性
// REF: https://help.aliyun.com/zh/slb/application-load-balancer/developer-reference/api-alb-2020-06-16-updatelistenerattribute // REF: https://help.aliyun.com/zh/slb/application-load-balancer/developer-reference/api-alb-2020-06-16-updatelistenerattribute
updateListenerAttributeReq := &alb20200616.UpdateListenerAttributeRequest{ updateListenerAttributeReq := &aliyunAlb.UpdateListenerAttributeRequest{
ListenerId: tea.String(aliListenerId), ListenerId: tea.String(aliListenerId),
Certificates: []*alb20200616.UpdateListenerAttributeRequestCertificates{{ Certificates: []*aliyunAlb.UpdateListenerAttributeRequestCertificates{{
CertificateId: tea.String(aliCertId), CertificateId: tea.String(aliCertId),
}}, }},
} }

View File

@ -5,9 +5,8 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
cdn20180510 "github.com/alibabacloud-go/cdn-20180510/v5/client" aliyunCdn "github.com/alibabacloud-go/cdn-20180510/v5/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" aliyunOpen "github.com/alibabacloud-go/darabonba-openapi/v2/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea" "github.com/alibabacloud-go/tea/tea"
"github.com/usual2970/certimate/internal/domain" "github.com/usual2970/certimate/internal/domain"
@ -15,28 +14,28 @@ import (
) )
type AliyunCDNDeployer struct { type AliyunCDNDeployer struct {
client *cdn20180510.Client
option *DeployerOption option *DeployerOption
infos []string infos []string
sdkClient *aliyunCdn.Client
} }
func NewAliyunCDNDeployer(option *DeployerOption) (*AliyunCDNDeployer, error) { func NewAliyunCDNDeployer(option *DeployerOption) (Deployer, error) {
access := &domain.AliyunAccess{} access := &domain.AliyunAccess{}
json.Unmarshal([]byte(option.Access), access) json.Unmarshal([]byte(option.Access), access)
d := &AliyunCDNDeployer{ client, err := (&AliyunCDNDeployer{}).createSdkClient(
option: option, access.AccessKeyId,
} access.AccessKeySecret,
)
client, err := d.createClient(access.AccessKeyId, access.AccessKeySecret)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &AliyunCDNDeployer{ return &AliyunCDNDeployer{
client: client,
option: option, option: option,
infos: make([]string, 0), infos: make([]string, 0),
sdkClient: client,
}, nil }, nil
} }
@ -50,35 +49,39 @@ func (d *AliyunCDNDeployer) GetInfo() []string {
func (d *AliyunCDNDeployer) Deploy(ctx context.Context) error { func (d *AliyunCDNDeployer) Deploy(ctx context.Context) error {
certName := fmt.Sprintf("%s-%s-%s", d.option.Domain, d.option.DomainId, rand.RandStr(6)) certName := fmt.Sprintf("%s-%s-%s", d.option.Domain, d.option.DomainId, rand.RandStr(6))
setCdnDomainSSLCertificateRequest := &cdn20180510.SetCdnDomainSSLCertificateRequest{
DomainName: tea.String(getDeployString(d.option.DeployConfig, "domain")), // 设置 CDN 域名域名证书
// REF: https://help.aliyun.com/zh/cdn/developer-reference/api-cdn-2018-05-10-setcdndomainsslcertificate
setCdnDomainSSLCertificateReq := &aliyunCdn.SetCdnDomainSSLCertificateRequest{
DomainName: tea.String(d.option.DeployConfig.GetConfigAsString("domain")),
CertRegion: tea.String(d.option.DeployConfig.GetConfigOrDefaultAsString("region", "cn-hangzhou")),
CertName: tea.String(certName), CertName: tea.String(certName),
CertType: tea.String("upload"), CertType: tea.String("upload"),
SSLProtocol: tea.String("on"), SSLProtocol: tea.String("on"),
SSLPub: tea.String(d.option.Certificate.Certificate), SSLPub: tea.String(d.option.Certificate.Certificate),
SSLPri: tea.String(d.option.Certificate.PrivateKey), SSLPri: tea.String(d.option.Certificate.PrivateKey),
CertRegion: tea.String("cn-hangzhou"),
} }
setCdnDomainSSLCertificateResp, err := d.sdkClient.SetCdnDomainSSLCertificate(setCdnDomainSSLCertificateReq)
runtime := &util.RuntimeOptions{}
resp, err := d.client.SetCdnDomainSSLCertificateWithOptions(setCdnDomainSSLCertificateRequest, runtime)
if err != nil { if err != nil {
return err return fmt.Errorf("failed to execute sdk request 'cdn.SetCdnDomainSSLCertificate': %w", err)
} }
d.infos = append(d.infos, toStr("cdn设置证书", resp)) d.infos = append(d.infos, toStr("已设置 CDN 域名证书", setCdnDomainSSLCertificateResp))
return nil return nil
} }
func (d *AliyunCDNDeployer) createClient(accessKeyId, accessKeySecret string) (_result *cdn20180510.Client, _err error) { func (d *AliyunCDNDeployer) createSdkClient(accessKeyId, accessKeySecret string) (*aliyunCdn.Client, error) {
config := &openapi.Config{ aConfig := &aliyunOpen.Config{
AccessKeyId: tea.String(accessKeyId), AccessKeyId: tea.String(accessKeyId),
AccessKeySecret: tea.String(accessKeySecret), AccessKeySecret: tea.String(accessKeySecret),
Endpoint: tea.String("cdn.aliyuncs.com"),
} }
config.Endpoint = tea.String("cdn.aliyuncs.com")
_result = &cdn20180510.Client{} client, err := aliyunCdn.NewClient(aConfig)
_result, _err = cdn20180510.NewClient(config) if err != nil {
return _result, _err return nil, err
}
return client, nil
} }

View File

@ -6,8 +6,8 @@ import (
"errors" "errors"
"fmt" "fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" aliyunOpen "github.com/alibabacloud-go/darabonba-openapi/v2/client"
slb20140515 "github.com/alibabacloud-go/slb-20140515/v4/client" aliyunSlb "github.com/alibabacloud-go/slb-20140515/v4/client"
"github.com/alibabacloud-go/tea/tea" "github.com/alibabacloud-go/tea/tea"
"github.com/usual2970/certimate/internal/domain" "github.com/usual2970/certimate/internal/domain"
@ -18,7 +18,7 @@ type AliyunCLBDeployer struct {
option *DeployerOption option *DeployerOption
infos []string infos []string
sdkClient *slb20140515.Client sdkClient *aliyunSlb.Client
sslUploader uploader.Uploader sslUploader uploader.Uploader
} }
@ -77,12 +77,12 @@ func (d *AliyunCLBDeployer) Deploy(ctx context.Context) error {
return nil return nil
} }
func (d *AliyunCLBDeployer) createSdkClient(accessKeyId, accessKeySecret, region string) (*slb20140515.Client, error) { func (d *AliyunCLBDeployer) createSdkClient(accessKeyId, accessKeySecret, region string) (*aliyunSlb.Client, error) {
if region == "" { if region == "" {
region = "cn-hangzhou" // CLB(SLB) 服务默认区域:华东一杭州 region = "cn-hangzhou" // CLB(SLB) 服务默认区域:华东一杭州
} }
aConfig := &openapi.Config{ aConfig := &aliyunOpen.Config{
AccessKeyId: tea.String(accessKeyId), AccessKeyId: tea.String(accessKeyId),
AccessKeySecret: tea.String(accessKeySecret), AccessKeySecret: tea.String(accessKeySecret),
} }
@ -99,7 +99,7 @@ func (d *AliyunCLBDeployer) createSdkClient(accessKeyId, accessKeySecret, region
} }
aConfig.Endpoint = tea.String(endpoint) aConfig.Endpoint = tea.String(endpoint)
client, err := slb20140515.NewClient(aConfig) client, err := aliyunSlb.NewClient(aConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -117,7 +117,7 @@ func (d *AliyunCLBDeployer) deployToLoadbalancer(ctx context.Context) error {
// 查询负载均衡实例的详细信息 // 查询负载均衡实例的详细信息
// REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-describeloadbalancerattribute // REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-describeloadbalancerattribute
describeLoadBalancerAttributeReq := &slb20140515.DescribeLoadBalancerAttributeRequest{ describeLoadBalancerAttributeReq := &aliyunSlb.DescribeLoadBalancerAttributeRequest{
RegionId: tea.String(d.option.DeployConfig.GetConfigAsString("region")), RegionId: tea.String(d.option.DeployConfig.GetConfigAsString("region")),
LoadBalancerId: tea.String(aliLoadbalancerId), LoadBalancerId: tea.String(aliLoadbalancerId),
} }
@ -134,7 +134,7 @@ func (d *AliyunCLBDeployer) deployToLoadbalancer(ctx context.Context) error {
listListenersLimit := int32(100) listListenersLimit := int32(100)
var listListenersToken *string = nil var listListenersToken *string = nil
for { for {
describeLoadBalancerListenersReq := &slb20140515.DescribeLoadBalancerListenersRequest{ describeLoadBalancerListenersReq := &aliyunSlb.DescribeLoadBalancerListenersRequest{
RegionId: tea.String(d.option.DeployConfig.GetConfigAsString("region")), RegionId: tea.String(d.option.DeployConfig.GetConfigAsString("region")),
MaxResults: tea.Int32(listListenersLimit), MaxResults: tea.Int32(listListenersLimit),
NextToken: listListenersToken, NextToken: listListenersToken,
@ -214,7 +214,7 @@ func (d *AliyunCLBDeployer) deployToListener(ctx context.Context) error {
func (d *AliyunCLBDeployer) updateListenerCertificate(ctx context.Context, aliLoadbalancerId string, aliListenerPort int32, aliCertId string) error { func (d *AliyunCLBDeployer) updateListenerCertificate(ctx context.Context, aliLoadbalancerId string, aliListenerPort int32, aliCertId string) error {
// 查询监听配置 // 查询监听配置
// REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-describeloadbalancerhttpslistenerattribute // REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-describeloadbalancerhttpslistenerattribute
describeLoadBalancerHTTPSListenerAttributeReq := &slb20140515.DescribeLoadBalancerHTTPSListenerAttributeRequest{ describeLoadBalancerHTTPSListenerAttributeReq := &aliyunSlb.DescribeLoadBalancerHTTPSListenerAttributeRequest{
LoadBalancerId: tea.String(aliLoadbalancerId), LoadBalancerId: tea.String(aliLoadbalancerId),
ListenerPort: tea.Int32(aliListenerPort), ListenerPort: tea.Int32(aliListenerPort),
} }
@ -227,7 +227,7 @@ func (d *AliyunCLBDeployer) updateListenerCertificate(ctx context.Context, aliLo
// 查询扩展域名 // 查询扩展域名
// REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-describedomainextensions // REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-describedomainextensions
describeDomainExtensionsReq := &slb20140515.DescribeDomainExtensionsRequest{ describeDomainExtensionsReq := &aliyunSlb.DescribeDomainExtensionsRequest{
RegionId: tea.String(d.option.DeployConfig.GetConfigAsString("region")), RegionId: tea.String(d.option.DeployConfig.GetConfigAsString("region")),
LoadBalancerId: tea.String(aliLoadbalancerId), LoadBalancerId: tea.String(aliLoadbalancerId),
ListenerPort: tea.Int32(aliListenerPort), ListenerPort: tea.Int32(aliListenerPort),
@ -249,7 +249,7 @@ func (d *AliyunCLBDeployer) updateListenerCertificate(ctx context.Context, aliLo
break break
} }
setDomainExtensionAttributeReq := &slb20140515.SetDomainExtensionAttributeRequest{ setDomainExtensionAttributeReq := &aliyunSlb.SetDomainExtensionAttributeRequest{
RegionId: tea.String(d.option.DeployConfig.GetConfigAsString("region")), RegionId: tea.String(d.option.DeployConfig.GetConfigAsString("region")),
DomainExtensionId: tea.String(*domainExtension.DomainExtensionId), DomainExtensionId: tea.String(*domainExtension.DomainExtensionId),
ServerCertificateId: tea.String(aliCertId), ServerCertificateId: tea.String(aliCertId),
@ -265,7 +265,7 @@ func (d *AliyunCLBDeployer) updateListenerCertificate(ctx context.Context, aliLo
// REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-setloadbalancerhttpslistenerattribute // REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-setloadbalancerhttpslistenerattribute
// //
// 注意修改监听配置要放在修改扩展域名之后 // 注意修改监听配置要放在修改扩展域名之后
setLoadBalancerHTTPSListenerAttributeReq := &slb20140515.SetLoadBalancerHTTPSListenerAttributeRequest{ setLoadBalancerHTTPSListenerAttributeReq := &aliyunSlb.SetLoadBalancerHTTPSListenerAttributeRequest{
RegionId: tea.String(d.option.DeployConfig.GetConfigAsString("region")), RegionId: tea.String(d.option.DeployConfig.GetConfigAsString("region")),
LoadBalancerId: tea.String(aliLoadbalancerId), LoadBalancerId: tea.String(aliLoadbalancerId),
ListenerPort: tea.Int32(aliListenerPort), ListenerPort: tea.Int32(aliListenerPort),

View File

@ -0,0 +1,94 @@
package deployer
import (
"context"
"encoding/json"
"fmt"
"strings"
aliyunOpen "github.com/alibabacloud-go/darabonba-openapi/v2/client"
aliyunDcdn "github.com/alibabacloud-go/dcdn-20180115/v3/client"
"github.com/alibabacloud-go/tea/tea"
"github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/utils/rand"
)
type AliyunDCDNDeployer struct {
option *DeployerOption
infos []string
sdkClient *aliyunDcdn.Client
}
func NewAliyunDCDNDeployer(option *DeployerOption) (Deployer, error) {
access := &domain.AliyunAccess{}
json.Unmarshal([]byte(option.Access), access)
client, err := (&AliyunDCDNDeployer{}).createSdkClient(
access.AccessKeyId,
access.AccessKeySecret,
)
if err != nil {
return nil, err
}
return &AliyunDCDNDeployer{
option: option,
infos: make([]string, 0),
sdkClient: client,
}, nil
}
func (d *AliyunDCDNDeployer) GetID() string {
return fmt.Sprintf("%s-%s", d.option.AccessRecord.GetString("name"), d.option.AccessRecord.Id)
}
func (d *AliyunDCDNDeployer) GetInfo() []string {
return d.infos
}
func (d *AliyunDCDNDeployer) Deploy(ctx context.Context) error {
certName := fmt.Sprintf("%s-%s-%s", d.option.Domain, d.option.DomainId, rand.RandStr(6))
// 支持泛解析域名,在 Aliyun DCDN 中泛解析域名表示为 .example.com
domain := d.option.DeployConfig.GetConfigAsString("domain")
if strings.HasPrefix(domain, "*") {
domain = strings.TrimPrefix(domain, "*")
}
// 配置域名证书
// REF: https://help.aliyun.com/zh/edge-security-acceleration/dcdn/developer-reference/api-dcdn-2018-01-15-setdcdndomainsslcertificate
setDcdnDomainSSLCertificateReq := &aliyunDcdn.SetDcdnDomainSSLCertificateRequest{
DomainName: tea.String(domain),
CertRegion: tea.String(d.option.DeployConfig.GetConfigOrDefaultAsString("region", "cn-hangzhou")),
CertName: tea.String(certName),
CertType: tea.String("upload"),
SSLProtocol: tea.String("on"),
SSLPub: tea.String(d.option.Certificate.Certificate),
SSLPri: tea.String(d.option.Certificate.PrivateKey),
}
setDcdnDomainSSLCertificateResp, err := d.sdkClient.SetDcdnDomainSSLCertificate(setDcdnDomainSSLCertificateReq)
if err != nil {
return fmt.Errorf("failed to execute sdk request 'dcdn.SetDcdnDomainSSLCertificate': %w", err)
}
d.infos = append(d.infos, toStr("已配置 DCDN 域名证书", setDcdnDomainSSLCertificateResp))
return nil
}
func (d *AliyunDCDNDeployer) createSdkClient(accessKeyId, accessKeySecret string) (*aliyunDcdn.Client, error) {
aConfig := &aliyunOpen.Config{
AccessKeyId: tea.String(accessKeyId),
AccessKeySecret: tea.String(accessKeySecret),
Endpoint: tea.String("dcdn.aliyuncs.com"),
}
client, err := aliyunDcdn.NewClient(aConfig)
if err != nil {
return nil, err
}
return client, nil
}

View File

@ -1,97 +0,0 @@
/*
* @Author: Bin
* @Date: 2024-09-17
* @FilePath: /certimate/internal/deployer/aliyun_esa.go
*/
package deployer
import (
"context"
"encoding/json"
"fmt"
"strings"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
dcdn20180115 "github.com/alibabacloud-go/dcdn-20180115/v3/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
"github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/utils/rand"
)
type AliyunESADeployer struct {
client *dcdn20180115.Client
option *DeployerOption
infos []string
}
func NewAliyunESADeployer(option *DeployerOption) (*AliyunESADeployer, error) {
access := &domain.AliyunAccess{}
json.Unmarshal([]byte(option.Access), access)
d := &AliyunESADeployer{
option: option,
}
client, err := d.createClient(access.AccessKeyId, access.AccessKeySecret)
if err != nil {
return nil, err
}
return &AliyunESADeployer{
client: client,
option: option,
infos: make([]string, 0),
}, nil
}
func (d *AliyunESADeployer) GetID() string {
return fmt.Sprintf("%s-%s", d.option.AccessRecord.GetString("name"), d.option.AccessRecord.Id)
}
func (d *AliyunESADeployer) GetInfo() []string {
return d.infos
}
func (d *AliyunESADeployer) Deploy(ctx context.Context) error {
certName := fmt.Sprintf("%s-%s-%s", d.option.Domain, d.option.DomainId, rand.RandStr(6))
// 支持泛解析域名,在 Aliyun DCND 中泛解析域名表示为 .example.com
domain := getDeployString(d.option.DeployConfig, "domain")
if strings.HasPrefix(domain, "*") {
domain = strings.TrimPrefix(domain, "*")
}
setDcdnDomainSSLCertificateRequest := &dcdn20180115.SetDcdnDomainSSLCertificateRequest{
DomainName: tea.String(domain),
CertName: tea.String(certName),
CertType: tea.String("upload"),
SSLProtocol: tea.String("on"),
SSLPub: tea.String(d.option.Certificate.Certificate),
SSLPri: tea.String(d.option.Certificate.PrivateKey),
CertRegion: tea.String("cn-hangzhou"),
}
runtime := &util.RuntimeOptions{}
resp, err := d.client.SetDcdnDomainSSLCertificateWithOptions(setDcdnDomainSSLCertificateRequest, runtime)
if err != nil {
return err
}
d.infos = append(d.infos, toStr("dcdn设置证书", resp))
return nil
}
func (d *AliyunESADeployer) createClient(accessKeyId, accessKeySecret string) (_result *dcdn20180115.Client, _err error) {
config := &openapi.Config{
AccessKeyId: tea.String(accessKeyId),
AccessKeySecret: tea.String(accessKeySecret),
}
config.Endpoint = tea.String("dcdn.aliyuncs.com")
_result = &dcdn20180115.Client{}
_result, _err = dcdn20180115.NewClient(config)
return _result, _err
}

View File

@ -6,8 +6,8 @@ import (
"errors" "errors"
"fmt" "fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" aliyunOpen "github.com/alibabacloud-go/darabonba-openapi/v2/client"
nlb20220430 "github.com/alibabacloud-go/nlb-20220430/v2/client" aliyunNlb "github.com/alibabacloud-go/nlb-20220430/v2/client"
"github.com/alibabacloud-go/tea/tea" "github.com/alibabacloud-go/tea/tea"
"github.com/usual2970/certimate/internal/domain" "github.com/usual2970/certimate/internal/domain"
@ -18,7 +18,7 @@ type AliyunNLBDeployer struct {
option *DeployerOption option *DeployerOption
infos []string infos []string
sdkClient *nlb20220430.Client sdkClient *aliyunNlb.Client
sslUploader uploader.Uploader sslUploader uploader.Uploader
} }
@ -77,12 +77,12 @@ func (d *AliyunNLBDeployer) Deploy(ctx context.Context) error {
return nil return nil
} }
func (d *AliyunNLBDeployer) createSdkClient(accessKeyId, accessKeySecret, region string) (*nlb20220430.Client, error) { func (d *AliyunNLBDeployer) createSdkClient(accessKeyId, accessKeySecret, region string) (*aliyunNlb.Client, error) {
if region == "" { if region == "" {
region = "cn-hangzhou" // NLB 服务默认区域:华东一杭州 region = "cn-hangzhou" // NLB 服务默认区域:华东一杭州
} }
aConfig := &openapi.Config{ aConfig := &aliyunOpen.Config{
AccessKeyId: tea.String(accessKeyId), AccessKeyId: tea.String(accessKeyId),
AccessKeySecret: tea.String(accessKeySecret), AccessKeySecret: tea.String(accessKeySecret),
} }
@ -94,7 +94,7 @@ func (d *AliyunNLBDeployer) createSdkClient(accessKeyId, accessKeySecret, region
} }
aConfig.Endpoint = tea.String(endpoint) aConfig.Endpoint = tea.String(endpoint)
client, err := nlb20220430.NewClient(aConfig) client, err := aliyunNlb.NewClient(aConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -112,7 +112,7 @@ func (d *AliyunNLBDeployer) deployToLoadbalancer(ctx context.Context) error {
// 查询负载均衡实例的详细信息 // 查询负载均衡实例的详细信息
// REF: https://help.aliyun.com/zh/slb/network-load-balancer/developer-reference/api-nlb-2022-04-30-getloadbalancerattribute // REF: https://help.aliyun.com/zh/slb/network-load-balancer/developer-reference/api-nlb-2022-04-30-getloadbalancerattribute
getLoadBalancerAttributeReq := &nlb20220430.GetLoadBalancerAttributeRequest{ getLoadBalancerAttributeReq := &aliyunNlb.GetLoadBalancerAttributeRequest{
LoadBalancerId: tea.String(aliLoadbalancerId), LoadBalancerId: tea.String(aliLoadbalancerId),
} }
getLoadBalancerAttributeResp, err := d.sdkClient.GetLoadBalancerAttribute(getLoadBalancerAttributeReq) getLoadBalancerAttributeResp, err := d.sdkClient.GetLoadBalancerAttribute(getLoadBalancerAttributeReq)
@ -128,7 +128,7 @@ func (d *AliyunNLBDeployer) deployToLoadbalancer(ctx context.Context) error {
listListenersLimit := int32(100) listListenersLimit := int32(100)
var listListenersToken *string = nil var listListenersToken *string = nil
for { for {
listListenersReq := &nlb20220430.ListListenersRequest{ listListenersReq := &aliyunNlb.ListListenersRequest{
MaxResults: tea.Int32(listListenersLimit), MaxResults: tea.Int32(listListenersLimit),
NextToken: listListenersToken, NextToken: listListenersToken,
LoadBalancerIds: []*string{tea.String(aliLoadbalancerId)}, LoadBalancerIds: []*string{tea.String(aliLoadbalancerId)},
@ -202,7 +202,7 @@ func (d *AliyunNLBDeployer) deployToListener(ctx context.Context) error {
func (d *AliyunNLBDeployer) updateListenerCertificate(ctx context.Context, aliListenerId string, aliCertId string) error { func (d *AliyunNLBDeployer) updateListenerCertificate(ctx context.Context, aliListenerId string, aliCertId string) error {
// 查询监听的属性 // 查询监听的属性
// REF: https://help.aliyun.com/zh/slb/network-load-balancer/developer-reference/api-nlb-2022-04-30-getlistenerattribute // REF: https://help.aliyun.com/zh/slb/network-load-balancer/developer-reference/api-nlb-2022-04-30-getlistenerattribute
getListenerAttributeReq := &nlb20220430.GetListenerAttributeRequest{ getListenerAttributeReq := &aliyunNlb.GetListenerAttributeRequest{
ListenerId: tea.String(aliListenerId), ListenerId: tea.String(aliListenerId),
} }
getListenerAttributeResp, err := d.sdkClient.GetListenerAttribute(getListenerAttributeReq) getListenerAttributeResp, err := d.sdkClient.GetListenerAttribute(getListenerAttributeReq)
@ -214,7 +214,7 @@ func (d *AliyunNLBDeployer) updateListenerCertificate(ctx context.Context, aliLi
// 修改监听的属性 // 修改监听的属性
// REF: https://help.aliyun.com/zh/slb/network-load-balancer/developer-reference/api-nlb-2022-04-30-updatelistenerattribute // REF: https://help.aliyun.com/zh/slb/network-load-balancer/developer-reference/api-nlb-2022-04-30-updatelistenerattribute
updateListenerAttributeReq := &nlb20220430.UpdateListenerAttributeRequest{ updateListenerAttributeReq := &aliyunNlb.UpdateListenerAttributeRequest{
ListenerId: tea.String(aliListenerId), ListenerId: tea.String(aliListenerId),
CertificateIds: []*string{tea.String(aliCertId)}, CertificateIds: []*string{tea.String(aliCertId)},
} }

View File

@ -3,6 +3,7 @@ package deployer
import ( import (
"context" "context"
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/aliyun/aliyun-oss-go-sdk/oss"
@ -11,27 +12,30 @@ import (
) )
type AliyunOSSDeployer struct { type AliyunOSSDeployer struct {
client *oss.Client
option *DeployerOption option *DeployerOption
infos []string infos []string
sdkClient *oss.Client
} }
func NewAliyunOSSDeployer(option *DeployerOption) (Deployer, error) { func NewAliyunOSSDeployer(option *DeployerOption) (Deployer, error) {
access := &domain.AliyunAccess{} access := &domain.AliyunAccess{}
json.Unmarshal([]byte(option.Access), access) json.Unmarshal([]byte(option.Access), access)
d := &AliyunOSSDeployer{ client, err := (&AliyunOSSDeployer{}).createSdkClient(
option: option, access.AccessKeyId,
infos: make([]string, 0), access.AccessKeySecret,
} option.DeployConfig.GetConfigAsString("endpoint"),
)
client, err := d.createClient(access.AccessKeyId, access.AccessKeySecret)
if err != nil { if err != nil {
return nil, err return nil, err
} }
d.client = client
return d, nil return &AliyunOSSDeployer{
option: option,
infos: make([]string, 0),
sdkClient: client,
}, nil
} }
func (d *AliyunOSSDeployer) GetID() string { func (d *AliyunOSSDeployer) GetID() string {
@ -43,8 +47,15 @@ func (d *AliyunOSSDeployer) GetInfo() []string {
} }
func (d *AliyunOSSDeployer) Deploy(ctx context.Context) error { func (d *AliyunOSSDeployer) Deploy(ctx context.Context) error {
err := d.client.PutBucketCnameWithCertificate(getDeployString(d.option.DeployConfig, "bucket"), oss.PutBucketCname{ aliBucket := d.option.DeployConfig.GetConfigAsString("bucket")
Cname: getDeployString(d.option.DeployConfig, "domain"), if aliBucket == "" {
return errors.New("`bucket` is required")
}
// 为存储空间绑定自定义域名
// REF: https://help.aliyun.com/zh/oss/developer-reference/putcname
err := d.sdkClient.PutBucketCnameWithCertificate(aliBucket, oss.PutBucketCname{
Cname: d.option.DeployConfig.GetConfigAsString("domain"),
CertificateConfiguration: &oss.CertificateConfiguration{ CertificateConfiguration: &oss.CertificateConfiguration{
Certificate: d.option.Certificate.Certificate, Certificate: d.option.Certificate.Certificate,
PrivateKey: d.option.Certificate.PrivateKey, PrivateKey: d.option.Certificate.PrivateKey,
@ -52,19 +63,21 @@ func (d *AliyunOSSDeployer) Deploy(ctx context.Context) error {
}, },
}) })
if err != nil { if err != nil {
return fmt.Errorf("deploy aliyun oss error: %w", err) return fmt.Errorf("failed to execute sdk request 'oss.PutBucketCnameWithCertificate': %w", err)
} }
return nil return nil
} }
func (d *AliyunOSSDeployer) createClient(accessKeyId, accessKeySecret string) (*oss.Client, error) { func (d *AliyunOSSDeployer) createSdkClient(accessKeyId, accessKeySecret, endpoint string) (*oss.Client, error) {
client, err := oss.New( if endpoint == "" {
getDeployString(d.option.DeployConfig, "endpoint"), endpoint = "oss.aliyuncs.com"
accessKeyId,
accessKeySecret,
)
if err != nil {
return nil, fmt.Errorf("create aliyun client error: %w", err)
} }
client, err := oss.New(endpoint, accessKeyId, accessKeySecret)
if err != nil {
return nil, err
}
return client, nil return client, nil
} }

View File

@ -17,7 +17,7 @@ import (
const ( const (
targetAliyunOSS = "aliyun-oss" targetAliyunOSS = "aliyun-oss"
targetAliyunCDN = "aliyun-cdn" targetAliyunCDN = "aliyun-cdn"
targetAliyunESA = "aliyun-dcdn" targetAliyunDCDN = "aliyun-dcdn"
targetAliyunCLB = "aliyun-clb" targetAliyunCLB = "aliyun-clb"
targetAliyunALB = "aliyun-alb" targetAliyunALB = "aliyun-alb"
targetAliyunNLB = "aliyun-nlb" targetAliyunNLB = "aliyun-nlb"
@ -109,8 +109,8 @@ func getWithDeployConfig(record *models.Record, cert *applicant.Certificate, dep
return NewAliyunOSSDeployer(option) return NewAliyunOSSDeployer(option)
case targetAliyunCDN: case targetAliyunCDN:
return NewAliyunCDNDeployer(option) return NewAliyunCDNDeployer(option)
case targetAliyunESA: case targetAliyunDCDN:
return NewAliyunESADeployer(option) return NewAliyunDCDNDeployer(option)
case targetAliyunCLB: case targetAliyunCLB:
return NewAliyunCLBDeployer(option) return NewAliyunCLBDeployer(option)
case targetAliyunALB: case targetAliyunALB:

View File

@ -6,8 +6,8 @@ import (
"fmt" "fmt"
"strings" "strings"
corev1 "k8s.io/api/core/v1" k8sCore "k8s.io/api/core/v1"
k8sMetaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" k8sMeta "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest" "k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
@ -49,46 +49,46 @@ func (d *K8sSecretDeployer) Deploy(ctx context.Context) error {
d.infos = append(d.infos, toStr("kubeClient create success.", nil)) d.infos = append(d.infos, toStr("kubeClient create success.", nil))
namespace := getDeployString(d.option.DeployConfig, "namespace") namespace := d.option.DeployConfig.GetConfigAsString("namespace")
if namespace == "" { if namespace == "" {
namespace = "default" namespace = "default"
} }
secretName := getDeployString(d.option.DeployConfig, "secretName") secretName := d.option.DeployConfig.GetConfigAsString("secretName")
if secretName == "" { if secretName == "" {
return fmt.Errorf("k8s secret name is empty") return fmt.Errorf("k8s secret name is empty")
} }
secretDataKeyForCrt := getDeployString(d.option.DeployConfig, "secretDataKeyForCrt") secretDataKeyForCrt := d.option.DeployConfig.GetConfigAsString("secretDataKeyForCrt")
if secretDataKeyForCrt == "" { if secretDataKeyForCrt == "" {
namespace = "tls.crt" namespace = "tls.crt"
} }
secretDataKeyForKey := getDeployString(d.option.DeployConfig, "secretDataKeyForKey") secretDataKeyForKey := d.option.DeployConfig.GetConfigAsString("secretDataKeyForKey")
if secretDataKeyForKey == "" { if secretDataKeyForKey == "" {
namespace = "tls.key" namespace = "tls.key"
} }
certificate, err := x509.ParseCertificateFromPEM(d.option.Certificate.Certificate) certX509, err := x509.ParseCertificateFromPEM(d.option.Certificate.Certificate)
if err != nil { if err != nil {
return fmt.Errorf("failed to parse certificate: %w", err) return fmt.Errorf("failed to parse certificate: %w", err)
} }
secretPayload := corev1.Secret{ secretPayload := k8sCore.Secret{
TypeMeta: k8sMetaV1.TypeMeta{ TypeMeta: k8sMeta.TypeMeta{
Kind: "Secret", Kind: "Secret",
APIVersion: "v1", APIVersion: "v1",
}, },
ObjectMeta: k8sMetaV1.ObjectMeta{ ObjectMeta: k8sMeta.ObjectMeta{
Name: secretName, Name: secretName,
Annotations: map[string]string{ Annotations: map[string]string{
"certimate/domains": d.option.Domain, "certimate/domains": d.option.Domain,
"certimate/alt-names": strings.Join(certificate.DNSNames, ","), "certimate/alt-names": strings.Join(certX509.DNSNames, ","),
"certimate/common-name": certificate.Subject.CommonName, "certimate/common-name": certX509.Subject.CommonName,
"certimate/issuer-organization": strings.Join(certificate.Issuer.Organization, ","), "certimate/issuer-organization": strings.Join(certX509.Issuer.Organization, ","),
}, },
}, },
Type: corev1.SecretType("kubernetes.io/tls"), Type: k8sCore.SecretType("kubernetes.io/tls"),
} }
secretPayload.Data = make(map[string][]byte) secretPayload.Data = make(map[string][]byte)
@ -96,9 +96,9 @@ func (d *K8sSecretDeployer) Deploy(ctx context.Context) error {
secretPayload.Data[secretDataKeyForKey] = []byte(d.option.Certificate.PrivateKey) secretPayload.Data[secretDataKeyForKey] = []byte(d.option.Certificate.PrivateKey)
// 获取 Secret 实例 // 获取 Secret 实例
_, err = client.CoreV1().Secrets(namespace).Get(context.TODO(), secretName, k8sMetaV1.GetOptions{}) _, err = client.CoreV1().Secrets(namespace).Get(context.TODO(), secretName, k8sMeta.GetOptions{})
if err != nil { if err != nil {
_, err = client.CoreV1().Secrets(namespace).Create(context.TODO(), &secretPayload, k8sMetaV1.CreateOptions{}) _, err = client.CoreV1().Secrets(namespace).Create(context.TODO(), &secretPayload, k8sMeta.CreateOptions{})
if err != nil { if err != nil {
return fmt.Errorf("failed to create k8s secret: %w", err) return fmt.Errorf("failed to create k8s secret: %w", err)
} else { } else {
@ -108,7 +108,7 @@ func (d *K8sSecretDeployer) Deploy(ctx context.Context) error {
} }
// 更新 Secret 实例 // 更新 Secret 实例
_, err = client.CoreV1().Secrets(namespace).Update(ctx, &secretPayload, k8sMetaV1.UpdateOptions{}) _, err = client.CoreV1().Secrets(namespace).Update(ctx, &secretPayload, k8sMeta.UpdateOptions{})
if err != nil { if err != nil {
return fmt.Errorf("failed to update k8s secret: %w", err) return fmt.Errorf("failed to update k8s secret: %w", err)
} }

View File

@ -6,9 +6,8 @@ import (
"strings" "strings"
"time" "time"
cas20200407 "github.com/alibabacloud-go/cas-20200407/v3/client" aliyunCas "github.com/alibabacloud-go/cas-20200407/v3/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" aliyunOpen "github.com/alibabacloud-go/darabonba-openapi/v2/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea" "github.com/alibabacloud-go/tea/tea"
"github.com/usual2970/certimate/internal/pkg/utils/x509" "github.com/usual2970/certimate/internal/pkg/utils/x509"
@ -22,8 +21,7 @@ type AliyunCASUploaderConfig struct {
type AliyunCASUploader struct { type AliyunCASUploader struct {
config *AliyunCASUploaderConfig config *AliyunCASUploaderConfig
sdkClient *cas20200407.Client sdkClient *aliyunCas.Client
sdkRuntime *util.RuntimeOptions
} }
func NewAliyunCASUploader(config *AliyunCASUploaderConfig) (Uploader, error) { func NewAliyunCASUploader(config *AliyunCASUploaderConfig) (Uploader, error) {
@ -39,7 +37,6 @@ func NewAliyunCASUploader(config *AliyunCASUploaderConfig) (Uploader, error) {
return &AliyunCASUploader{ return &AliyunCASUploader{
config: config, config: config,
sdkClient: client, sdkClient: client,
sdkRuntime: &util.RuntimeOptions{},
}, nil }, nil
} }
@ -56,12 +53,12 @@ func (u *AliyunCASUploader) Upload(ctx context.Context, certPem string, privkeyP
listUserCertificateOrderPage := int64(1) listUserCertificateOrderPage := int64(1)
listUserCertificateOrderLimit := int64(50) listUserCertificateOrderLimit := int64(50)
for { for {
listUserCertificateOrderReq := &cas20200407.ListUserCertificateOrderRequest{ listUserCertificateOrderReq := &aliyunCas.ListUserCertificateOrderRequest{
CurrentPage: tea.Int64(listUserCertificateOrderPage), CurrentPage: tea.Int64(listUserCertificateOrderPage),
ShowSize: tea.Int64(listUserCertificateOrderLimit), ShowSize: tea.Int64(listUserCertificateOrderLimit),
OrderType: tea.String("CERT"), OrderType: tea.String("CERT"),
} }
listUserCertificateOrderResp, err := u.sdkClient.ListUserCertificateOrderWithOptions(listUserCertificateOrderReq, u.sdkRuntime) listUserCertificateOrderResp, err := u.sdkClient.ListUserCertificateOrder(listUserCertificateOrderReq)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'cas.ListUserCertificateOrder': %w", err) return nil, fmt.Errorf("failed to execute sdk request 'cas.ListUserCertificateOrder': %w", err)
} }
@ -69,10 +66,10 @@ func (u *AliyunCASUploader) Upload(ctx context.Context, certPem string, privkeyP
if listUserCertificateOrderResp.Body.CertificateOrderList != nil { if listUserCertificateOrderResp.Body.CertificateOrderList != nil {
for _, certDetail := range listUserCertificateOrderResp.Body.CertificateOrderList { for _, certDetail := range listUserCertificateOrderResp.Body.CertificateOrderList {
if strings.EqualFold(certX509.SerialNumber.Text(16), *certDetail.SerialNo) { if strings.EqualFold(certX509.SerialNumber.Text(16), *certDetail.SerialNo) {
getUserCertificateDetailReq := &cas20200407.GetUserCertificateDetailRequest{ getUserCertificateDetailReq := &aliyunCas.GetUserCertificateDetailRequest{
CertId: certDetail.CertificateId, CertId: certDetail.CertificateId,
} }
getUserCertificateDetailResp, err := u.sdkClient.GetUserCertificateDetailWithOptions(getUserCertificateDetailReq, u.sdkRuntime) getUserCertificateDetailResp, err := u.sdkClient.GetUserCertificateDetail(getUserCertificateDetailReq)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'cas.GetUserCertificateDetail': %w", err) return nil, fmt.Errorf("failed to execute sdk request 'cas.GetUserCertificateDetail': %w", err)
} }
@ -116,12 +113,12 @@ func (u *AliyunCASUploader) Upload(ctx context.Context, certPem string, privkeyP
// 上传新证书 // 上传新证书
// REF: https://help.aliyun.com/zh/ssl-certificate/developer-reference/api-cas-2020-04-07-uploadusercertificate // REF: https://help.aliyun.com/zh/ssl-certificate/developer-reference/api-cas-2020-04-07-uploadusercertificate
uploadUserCertificateReq := &cas20200407.UploadUserCertificateRequest{ uploadUserCertificateReq := &aliyunCas.UploadUserCertificateRequest{
Name: tea.String(certName), Name: tea.String(certName),
Cert: tea.String(certPem), Cert: tea.String(certPem),
Key: tea.String(privkeyPem), Key: tea.String(privkeyPem),
} }
uploadUserCertificateResp, err := u.sdkClient.UploadUserCertificateWithOptions(uploadUserCertificateReq, u.sdkRuntime) uploadUserCertificateResp, err := u.sdkClient.UploadUserCertificate(uploadUserCertificateReq)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'cas.UploadUserCertificate': %w", err) return nil, fmt.Errorf("failed to execute sdk request 'cas.UploadUserCertificate': %w", err)
} }
@ -133,12 +130,12 @@ func (u *AliyunCASUploader) Upload(ctx context.Context, certPem string, privkeyP
}, nil }, nil
} }
func (u *AliyunCASUploader) createSdkClient(accessKeyId, accessKeySecret, region string) (*cas20200407.Client, error) { func (u *AliyunCASUploader) createSdkClient(accessKeyId, accessKeySecret, region string) (*aliyunCas.Client, error) {
if region == "" { if region == "" {
region = "cn-hangzhou" // CAS 服务默认区域:华东一杭州 region = "cn-hangzhou" // CAS 服务默认区域:华东一杭州
} }
aConfig := &openapi.Config{ aConfig := &aliyunOpen.Config{
AccessKeyId: tea.String(accessKeyId), AccessKeyId: tea.String(accessKeyId),
AccessKeySecret: tea.String(accessKeySecret), AccessKeySecret: tea.String(accessKeySecret),
} }
@ -152,7 +149,7 @@ func (u *AliyunCASUploader) createSdkClient(accessKeyId, accessKeySecret, region
} }
aConfig.Endpoint = tea.String(endpoint) aConfig.Endpoint = tea.String(endpoint)
client, err := cas20200407.NewClient(aConfig) client, err := aliyunCas.NewClient(aConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -8,9 +8,8 @@ import (
"strings" "strings"
"time" "time"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" aliyunOpen "github.com/alibabacloud-go/darabonba-openapi/v2/client"
slb20140515 "github.com/alibabacloud-go/slb-20140515/v4/client" aliyunSlb "github.com/alibabacloud-go/slb-20140515/v4/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea" "github.com/alibabacloud-go/tea/tea"
"github.com/usual2970/certimate/internal/pkg/utils/x509" "github.com/usual2970/certimate/internal/pkg/utils/x509"
@ -24,8 +23,7 @@ type AliyunSLBUploaderConfig struct {
type AliyunSLBUploader struct { type AliyunSLBUploader struct {
config *AliyunSLBUploaderConfig config *AliyunSLBUploaderConfig
sdkClient *slb20140515.Client sdkClient *aliyunSlb.Client
sdkRuntime *util.RuntimeOptions
} }
func NewAliyunSLBUploader(config *AliyunSLBUploaderConfig) (Uploader, error) { func NewAliyunSLBUploader(config *AliyunSLBUploaderConfig) (Uploader, error) {
@ -41,7 +39,6 @@ func NewAliyunSLBUploader(config *AliyunSLBUploaderConfig) (Uploader, error) {
return &AliyunSLBUploader{ return &AliyunSLBUploader{
config: config, config: config,
sdkClient: client, sdkClient: client,
sdkRuntime: &util.RuntimeOptions{},
}, nil }, nil
} }
@ -54,10 +51,10 @@ func (u *AliyunSLBUploader) Upload(ctx context.Context, certPem string, privkeyP
// 查询证书列表,避免重复上传 // 查询证书列表,避免重复上传
// REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-describeservercertificates // REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-describeservercertificates
describeServerCertificatesReq := &slb20140515.DescribeServerCertificatesRequest{ describeServerCertificatesReq := &aliyunSlb.DescribeServerCertificatesRequest{
RegionId: tea.String(u.config.Region), RegionId: tea.String(u.config.Region),
} }
describeServerCertificatesResp, err := u.sdkClient.DescribeServerCertificatesWithOptions(describeServerCertificatesReq, u.sdkRuntime) describeServerCertificatesResp, err := u.sdkClient.DescribeServerCertificates(describeServerCertificatesReq)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'slb.DescribeServerCertificates': %w", err) return nil, fmt.Errorf("failed to execute sdk request 'slb.DescribeServerCertificates': %w", err)
} }
@ -85,13 +82,13 @@ func (u *AliyunSLBUploader) Upload(ctx context.Context, certPem string, privkeyP
// 上传新证书 // 上传新证书
// REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-uploadservercertificate // REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-uploadservercertificate
uploadServerCertificateReq := &slb20140515.UploadServerCertificateRequest{ uploadServerCertificateReq := &aliyunSlb.UploadServerCertificateRequest{
RegionId: tea.String(u.config.Region), RegionId: tea.String(u.config.Region),
ServerCertificateName: tea.String(certName), ServerCertificateName: tea.String(certName),
ServerCertificate: tea.String(certPem), ServerCertificate: tea.String(certPem),
PrivateKey: tea.String(privkeyPem), PrivateKey: tea.String(privkeyPem),
} }
uploadServerCertificateResp, err := u.sdkClient.UploadServerCertificateWithOptions(uploadServerCertificateReq, u.sdkRuntime) uploadServerCertificateResp, err := u.sdkClient.UploadServerCertificate(uploadServerCertificateReq)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'slb.UploadServerCertificate': %w", err) return nil, fmt.Errorf("failed to execute sdk request 'slb.UploadServerCertificate': %w", err)
} }
@ -103,12 +100,12 @@ func (u *AliyunSLBUploader) Upload(ctx context.Context, certPem string, privkeyP
}, nil }, nil
} }
func (u *AliyunSLBUploader) createSdkClient(accessKeyId, accessKeySecret, region string) (*slb20140515.Client, error) { func (u *AliyunSLBUploader) createSdkClient(accessKeyId, accessKeySecret, region string) (*aliyunSlb.Client, error) {
if region == "" { if region == "" {
region = "cn-hangzhou" // SLB 服务默认区域:华东一杭州 region = "cn-hangzhou" // SLB 服务默认区域:华东一杭州
} }
aConfig := &openapi.Config{ aConfig := &aliyunOpen.Config{
AccessKeyId: tea.String(accessKeyId), AccessKeyId: tea.String(accessKeyId),
AccessKeySecret: tea.String(accessKeySecret), AccessKeySecret: tea.String(accessKeySecret),
} }
@ -125,7 +122,7 @@ func (u *AliyunSLBUploader) createSdkClient(accessKeyId, accessKeySecret, region
} }
aConfig.Endpoint = tea.String(endpoint) aConfig.Endpoint = tea.String(endpoint)
client, err := slb20140515.NewClient(aConfig) client, err := aliyunSlb.NewClient(aConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }