diff --git a/internal/deployer/providers.go b/internal/deployer/providers.go index 39b8a49f..1984e5e5 100644 --- a/internal/deployer/providers.go +++ b/internal/deployer/providers.go @@ -27,6 +27,7 @@ import ( pBaiduCloudAppBLB "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/baiducloud-appblb" pBaiduCloudBLB "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/baiducloud-blb" pBaiduCloudCDN "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/baiducloud-cdn" + pBaiduCloudCert "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/baiducloud-cert" pBaishanCDN "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/baishan-cdn" pBaotaPanelConsole "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/baotapanel-console" pBaotaPanelSite "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/baotapanel-site" @@ -305,7 +306,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) { } } - case domain.DeployProviderTypeBaiduCloudAppBLB, domain.DeployProviderTypeBaiduCloudBLB, domain.DeployProviderTypeBaiduCloudCDN: + case domain.DeployProviderTypeBaiduCloudAppBLB, domain.DeployProviderTypeBaiduCloudBLB, domain.DeployProviderTypeBaiduCloudCDN, domain.DeployProviderTypeBaiduCloudCert: { access := domain.AccessConfigForBaiduCloud{} if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil { @@ -345,6 +346,13 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) { }) return deployer, err + case domain.DeployProviderTypeBaiduCloudCert: + deployer, err := pBaiduCloudCert.NewDeployer(&pBaiduCloudCert.DeployerConfig{ + AccessKeyId: access.AccessKeyId, + SecretAccessKey: access.SecretAccessKey, + }) + return deployer, err + default: break } diff --git a/internal/domain/provider.go b/internal/domain/provider.go index 79ee6709..cce395fd 100644 --- a/internal/domain/provider.go +++ b/internal/domain/provider.go @@ -138,6 +138,7 @@ const ( DeployProviderTypeBaiduCloudAppBLB = DeployProviderType("baiducloud-appblb") DeployProviderTypeBaiduCloudBLB = DeployProviderType("baiducloud-blb") DeployProviderTypeBaiduCloudCDN = DeployProviderType("baiducloud-cdn") + DeployProviderTypeBaiduCloudCert = DeployProviderType("baiducloud-cert") DeployProviderTypeBaishanCDN = DeployProviderType("baishan-cdn") DeployProviderTypeBaotaPanelConsole = DeployProviderType("baotapanel-console") DeployProviderTypeBaotaPanelSite = DeployProviderType("baotapanel-site") diff --git a/internal/pkg/core/deployer/providers/baiducloud-appblb/baiducloud_appblb.go b/internal/pkg/core/deployer/providers/baiducloud-appblb/baiducloud_appblb.go index c470bfcd..7a5f7ef2 100644 --- a/internal/pkg/core/deployer/providers/baiducloud-appblb/baiducloud_appblb.go +++ b/internal/pkg/core/deployer/providers/baiducloud-appblb/baiducloud_appblb.go @@ -14,7 +14,7 @@ import ( "github.com/usual2970/certimate/internal/pkg/core/deployer" "github.com/usual2970/certimate/internal/pkg/core/uploader" - uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/baiducloud-cas" + uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/baiducloud-cert" "github.com/usual2970/certimate/internal/pkg/utils/sliceutil" ) diff --git a/internal/pkg/core/deployer/providers/baiducloud-blb/baiducloud_blb.go b/internal/pkg/core/deployer/providers/baiducloud-blb/baiducloud_blb.go index c6b19da6..6be94e6d 100644 --- a/internal/pkg/core/deployer/providers/baiducloud-blb/baiducloud_blb.go +++ b/internal/pkg/core/deployer/providers/baiducloud-blb/baiducloud_blb.go @@ -14,7 +14,7 @@ import ( "github.com/usual2970/certimate/internal/pkg/core/deployer" "github.com/usual2970/certimate/internal/pkg/core/uploader" - uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/baiducloud-cas" + uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/baiducloud-cert" "github.com/usual2970/certimate/internal/pkg/utils/sliceutil" ) diff --git a/internal/pkg/core/deployer/providers/baiducloud-cert/baiducloud_cert.go b/internal/pkg/core/deployer/providers/baiducloud-cert/baiducloud_cert.go new file mode 100644 index 00000000..d51018f0 --- /dev/null +++ b/internal/pkg/core/deployer/providers/baiducloud-cert/baiducloud_cert.go @@ -0,0 +1,68 @@ +package baiducloudcert + +import ( + "context" + "log/slog" + + xerrors "github.com/pkg/errors" + + "github.com/usual2970/certimate/internal/pkg/core/deployer" + "github.com/usual2970/certimate/internal/pkg/core/uploader" + uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/baiducloud-cert" +) + +type DeployerConfig struct { + // 百度智能云 AccessKeyId。 + AccessKeyId string `json:"accessKeyId"` + // 百度智能云 SecretAccessKey。 + SecretAccessKey string `json:"secretAccessKey"` +} + +type DeployerProvider struct { + config *DeployerConfig + logger *slog.Logger + sslUploader uploader.Uploader +} + +var _ deployer.Deployer = (*DeployerProvider)(nil) + +func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) { + if config == nil { + panic("config is nil") + } + + uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{ + AccessKeyId: config.AccessKeyId, + SecretAccessKey: config.SecretAccessKey, + }) + if err != nil { + return nil, xerrors.Wrap(err, "failed to create ssl uploader") + } + + return &DeployerProvider{ + config: config, + logger: slog.Default(), + sslUploader: uploader, + }, nil +} + +func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer { + if logger == nil { + d.logger = slog.Default() + } else { + d.logger = logger + } + return d +} + +func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPem string) (*deployer.DeployResult, error) { + // 上传证书到 CAS + upres, err := d.sslUploader.Upload(ctx, certPem, privkeyPem) + if err != nil { + return nil, xerrors.Wrap(err, "failed to upload certificate file") + } else { + d.logger.Info("ssl certificate uploaded", slog.Any("result", upres)) + } + + return &deployer.DeployResult{}, nil +} diff --git a/internal/pkg/core/uploader/providers/baiducloud-cas/baiducloud_cas.go b/internal/pkg/core/uploader/providers/baiducloud-cert/baiducloud_cert.go similarity index 99% rename from internal/pkg/core/uploader/providers/baiducloud-cas/baiducloud_cas.go rename to internal/pkg/core/uploader/providers/baiducloud-cert/baiducloud_cert.go index 9c0167a8..1f311f87 100644 --- a/internal/pkg/core/uploader/providers/baiducloud-cas/baiducloud_cas.go +++ b/internal/pkg/core/uploader/providers/baiducloud-cert/baiducloud_cert.go @@ -1,4 +1,4 @@ -package baiducloudcas +package baiducloudcert import ( "context" @@ -11,7 +11,7 @@ import ( "github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/utils/certutil" - bdsdk "github.com/usual2970/certimate/internal/pkg/vendors/baiducloud-sdk/cas" + bdsdk "github.com/usual2970/certimate/internal/pkg/vendors/baiducloud-sdk/cert" ) type UploaderConfig struct { diff --git a/internal/pkg/core/uploader/providers/baiducloud-cas/baiducloud_cas_test.go b/internal/pkg/core/uploader/providers/baiducloud-cert/baiducloud_cert_test.go similarity index 96% rename from internal/pkg/core/uploader/providers/baiducloud-cas/baiducloud_cas_test.go rename to internal/pkg/core/uploader/providers/baiducloud-cert/baiducloud_cert_test.go index d727f71f..55de1576 100644 --- a/internal/pkg/core/uploader/providers/baiducloud-cas/baiducloud_cas_test.go +++ b/internal/pkg/core/uploader/providers/baiducloud-cert/baiducloud_cert_test.go @@ -1,4 +1,4 @@ -package baiducloudcas_test +package baiducloudcert_test import ( "context" @@ -9,7 +9,7 @@ import ( "strings" "testing" - provider "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/baiducloud-cas" + provider "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/baiducloud-cert" ) var ( diff --git a/internal/pkg/vendors/baiducloud-sdk/cas/api.go b/internal/pkg/vendors/baiducloud-sdk/cert/api.go similarity index 100% rename from internal/pkg/vendors/baiducloud-sdk/cas/api.go rename to internal/pkg/vendors/baiducloud-sdk/cert/api.go diff --git a/internal/pkg/vendors/baiducloud-sdk/cas/client.go b/internal/pkg/vendors/baiducloud-sdk/cert/client.go similarity index 100% rename from internal/pkg/vendors/baiducloud-sdk/cas/client.go rename to internal/pkg/vendors/baiducloud-sdk/cert/client.go diff --git a/internal/pkg/vendors/baiducloud-sdk/cas/models.go b/internal/pkg/vendors/baiducloud-sdk/cert/models.go similarity index 100% rename from internal/pkg/vendors/baiducloud-sdk/cas/models.go rename to internal/pkg/vendors/baiducloud-sdk/cert/models.go diff --git a/ui/src/domain/provider.ts b/ui/src/domain/provider.ts index 088a2d62..583c5118 100644 --- a/ui/src/domain/provider.ts +++ b/ui/src/domain/provider.ts @@ -252,6 +252,7 @@ export const DEPLOY_PROVIDERS = Object.freeze({ BAIDUCLOUD_APPBLB: `${ACCESS_PROVIDERS.BAIDUCLOUD}-appblb`, BAIDUCLOUD_BLB: `${ACCESS_PROVIDERS.BAIDUCLOUD}-blb`, BAIDUCLOUD_CDN: `${ACCESS_PROVIDERS.BAIDUCLOUD}-cdn`, + BAIDUCLOUD_CERT: `${ACCESS_PROVIDERS.BAIDUCLOUD}-cert`, BAISHAN_CDN: `${ACCESS_PROVIDERS.BAISHAN}-cdn`, BAOTAPANEL_CONSOLE: `${ACCESS_PROVIDERS.BAOTAPANEL}-console`, BAOTAPANEL_SITE: `${ACCESS_PROVIDERS.BAOTAPANEL}-site`, @@ -358,12 +359,13 @@ export const deployProvidersMap: Map