refactor: clean code

This commit is contained in:
Fu Diwei 2025-03-19 10:30:12 +08:00
parent 882f802585
commit 914c5b4870
42 changed files with 377 additions and 375 deletions

View File

@ -13,7 +13,7 @@ import (
"golang.org/x/sync/singleflight" "golang.org/x/sync/singleflight"
"github.com/usual2970/certimate/internal/domain" "github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
"github.com/usual2970/certimate/internal/repository" "github.com/usual2970/certimate/internal/repository"
) )
@ -40,7 +40,7 @@ func newAcmeUser(ca, email string) (*acmeUser, error) {
return nil, err return nil, err
} }
keyPEM, err := certs.ConvertECPrivateKeyToPEM(key) keyPEM, err := certutil.ConvertECPrivateKeyToPEM(key)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -64,7 +64,7 @@ func (u acmeUser) GetRegistration() *registration.Resource {
} }
func (u *acmeUser) GetPrivateKey() crypto.PrivateKey { func (u *acmeUser) GetPrivateKey() crypto.PrivateKey {
rs, _ := certs.ParseECPrivateKeyFromPEM(u.privkey) rs, _ := certutil.ParseECPrivateKeyFromPEM(u.privkey)
return rs return rs
} }

View File

@ -18,7 +18,7 @@ import (
"golang.org/x/time/rate" "golang.org/x/time/rate"
"github.com/usual2970/certimate/internal/domain" "github.com/usual2970/certimate/internal/domain"
uslices "github.com/usual2970/certimate/internal/pkg/utils/slices" "github.com/usual2970/certimate/internal/pkg/utils/sliceutil"
"github.com/usual2970/certimate/internal/repository" "github.com/usual2970/certimate/internal/repository"
) )
@ -58,12 +58,12 @@ func NewWithApplyNode(node *domain.WorkflowNode) (Applicant, error) {
nodeConfig := node.GetConfigForApply() nodeConfig := node.GetConfigForApply()
options := &applicantOptions{ options := &applicantOptions{
Domains: uslices.Filter(strings.Split(nodeConfig.Domains, ";"), func(s string) bool { return s != "" }), Domains: sliceutil.Filter(strings.Split(nodeConfig.Domains, ";"), func(s string) bool { return s != "" }),
ContactEmail: nodeConfig.ContactEmail, ContactEmail: nodeConfig.ContactEmail,
Provider: domain.ApplyDNSProviderType(nodeConfig.Provider), Provider: domain.ApplyDNSProviderType(nodeConfig.Provider),
ProviderApplyConfig: nodeConfig.ProviderConfig, ProviderApplyConfig: nodeConfig.ProviderConfig,
KeyAlgorithm: nodeConfig.KeyAlgorithm, KeyAlgorithm: nodeConfig.KeyAlgorithm,
Nameservers: uslices.Filter(strings.Split(nodeConfig.Nameservers, ";"), func(s string) bool { return s != "" }), Nameservers: sliceutil.Filter(strings.Split(nodeConfig.Nameservers, ";"), func(s string) bool { return s != "" }),
DnsPropagationTimeout: nodeConfig.DnsPropagationTimeout, DnsPropagationTimeout: nodeConfig.DnsPropagationTimeout,
DnsTTL: nodeConfig.DnsTTL, DnsTTL: nodeConfig.DnsTTL,
DisableFollowCNAME: nodeConfig.DisableFollowCNAME, DisableFollowCNAME: nodeConfig.DisableFollowCNAME,

View File

@ -29,7 +29,7 @@ import (
pTencentCloud "github.com/usual2970/certimate/internal/pkg/core/applicant/acme-dns-01/lego-providers/tencentcloud" pTencentCloud "github.com/usual2970/certimate/internal/pkg/core/applicant/acme-dns-01/lego-providers/tencentcloud"
pVolcEngine "github.com/usual2970/certimate/internal/pkg/core/applicant/acme-dns-01/lego-providers/volcengine" pVolcEngine "github.com/usual2970/certimate/internal/pkg/core/applicant/acme-dns-01/lego-providers/volcengine"
pWestcn "github.com/usual2970/certimate/internal/pkg/core/applicant/acme-dns-01/lego-providers/westcn" pWestcn "github.com/usual2970/certimate/internal/pkg/core/applicant/acme-dns-01/lego-providers/westcn"
"github.com/usual2970/certimate/internal/pkg/utils/maps" "github.com/usual2970/certimate/internal/pkg/utils/maputil"
) )
func createApplicant(options *applicantOptions) (challenge.Provider, error) { func createApplicant(options *applicantOptions) (challenge.Provider, error) {
@ -41,7 +41,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeACMEHttpReq: case domain.ApplyDNSProviderTypeACMEHttpReq:
{ {
access := domain.AccessConfigForACMEHttpReq{} access := domain.AccessConfigForACMEHttpReq{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -58,7 +58,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeAliyun, domain.ApplyDNSProviderTypeAliyunDNS: case domain.ApplyDNSProviderTypeAliyun, domain.ApplyDNSProviderTypeAliyunDNS:
{ {
access := domain.AccessConfigForAliyun{} access := domain.AccessConfigForAliyun{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -74,15 +74,15 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeAWS, domain.ApplyDNSProviderTypeAWSRoute53: case domain.ApplyDNSProviderTypeAWS, domain.ApplyDNSProviderTypeAWSRoute53:
{ {
access := domain.AccessConfigForAWS{} access := domain.AccessConfigForAWS{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
applicant, err := pAWSRoute53.NewChallengeProvider(&pAWSRoute53.ChallengeProviderConfig{ applicant, err := pAWSRoute53.NewChallengeProvider(&pAWSRoute53.ChallengeProviderConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
SecretAccessKey: access.SecretAccessKey, SecretAccessKey: access.SecretAccessKey,
Region: maps.GetValueAsString(options.ProviderApplyConfig, "region"), Region: maputil.GetString(options.ProviderApplyConfig, "region"),
HostedZoneId: maps.GetValueAsString(options.ProviderApplyConfig, "hostedZoneId"), HostedZoneId: maputil.GetString(options.ProviderApplyConfig, "hostedZoneId"),
DnsPropagationTimeout: options.DnsPropagationTimeout, DnsPropagationTimeout: options.DnsPropagationTimeout,
DnsTTL: options.DnsTTL, DnsTTL: options.DnsTTL,
}) })
@ -92,7 +92,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeAzure, domain.ApplyDNSProviderTypeAzureDNS: case domain.ApplyDNSProviderTypeAzure, domain.ApplyDNSProviderTypeAzureDNS:
{ {
access := domain.AccessConfigForAzure{} access := domain.AccessConfigForAzure{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -110,7 +110,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeBaiduCloud, domain.ApplyDNSProviderTypeBaiduCloudDNS: case domain.ApplyDNSProviderTypeBaiduCloud, domain.ApplyDNSProviderTypeBaiduCloudDNS:
{ {
access := domain.AccessConfigForBaiduCloud{} access := domain.AccessConfigForBaiduCloud{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -126,7 +126,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeCloudflare: case domain.ApplyDNSProviderTypeCloudflare:
{ {
access := domain.AccessConfigForCloudflare{} access := domain.AccessConfigForCloudflare{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -141,7 +141,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeClouDNS: case domain.ApplyDNSProviderTypeClouDNS:
{ {
access := domain.AccessConfigForClouDNS{} access := domain.AccessConfigForClouDNS{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -157,7 +157,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeCMCCCloud: case domain.ApplyDNSProviderTypeCMCCCloud:
{ {
access := domain.AccessConfigForCMCCCloud{} access := domain.AccessConfigForCMCCCloud{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -173,7 +173,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeDNSLA: case domain.ApplyDNSProviderTypeDNSLA:
{ {
access := domain.AccessConfigForDNSLA{} access := domain.AccessConfigForDNSLA{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -189,7 +189,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeGcore: case domain.ApplyDNSProviderTypeGcore:
{ {
access := domain.AccessConfigForGcore{} access := domain.AccessConfigForGcore{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -204,7 +204,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeGname: case domain.ApplyDNSProviderTypeGname:
{ {
access := domain.AccessConfigForGname{} access := domain.AccessConfigForGname{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -220,7 +220,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeGoDaddy: case domain.ApplyDNSProviderTypeGoDaddy:
{ {
access := domain.AccessConfigForGoDaddy{} access := domain.AccessConfigForGoDaddy{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -236,14 +236,14 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeHuaweiCloud, domain.ApplyDNSProviderTypeHuaweiCloudDNS: case domain.ApplyDNSProviderTypeHuaweiCloud, domain.ApplyDNSProviderTypeHuaweiCloudDNS:
{ {
access := domain.AccessConfigForHuaweiCloud{} access := domain.AccessConfigForHuaweiCloud{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
applicant, err := pHuaweiCloud.NewChallengeProvider(&pHuaweiCloud.ChallengeProviderConfig{ applicant, err := pHuaweiCloud.NewChallengeProvider(&pHuaweiCloud.ChallengeProviderConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
SecretAccessKey: access.SecretAccessKey, SecretAccessKey: access.SecretAccessKey,
Region: maps.GetValueAsString(options.ProviderApplyConfig, "region"), Region: maputil.GetString(options.ProviderApplyConfig, "region"),
DnsPropagationTimeout: options.DnsPropagationTimeout, DnsPropagationTimeout: options.DnsPropagationTimeout,
DnsTTL: options.DnsTTL, DnsTTL: options.DnsTTL,
}) })
@ -253,14 +253,14 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeJDCloud, domain.ApplyDNSProviderTypeJDCloudDNS: case domain.ApplyDNSProviderTypeJDCloud, domain.ApplyDNSProviderTypeJDCloudDNS:
{ {
access := domain.AccessConfigForJDCloud{} access := domain.AccessConfigForJDCloud{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
applicant, err := pJDCloud.NewChallengeProvider(&pJDCloud.ChallengeProviderConfig{ applicant, err := pJDCloud.NewChallengeProvider(&pJDCloud.ChallengeProviderConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
RegionId: maps.GetValueAsString(options.ProviderApplyConfig, "region_id"), RegionId: maputil.GetString(options.ProviderApplyConfig, "region_id"),
DnsPropagationTimeout: options.DnsPropagationTimeout, DnsPropagationTimeout: options.DnsPropagationTimeout,
DnsTTL: options.DnsTTL, DnsTTL: options.DnsTTL,
}) })
@ -270,7 +270,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeNamecheap: case domain.ApplyDNSProviderTypeNamecheap:
{ {
access := domain.AccessConfigForNamecheap{} access := domain.AccessConfigForNamecheap{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -286,7 +286,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeNameDotCom: case domain.ApplyDNSProviderTypeNameDotCom:
{ {
access := domain.AccessConfigForNameDotCom{} access := domain.AccessConfigForNameDotCom{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -302,7 +302,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeNameSilo: case domain.ApplyDNSProviderTypeNameSilo:
{ {
access := domain.AccessConfigForNameSilo{} access := domain.AccessConfigForNameSilo{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -317,7 +317,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeNS1: case domain.ApplyDNSProviderTypeNS1:
{ {
access := domain.AccessConfigForNS1{} access := domain.AccessConfigForNS1{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -332,7 +332,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypePowerDNS: case domain.ApplyDNSProviderTypePowerDNS:
{ {
access := domain.AccessConfigForPowerDNS{} access := domain.AccessConfigForPowerDNS{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -348,7 +348,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeRainYun: case domain.ApplyDNSProviderTypeRainYun:
{ {
access := domain.AccessConfigForRainYun{} access := domain.AccessConfigForRainYun{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -363,7 +363,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeTencentCloud, domain.ApplyDNSProviderTypeTencentCloudDNS: case domain.ApplyDNSProviderTypeTencentCloud, domain.ApplyDNSProviderTypeTencentCloudDNS:
{ {
access := domain.AccessConfigForTencentCloud{} access := domain.AccessConfigForTencentCloud{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -379,7 +379,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeVolcEngine, domain.ApplyDNSProviderTypeVolcEngineDNS: case domain.ApplyDNSProviderTypeVolcEngine, domain.ApplyDNSProviderTypeVolcEngineDNS:
{ {
access := domain.AccessConfigForVolcEngine{} access := domain.AccessConfigForVolcEngine{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -395,7 +395,7 @@ func createApplicant(options *applicantOptions) (challenge.Provider, error) {
case domain.ApplyDNSProviderTypeWestcn: case domain.ApplyDNSProviderTypeWestcn:
{ {
access := domain.AccessConfigForWestcn{} access := domain.AccessConfigForWestcn{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }

View File

@ -15,7 +15,7 @@ import (
"github.com/usual2970/certimate/internal/domain" "github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/domain/dtos" "github.com/usual2970/certimate/internal/domain/dtos"
"github.com/usual2970/certimate/internal/notify" "github.com/usual2970/certimate/internal/notify"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
"github.com/usual2970/certimate/internal/repository" "github.com/usual2970/certimate/internal/repository"
) )
@ -109,7 +109,7 @@ func (s *CertificateService) ArchiveFile(ctx context.Context, req *dtos.Certific
{ {
const pfxPassword = "certimate" const pfxPassword = "certimate"
certPFX, err := certs.TransformCertificateFromPEMToPFX(certificate.Certificate, certificate.PrivateKey, pfxPassword) certPFX, err := certutil.TransformCertificateFromPEMToPFX(certificate.Certificate, certificate.PrivateKey, pfxPassword)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -147,7 +147,7 @@ func (s *CertificateService) ArchiveFile(ctx context.Context, req *dtos.Certific
{ {
const jksPassword = "certimate" const jksPassword = "certimate"
certJKS, err := certs.TransformCertificateFromPEMToJKS(certificate.Certificate, certificate.PrivateKey, jksPassword, jksPassword, jksPassword) certJKS, err := certutil.TransformCertificateFromPEMToJKS(certificate.Certificate, certificate.PrivateKey, jksPassword, jksPassword, jksPassword)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -187,7 +187,7 @@ func (s *CertificateService) ArchiveFile(ctx context.Context, req *dtos.Certific
} }
func (s *CertificateService) ValidateCertificate(ctx context.Context, req *dtos.CertificateValidateCertificateReq) (*dtos.CertificateValidateCertificateResp, error) { func (s *CertificateService) ValidateCertificate(ctx context.Context, req *dtos.CertificateValidateCertificateReq) (*dtos.CertificateValidateCertificateResp, error) {
certX509, err := certs.ParseCertificateFromPEM(req.Certificate) certX509, err := certutil.ParseCertificateFromPEM(req.Certificate)
if err != nil { if err != nil {
return nil, err return nil, err
} else if time.Now().After(certX509.NotAfter) { } else if time.Now().After(certX509.NotAfter) {

View File

@ -63,8 +63,8 @@ import (
pVolcEngineLive "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/volcengine-live" pVolcEngineLive "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/volcengine-live"
pVolcEngineTOS "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/volcengine-tos" pVolcEngineTOS "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/volcengine-tos"
pWebhook "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/webhook" pWebhook "github.com/usual2970/certimate/internal/pkg/core/deployer/providers/webhook"
"github.com/usual2970/certimate/internal/pkg/utils/maps" "github.com/usual2970/certimate/internal/pkg/utils/maputil"
"github.com/usual2970/certimate/internal/pkg/utils/slices" "github.com/usual2970/certimate/internal/pkg/utils/sliceutil"
) )
func createDeployer(options *deployerOptions) (deployer.Deployer, error) { func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
@ -76,7 +76,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderType1PanelConsole, domain.DeployProviderType1PanelSite: case domain.DeployProviderType1PanelConsole, domain.DeployProviderType1PanelSite:
{ {
access := domain.AccessConfigFor1Panel{} access := domain.AccessConfigFor1Panel{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -86,7 +86,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
ApiUrl: access.ApiUrl, ApiUrl: access.ApiUrl,
ApiKey: access.ApiKey, ApiKey: access.ApiKey,
AllowInsecureConnections: access.AllowInsecureConnections, AllowInsecureConnections: access.AllowInsecureConnections,
AutoRestart: maps.GetValueAsBool(options.ProviderDeployConfig, "autoRestart"), AutoRestart: maputil.GetBool(options.ProviderDeployConfig, "autoRestart"),
}) })
return deployer, err return deployer, err
@ -95,7 +95,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
ApiUrl: access.ApiUrl, ApiUrl: access.ApiUrl,
ApiKey: access.ApiKey, ApiKey: access.ApiKey,
AllowInsecureConnections: access.AllowInsecureConnections, AllowInsecureConnections: access.AllowInsecureConnections,
WebsiteId: maps.GetValueAsInt64(options.ProviderDeployConfig, "websiteId"), WebsiteId: maputil.GetInt64(options.ProviderDeployConfig, "websiteId"),
}) })
return deployer, err return deployer, err
@ -107,7 +107,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeAliyunALB, domain.DeployProviderTypeAliyunCASDeploy, domain.DeployProviderTypeAliyunCDN, domain.DeployProviderTypeAliyunCLB, domain.DeployProviderTypeAliyunDCDN, domain.DeployProviderTypeAliyunESA, domain.DeployProviderTypeAliyunFC, domain.DeployProviderTypeAliyunLive, domain.DeployProviderTypeAliyunNLB, domain.DeployProviderTypeAliyunOSS, domain.DeployProviderTypeAliyunVOD, domain.DeployProviderTypeAliyunWAF: case domain.DeployProviderTypeAliyunALB, domain.DeployProviderTypeAliyunCASDeploy, domain.DeployProviderTypeAliyunCDN, domain.DeployProviderTypeAliyunCLB, domain.DeployProviderTypeAliyunDCDN, domain.DeployProviderTypeAliyunESA, domain.DeployProviderTypeAliyunFC, domain.DeployProviderTypeAliyunLive, domain.DeployProviderTypeAliyunNLB, domain.DeployProviderTypeAliyunOSS, domain.DeployProviderTypeAliyunVOD, domain.DeployProviderTypeAliyunWAF:
{ {
access := domain.AccessConfigForAliyun{} access := domain.AccessConfigForAliyun{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -116,11 +116,11 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunALB.NewDeployer(&pAliyunALB.DeployerConfig{ deployer, err := pAliyunALB.NewDeployer(&pAliyunALB.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
ResourceType: pAliyunALB.ResourceType(maps.GetValueAsString(options.ProviderDeployConfig, "resourceType")), ResourceType: pAliyunALB.ResourceType(maputil.GetString(options.ProviderDeployConfig, "resourceType")),
LoadbalancerId: maps.GetValueAsString(options.ProviderDeployConfig, "loadbalancerId"), LoadbalancerId: maputil.GetString(options.ProviderDeployConfig, "loadbalancerId"),
ListenerId: maps.GetValueAsString(options.ProviderDeployConfig, "listenerId"), ListenerId: maputil.GetString(options.ProviderDeployConfig, "listenerId"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -128,9 +128,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunCASDeploy.NewDeployer(&pAliyunCASDeploy.DeployerConfig{ deployer, err := pAliyunCASDeploy.NewDeployer(&pAliyunCASDeploy.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
ResourceIds: slices.Filter(strings.Split(maps.GetValueAsString(options.ProviderDeployConfig, "resourceIds"), ";"), func(s string) bool { return s != "" }), ResourceIds: sliceutil.Filter(strings.Split(maputil.GetString(options.ProviderDeployConfig, "resourceIds"), ";"), func(s string) bool { return s != "" }),
ContactIds: slices.Filter(strings.Split(maps.GetValueAsString(options.ProviderDeployConfig, "contactIds"), ";"), func(s string) bool { return s != "" }), ContactIds: sliceutil.Filter(strings.Split(maputil.GetString(options.ProviderDeployConfig, "contactIds"), ";"), func(s string) bool { return s != "" }),
}) })
return deployer, err return deployer, err
@ -138,7 +138,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunCDN.NewDeployer(&pAliyunCDN.DeployerConfig{ deployer, err := pAliyunCDN.NewDeployer(&pAliyunCDN.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -146,11 +146,11 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunCLB.NewDeployer(&pAliyunCLB.DeployerConfig{ deployer, err := pAliyunCLB.NewDeployer(&pAliyunCLB.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
ResourceType: pAliyunCLB.ResourceType(maps.GetValueAsString(options.ProviderDeployConfig, "resourceType")), ResourceType: pAliyunCLB.ResourceType(maputil.GetString(options.ProviderDeployConfig, "resourceType")),
LoadbalancerId: maps.GetValueAsString(options.ProviderDeployConfig, "loadbalancerId"), LoadbalancerId: maputil.GetString(options.ProviderDeployConfig, "loadbalancerId"),
ListenerPort: maps.GetValueOrDefaultAsInt32(options.ProviderDeployConfig, "listenerPort", 443), ListenerPort: maputil.GetOrDefaultInt32(options.ProviderDeployConfig, "listenerPort", 443),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -158,7 +158,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunDCDN.NewDeployer(&pAliyunDCDN.DeployerConfig{ deployer, err := pAliyunDCDN.NewDeployer(&pAliyunDCDN.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -166,8 +166,8 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunESA.NewDeployer(&pAliyunESA.DeployerConfig{ deployer, err := pAliyunESA.NewDeployer(&pAliyunESA.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
SiteId: maps.GetValueAsInt64(options.ProviderDeployConfig, "siteId"), SiteId: maputil.GetInt64(options.ProviderDeployConfig, "siteId"),
}) })
return deployer, err return deployer, err
@ -175,9 +175,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunFC.NewDeployer(&pAliyunFC.DeployerConfig{ deployer, err := pAliyunFC.NewDeployer(&pAliyunFC.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
ServiceVersion: maps.GetValueAsString(options.ProviderDeployConfig, "serviceVersion"), ServiceVersion: maputil.GetString(options.ProviderDeployConfig, "serviceVersion"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -185,8 +185,8 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunLive.NewDeployer(&pAliyunLive.DeployerConfig{ deployer, err := pAliyunLive.NewDeployer(&pAliyunLive.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -194,10 +194,10 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunNLB.NewDeployer(&pAliyunNLB.DeployerConfig{ deployer, err := pAliyunNLB.NewDeployer(&pAliyunNLB.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
ResourceType: pAliyunNLB.ResourceType(maps.GetValueAsString(options.ProviderDeployConfig, "resourceType")), ResourceType: pAliyunNLB.ResourceType(maputil.GetString(options.ProviderDeployConfig, "resourceType")),
LoadbalancerId: maps.GetValueAsString(options.ProviderDeployConfig, "loadbalancerId"), LoadbalancerId: maputil.GetString(options.ProviderDeployConfig, "loadbalancerId"),
ListenerId: maps.GetValueAsString(options.ProviderDeployConfig, "listenerId"), ListenerId: maputil.GetString(options.ProviderDeployConfig, "listenerId"),
}) })
return deployer, err return deployer, err
@ -205,9 +205,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunOSS.NewDeployer(&pAliyunOSS.DeployerConfig{ deployer, err := pAliyunOSS.NewDeployer(&pAliyunOSS.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
Bucket: maps.GetValueAsString(options.ProviderDeployConfig, "bucket"), Bucket: maputil.GetString(options.ProviderDeployConfig, "bucket"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -215,8 +215,8 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunVOD.NewDeployer(&pAliyunVOD.DeployerConfig{ deployer, err := pAliyunVOD.NewDeployer(&pAliyunVOD.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -224,9 +224,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAliyunWAF.NewDeployer(&pAliyunWAF.DeployerConfig{ deployer, err := pAliyunWAF.NewDeployer(&pAliyunWAF.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
InstanceId: maps.GetValueAsString(options.ProviderDeployConfig, "instanceId"), InstanceId: maputil.GetString(options.ProviderDeployConfig, "instanceId"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -238,7 +238,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeAWSCloudFront: case domain.DeployProviderTypeAWSCloudFront:
{ {
access := domain.AccessConfigForAWS{} access := domain.AccessConfigForAWS{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -247,8 +247,8 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pAWSCloudFront.NewDeployer(&pAWSCloudFront.DeployerConfig{ deployer, err := pAWSCloudFront.NewDeployer(&pAWSCloudFront.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
SecretAccessKey: access.SecretAccessKey, SecretAccessKey: access.SecretAccessKey,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
DistributionId: maps.GetValueAsString(options.ProviderDeployConfig, "distributionId"), DistributionId: maputil.GetString(options.ProviderDeployConfig, "distributionId"),
}) })
return deployer, err return deployer, err
@ -260,7 +260,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeBaiduCloudCDN: case domain.DeployProviderTypeBaiduCloudCDN:
{ {
access := domain.AccessConfigForBaiduCloud{} access := domain.AccessConfigForBaiduCloud{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -269,7 +269,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pBaiduCloudCDN.NewDeployer(&pBaiduCloudCDN.DeployerConfig{ deployer, err := pBaiduCloudCDN.NewDeployer(&pBaiduCloudCDN.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
SecretAccessKey: access.SecretAccessKey, SecretAccessKey: access.SecretAccessKey,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -281,7 +281,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeBaishanCDN: case domain.DeployProviderTypeBaishanCDN:
{ {
access := domain.AccessConfigForBaishan{} access := domain.AccessConfigForBaishan{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -289,7 +289,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeBaishanCDN: case domain.DeployProviderTypeBaishanCDN:
deployer, err := pBaishanCDN.NewDeployer(&pBaishanCDN.DeployerConfig{ deployer, err := pBaishanCDN.NewDeployer(&pBaishanCDN.DeployerConfig{
ApiToken: access.ApiToken, ApiToken: access.ApiToken,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -301,7 +301,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeBaotaPanelConsole, domain.DeployProviderTypeBaotaPanelSite: case domain.DeployProviderTypeBaotaPanelConsole, domain.DeployProviderTypeBaotaPanelSite:
{ {
access := domain.AccessConfigForBaotaPanel{} access := domain.AccessConfigForBaotaPanel{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -311,7 +311,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
ApiUrl: access.ApiUrl, ApiUrl: access.ApiUrl,
ApiKey: access.ApiKey, ApiKey: access.ApiKey,
AllowInsecureConnections: access.AllowInsecureConnections, AllowInsecureConnections: access.AllowInsecureConnections,
AutoRestart: maps.GetValueAsBool(options.ProviderDeployConfig, "autoRestart"), AutoRestart: maputil.GetBool(options.ProviderDeployConfig, "autoRestart"),
}) })
return deployer, err return deployer, err
@ -320,9 +320,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
ApiUrl: access.ApiUrl, ApiUrl: access.ApiUrl,
ApiKey: access.ApiKey, ApiKey: access.ApiKey,
AllowInsecureConnections: access.AllowInsecureConnections, AllowInsecureConnections: access.AllowInsecureConnections,
SiteType: maps.GetValueOrDefaultAsString(options.ProviderDeployConfig, "siteType", "other"), SiteType: maputil.GetOrDefaultString(options.ProviderDeployConfig, "siteType", "other"),
SiteName: maps.GetValueAsString(options.ProviderDeployConfig, "siteName"), SiteName: maputil.GetString(options.ProviderDeployConfig, "siteName"),
SiteNames: slices.Filter(strings.Split(maps.GetValueAsString(options.ProviderDeployConfig, "siteNames"), ";"), func(s string) bool { return s != "" }), SiteNames: sliceutil.Filter(strings.Split(maputil.GetString(options.ProviderDeployConfig, "siteNames"), ";"), func(s string) bool { return s != "" }),
}) })
return deployer, err return deployer, err
@ -334,7 +334,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeBytePlusCDN: case domain.DeployProviderTypeBytePlusCDN:
{ {
access := domain.AccessConfigForBytePlus{} access := domain.AccessConfigForBytePlus{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -343,7 +343,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pBytePlusCDN.NewDeployer(&pBytePlusCDN.DeployerConfig{ deployer, err := pBytePlusCDN.NewDeployer(&pBytePlusCDN.DeployerConfig{
AccessKey: access.AccessKey, AccessKey: access.AccessKey,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -355,7 +355,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeCacheFly: case domain.DeployProviderTypeCacheFly:
{ {
access := domain.AccessConfigForCacheFly{} access := domain.AccessConfigForCacheFly{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -368,7 +368,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeCdnfly: case domain.DeployProviderTypeCdnfly:
{ {
access := domain.AccessConfigForCdnfly{} access := domain.AccessConfigForCdnfly{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -376,9 +376,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
ApiUrl: access.ApiUrl, ApiUrl: access.ApiUrl,
ApiKey: access.ApiKey, ApiKey: access.ApiKey,
ApiSecret: access.ApiSecret, ApiSecret: access.ApiSecret,
ResourceType: pCdnfly.ResourceType(maps.GetValueAsString(options.ProviderDeployConfig, "resourceType")), ResourceType: pCdnfly.ResourceType(maputil.GetString(options.ProviderDeployConfig, "resourceType")),
SiteId: maps.GetValueAsString(options.ProviderDeployConfig, "siteId"), SiteId: maputil.GetString(options.ProviderDeployConfig, "siteId"),
CertificateId: maps.GetValueAsString(options.ProviderDeployConfig, "certificateId"), CertificateId: maputil.GetString(options.ProviderDeployConfig, "certificateId"),
}) })
return deployer, err return deployer, err
} }
@ -386,14 +386,14 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeDogeCloudCDN: case domain.DeployProviderTypeDogeCloudCDN:
{ {
access := domain.AccessConfigForDogeCloud{} access := domain.AccessConfigForDogeCloud{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
deployer, err := pDogeCDN.NewDeployer(&pDogeCDN.DeployerConfig{ deployer, err := pDogeCDN.NewDeployer(&pDogeCDN.DeployerConfig{
AccessKey: access.AccessKey, AccessKey: access.AccessKey,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
} }
@ -401,14 +401,14 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeEdgioApplications: case domain.DeployProviderTypeEdgioApplications:
{ {
access := domain.AccessConfigForEdgio{} access := domain.AccessConfigForEdgio{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
deployer, err := pEdgioApplications.NewDeployer(&pEdgioApplications.DeployerConfig{ deployer, err := pEdgioApplications.NewDeployer(&pEdgioApplications.DeployerConfig{
ClientId: access.ClientId, ClientId: access.ClientId,
ClientSecret: access.ClientSecret, ClientSecret: access.ClientSecret,
EnvironmentId: maps.GetValueAsString(options.ProviderDeployConfig, "environmentId"), EnvironmentId: maputil.GetString(options.ProviderDeployConfig, "environmentId"),
}) })
return deployer, err return deployer, err
} }
@ -416,7 +416,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeGcoreCDN: case domain.DeployProviderTypeGcoreCDN:
{ {
access := domain.AccessConfigForGcore{} access := domain.AccessConfigForGcore{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -424,7 +424,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeGcoreCDN: case domain.DeployProviderTypeGcoreCDN:
deployer, err := pGcoreCDN.NewDeployer(&pGcoreCDN.DeployerConfig{ deployer, err := pGcoreCDN.NewDeployer(&pGcoreCDN.DeployerConfig{
ApiToken: access.ApiToken, ApiToken: access.ApiToken,
ResourceId: maps.GetValueAsInt64(options.ProviderDeployConfig, "resourceId"), ResourceId: maputil.GetInt64(options.ProviderDeployConfig, "resourceId"),
}) })
return deployer, err return deployer, err
@ -436,7 +436,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeHuaweiCloudCDN, domain.DeployProviderTypeHuaweiCloudELB, domain.DeployProviderTypeHuaweiCloudWAF: case domain.DeployProviderTypeHuaweiCloudCDN, domain.DeployProviderTypeHuaweiCloudELB, domain.DeployProviderTypeHuaweiCloudWAF:
{ {
access := domain.AccessConfigForHuaweiCloud{} access := domain.AccessConfigForHuaweiCloud{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -445,8 +445,8 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pHuaweiCloudCDN.NewDeployer(&pHuaweiCloudCDN.DeployerConfig{ deployer, err := pHuaweiCloudCDN.NewDeployer(&pHuaweiCloudCDN.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
SecretAccessKey: access.SecretAccessKey, SecretAccessKey: access.SecretAccessKey,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -454,11 +454,11 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pHuaweiCloudELB.NewDeployer(&pHuaweiCloudELB.DeployerConfig{ deployer, err := pHuaweiCloudELB.NewDeployer(&pHuaweiCloudELB.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
SecretAccessKey: access.SecretAccessKey, SecretAccessKey: access.SecretAccessKey,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
ResourceType: pHuaweiCloudELB.ResourceType(maps.GetValueAsString(options.ProviderDeployConfig, "resourceType")), ResourceType: pHuaweiCloudELB.ResourceType(maputil.GetString(options.ProviderDeployConfig, "resourceType")),
CertificateId: maps.GetValueAsString(options.ProviderDeployConfig, "certificateId"), CertificateId: maputil.GetString(options.ProviderDeployConfig, "certificateId"),
LoadbalancerId: maps.GetValueAsString(options.ProviderDeployConfig, "loadbalancerId"), LoadbalancerId: maputil.GetString(options.ProviderDeployConfig, "loadbalancerId"),
ListenerId: maps.GetValueAsString(options.ProviderDeployConfig, "listenerId"), ListenerId: maputil.GetString(options.ProviderDeployConfig, "listenerId"),
}) })
return deployer, err return deployer, err
@ -466,10 +466,10 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pHuaweiCloudWAF.NewDeployer(&pHuaweiCloudWAF.DeployerConfig{ deployer, err := pHuaweiCloudWAF.NewDeployer(&pHuaweiCloudWAF.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
SecretAccessKey: access.SecretAccessKey, SecretAccessKey: access.SecretAccessKey,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
ResourceType: pHuaweiCloudWAF.ResourceType(maps.GetValueAsString(options.ProviderDeployConfig, "resourceType")), ResourceType: pHuaweiCloudWAF.ResourceType(maputil.GetString(options.ProviderDeployConfig, "resourceType")),
CertificateId: maps.GetValueAsString(options.ProviderDeployConfig, "certificateId"), CertificateId: maputil.GetString(options.ProviderDeployConfig, "certificateId"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -481,7 +481,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeJDCloudALB, domain.DeployProviderTypeJDCloudCDN, domain.DeployProviderTypeJDCloudLive, domain.DeployProviderTypeJDCloudVOD: case domain.DeployProviderTypeJDCloudALB, domain.DeployProviderTypeJDCloudCDN, domain.DeployProviderTypeJDCloudLive, domain.DeployProviderTypeJDCloudVOD:
{ {
access := domain.AccessConfigForJDCloud{} access := domain.AccessConfigForJDCloud{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -490,10 +490,10 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pJDCloudALB.NewDeployer(&pJDCloudALB.DeployerConfig{ deployer, err := pJDCloudALB.NewDeployer(&pJDCloudALB.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
RegionId: maps.GetValueAsString(options.ProviderDeployConfig, "regionId"), RegionId: maputil.GetString(options.ProviderDeployConfig, "regionId"),
ResourceType: pJDCloudALB.ResourceType(maps.GetValueAsString(options.ProviderDeployConfig, "resourceType")), ResourceType: pJDCloudALB.ResourceType(maputil.GetString(options.ProviderDeployConfig, "resourceType")),
LoadbalancerId: maps.GetValueAsString(options.ProviderDeployConfig, "loadbalancerId"), LoadbalancerId: maputil.GetString(options.ProviderDeployConfig, "loadbalancerId"),
ListenerId: maps.GetValueAsString(options.ProviderDeployConfig, "listenerId"), ListenerId: maputil.GetString(options.ProviderDeployConfig, "listenerId"),
}) })
return deployer, err return deployer, err
@ -501,7 +501,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pJDCloudCDN.NewDeployer(&pJDCloudCDN.DeployerConfig{ deployer, err := pJDCloudCDN.NewDeployer(&pJDCloudCDN.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -509,7 +509,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pJDCloudLive.NewDeployer(&pJDCloudLive.DeployerConfig{ deployer, err := pJDCloudLive.NewDeployer(&pJDCloudLive.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -517,7 +517,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pJDCloudVOD.NewDeployer(&pJDCloudVOD.DeployerConfig{ deployer, err := pJDCloudVOD.NewDeployer(&pJDCloudVOD.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.AccessKeySecret, AccessKeySecret: access.AccessKeySecret,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -529,16 +529,16 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeLocal: case domain.DeployProviderTypeLocal:
{ {
deployer, err := pLocal.NewDeployer(&pLocal.DeployerConfig{ deployer, err := pLocal.NewDeployer(&pLocal.DeployerConfig{
ShellEnv: pLocal.ShellEnvType(maps.GetValueAsString(options.ProviderDeployConfig, "shellEnv")), ShellEnv: pLocal.ShellEnvType(maputil.GetString(options.ProviderDeployConfig, "shellEnv")),
PreCommand: maps.GetValueAsString(options.ProviderDeployConfig, "preCommand"), PreCommand: maputil.GetString(options.ProviderDeployConfig, "preCommand"),
PostCommand: maps.GetValueAsString(options.ProviderDeployConfig, "postCommand"), PostCommand: maputil.GetString(options.ProviderDeployConfig, "postCommand"),
OutputFormat: pLocal.OutputFormatType(maps.GetValueOrDefaultAsString(options.ProviderDeployConfig, "format", string(pLocal.OUTPUT_FORMAT_PEM))), OutputFormat: pLocal.OutputFormatType(maputil.GetOrDefaultString(options.ProviderDeployConfig, "format", string(pLocal.OUTPUT_FORMAT_PEM))),
OutputCertPath: maps.GetValueAsString(options.ProviderDeployConfig, "certPath"), OutputCertPath: maputil.GetString(options.ProviderDeployConfig, "certPath"),
OutputKeyPath: maps.GetValueAsString(options.ProviderDeployConfig, "keyPath"), OutputKeyPath: maputil.GetString(options.ProviderDeployConfig, "keyPath"),
PfxPassword: maps.GetValueAsString(options.ProviderDeployConfig, "pfxPassword"), PfxPassword: maputil.GetString(options.ProviderDeployConfig, "pfxPassword"),
JksAlias: maps.GetValueAsString(options.ProviderDeployConfig, "jksAlias"), JksAlias: maputil.GetString(options.ProviderDeployConfig, "jksAlias"),
JksKeypass: maps.GetValueAsString(options.ProviderDeployConfig, "jksKeypass"), JksKeypass: maputil.GetString(options.ProviderDeployConfig, "jksKeypass"),
JksStorepass: maps.GetValueAsString(options.ProviderDeployConfig, "jksStorepass"), JksStorepass: maputil.GetString(options.ProviderDeployConfig, "jksStorepass"),
}) })
return deployer, err return deployer, err
} }
@ -546,17 +546,17 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeKubernetesSecret: case domain.DeployProviderTypeKubernetesSecret:
{ {
access := domain.AccessConfigForKubernetes{} access := domain.AccessConfigForKubernetes{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
deployer, err := pK8sSecret.NewDeployer(&pK8sSecret.DeployerConfig{ deployer, err := pK8sSecret.NewDeployer(&pK8sSecret.DeployerConfig{
KubeConfig: access.KubeConfig, KubeConfig: access.KubeConfig,
Namespace: maps.GetValueOrDefaultAsString(options.ProviderDeployConfig, "namespace", "default"), Namespace: maputil.GetOrDefaultString(options.ProviderDeployConfig, "namespace", "default"),
SecretName: maps.GetValueAsString(options.ProviderDeployConfig, "secretName"), SecretName: maputil.GetString(options.ProviderDeployConfig, "secretName"),
SecretType: maps.GetValueOrDefaultAsString(options.ProviderDeployConfig, "secretType", "kubernetes.io/tls"), SecretType: maputil.GetOrDefaultString(options.ProviderDeployConfig, "secretType", "kubernetes.io/tls"),
SecretDataKeyForCrt: maps.GetValueOrDefaultAsString(options.ProviderDeployConfig, "secretDataKeyForCrt", "tls.crt"), SecretDataKeyForCrt: maputil.GetOrDefaultString(options.ProviderDeployConfig, "secretDataKeyForCrt", "tls.crt"),
SecretDataKeyForKey: maps.GetValueOrDefaultAsString(options.ProviderDeployConfig, "secretDataKeyForKey", "tls.key"), SecretDataKeyForKey: maputil.GetOrDefaultString(options.ProviderDeployConfig, "secretDataKeyForKey", "tls.key"),
}) })
return deployer, err return deployer, err
} }
@ -564,7 +564,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeQiniuCDN, domain.DeployProviderTypeQiniuPili: case domain.DeployProviderTypeQiniuCDN, domain.DeployProviderTypeQiniuPili:
{ {
access := domain.AccessConfigForQiniu{} access := domain.AccessConfigForQiniu{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -573,7 +573,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pQiniuCDN.NewDeployer(&pQiniuCDN.DeployerConfig{ deployer, err := pQiniuCDN.NewDeployer(&pQiniuCDN.DeployerConfig{
AccessKey: access.AccessKey, AccessKey: access.AccessKey,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -581,8 +581,8 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pQiniuPili.NewDeployer(&pQiniuPili.DeployerConfig{ deployer, err := pQiniuPili.NewDeployer(&pQiniuPili.DeployerConfig{
AccessKey: access.AccessKey, AccessKey: access.AccessKey,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Hub: maps.GetValueAsString(options.ProviderDeployConfig, "hub"), Hub: maputil.GetString(options.ProviderDeployConfig, "hub"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -594,7 +594,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeSafeLine: case domain.DeployProviderTypeSafeLine:
{ {
access := domain.AccessConfigForSafeLine{} access := domain.AccessConfigForSafeLine{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -602,8 +602,8 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
ApiUrl: access.ApiUrl, ApiUrl: access.ApiUrl,
ApiToken: access.ApiToken, ApiToken: access.ApiToken,
AllowInsecureConnections: access.AllowInsecureConnections, AllowInsecureConnections: access.AllowInsecureConnections,
ResourceType: pSafeLine.ResourceType(maps.GetValueAsString(options.ProviderDeployConfig, "resourceType")), ResourceType: pSafeLine.ResourceType(maputil.GetString(options.ProviderDeployConfig, "resourceType")),
CertificateId: maps.GetValueAsInt32(options.ProviderDeployConfig, "certificateId"), CertificateId: maputil.GetInt32(options.ProviderDeployConfig, "certificateId"),
}) })
return deployer, err return deployer, err
} }
@ -611,7 +611,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeSSH: case domain.DeployProviderTypeSSH:
{ {
access := domain.AccessConfigForSSH{} access := domain.AccessConfigForSSH{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -622,16 +622,16 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
SshPassword: access.Password, SshPassword: access.Password,
SshKey: access.Key, SshKey: access.Key,
SshKeyPassphrase: access.KeyPassphrase, SshKeyPassphrase: access.KeyPassphrase,
UseSCP: maps.GetValueAsBool(options.ProviderDeployConfig, "useSCP"), UseSCP: maputil.GetBool(options.ProviderDeployConfig, "useSCP"),
PreCommand: maps.GetValueAsString(options.ProviderDeployConfig, "preCommand"), PreCommand: maputil.GetString(options.ProviderDeployConfig, "preCommand"),
PostCommand: maps.GetValueAsString(options.ProviderDeployConfig, "postCommand"), PostCommand: maputil.GetString(options.ProviderDeployConfig, "postCommand"),
OutputFormat: pSSH.OutputFormatType(maps.GetValueOrDefaultAsString(options.ProviderDeployConfig, "format", string(pSSH.OUTPUT_FORMAT_PEM))), OutputFormat: pSSH.OutputFormatType(maputil.GetOrDefaultString(options.ProviderDeployConfig, "format", string(pSSH.OUTPUT_FORMAT_PEM))),
OutputCertPath: maps.GetValueAsString(options.ProviderDeployConfig, "certPath"), OutputCertPath: maputil.GetString(options.ProviderDeployConfig, "certPath"),
OutputKeyPath: maps.GetValueAsString(options.ProviderDeployConfig, "keyPath"), OutputKeyPath: maputil.GetString(options.ProviderDeployConfig, "keyPath"),
PfxPassword: maps.GetValueAsString(options.ProviderDeployConfig, "pfxPassword"), PfxPassword: maputil.GetString(options.ProviderDeployConfig, "pfxPassword"),
JksAlias: maps.GetValueAsString(options.ProviderDeployConfig, "jksAlias"), JksAlias: maputil.GetString(options.ProviderDeployConfig, "jksAlias"),
JksKeypass: maps.GetValueAsString(options.ProviderDeployConfig, "jksKeypass"), JksKeypass: maputil.GetString(options.ProviderDeployConfig, "jksKeypass"),
JksStorepass: maps.GetValueAsString(options.ProviderDeployConfig, "jksStorepass"), JksStorepass: maputil.GetString(options.ProviderDeployConfig, "jksStorepass"),
}) })
return deployer, err return deployer, err
} }
@ -639,7 +639,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeTencentCloudCDN, domain.DeployProviderTypeTencentCloudCLB, domain.DeployProviderTypeTencentCloudCOS, domain.DeployProviderTypeTencentCloudCSS, domain.DeployProviderTypeTencentCloudECDN, domain.DeployProviderTypeTencentCloudEO, domain.DeployProviderTypeTencentCloudSCF, domain.DeployProviderTypeTencentCloudSSLDeploy, domain.DeployProviderTypeTencentCloudVOD, domain.DeployProviderTypeTencentCloudWAF: case domain.DeployProviderTypeTencentCloudCDN, domain.DeployProviderTypeTencentCloudCLB, domain.DeployProviderTypeTencentCloudCOS, domain.DeployProviderTypeTencentCloudCSS, domain.DeployProviderTypeTencentCloudECDN, domain.DeployProviderTypeTencentCloudEO, domain.DeployProviderTypeTencentCloudSCF, domain.DeployProviderTypeTencentCloudSSLDeploy, domain.DeployProviderTypeTencentCloudVOD, domain.DeployProviderTypeTencentCloudWAF:
{ {
access := domain.AccessConfigForTencentCloud{} access := domain.AccessConfigForTencentCloud{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -648,7 +648,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pTencentCloudCDN.NewDeployer(&pTencentCloudCDN.DeployerConfig{ deployer, err := pTencentCloudCDN.NewDeployer(&pTencentCloudCDN.DeployerConfig{
SecretId: access.SecretId, SecretId: access.SecretId,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -656,11 +656,11 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pTencentCloudCLB.NewDeployer(&pTencentCloudCLB.DeployerConfig{ deployer, err := pTencentCloudCLB.NewDeployer(&pTencentCloudCLB.DeployerConfig{
SecretId: access.SecretId, SecretId: access.SecretId,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
ResourceType: pTencentCloudCLB.ResourceType(maps.GetValueAsString(options.ProviderDeployConfig, "resourceType")), ResourceType: pTencentCloudCLB.ResourceType(maputil.GetString(options.ProviderDeployConfig, "resourceType")),
LoadbalancerId: maps.GetValueAsString(options.ProviderDeployConfig, "loadbalancerId"), LoadbalancerId: maputil.GetString(options.ProviderDeployConfig, "loadbalancerId"),
ListenerId: maps.GetValueAsString(options.ProviderDeployConfig, "listenerId"), ListenerId: maputil.GetString(options.ProviderDeployConfig, "listenerId"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -668,9 +668,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pTencentCloudCOS.NewDeployer(&pTencentCloudCOS.DeployerConfig{ deployer, err := pTencentCloudCOS.NewDeployer(&pTencentCloudCOS.DeployerConfig{
SecretId: access.SecretId, SecretId: access.SecretId,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
Bucket: maps.GetValueAsString(options.ProviderDeployConfig, "bucket"), Bucket: maputil.GetString(options.ProviderDeployConfig, "bucket"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -678,7 +678,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pTencentCloudCSS.NewDeployer(&pTencentCloudCSS.DeployerConfig{ deployer, err := pTencentCloudCSS.NewDeployer(&pTencentCloudCSS.DeployerConfig{
SecretId: access.SecretId, SecretId: access.SecretId,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -686,7 +686,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pTencentCloudECDN.NewDeployer(&pTencentCloudECDN.DeployerConfig{ deployer, err := pTencentCloudECDN.NewDeployer(&pTencentCloudECDN.DeployerConfig{
SecretId: access.SecretId, SecretId: access.SecretId,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -694,8 +694,8 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pTencentCloudEO.NewDeployer(&pTencentCloudEO.DeployerConfig{ deployer, err := pTencentCloudEO.NewDeployer(&pTencentCloudEO.DeployerConfig{
SecretId: access.SecretId, SecretId: access.SecretId,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
ZoneId: maps.GetValueAsString(options.ProviderDeployConfig, "zoneId"), ZoneId: maputil.GetString(options.ProviderDeployConfig, "zoneId"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -703,8 +703,8 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pTencentCloudSCF.NewDeployer(&pTencentCloudSCF.DeployerConfig{ deployer, err := pTencentCloudSCF.NewDeployer(&pTencentCloudSCF.DeployerConfig{
SecretId: access.SecretId, SecretId: access.SecretId,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -712,9 +712,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pTencentCloudSSLDeploy.NewDeployer(&pTencentCloudSSLDeploy.DeployerConfig{ deployer, err := pTencentCloudSSLDeploy.NewDeployer(&pTencentCloudSSLDeploy.DeployerConfig{
SecretId: access.SecretId, SecretId: access.SecretId,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
ResourceType: maps.GetValueAsString(options.ProviderDeployConfig, "resourceType"), ResourceType: maputil.GetString(options.ProviderDeployConfig, "resourceType"),
ResourceIds: slices.Filter(strings.Split(maps.GetValueAsString(options.ProviderDeployConfig, "resourceIds"), ";"), func(s string) bool { return s != "" }), ResourceIds: sliceutil.Filter(strings.Split(maputil.GetString(options.ProviderDeployConfig, "resourceIds"), ";"), func(s string) bool { return s != "" }),
}) })
return deployer, err return deployer, err
@ -722,8 +722,8 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pTencentCloudVOD.NewDeployer(&pTencentCloudVOD.DeployerConfig{ deployer, err := pTencentCloudVOD.NewDeployer(&pTencentCloudVOD.DeployerConfig{
SecretId: access.SecretId, SecretId: access.SecretId,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
SubAppId: maps.GetValueAsInt64(options.ProviderDeployConfig, "subAppId"), SubAppId: maputil.GetInt64(options.ProviderDeployConfig, "subAppId"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -731,9 +731,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pTencentCloudWAF.NewDeployer(&pTencentCloudWAF.DeployerConfig{ deployer, err := pTencentCloudWAF.NewDeployer(&pTencentCloudWAF.DeployerConfig{
SecretId: access.SecretId, SecretId: access.SecretId,
SecretKey: access.SecretKey, SecretKey: access.SecretKey,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
DomainId: maps.GetValueAsString(options.ProviderDeployConfig, "domainId"), DomainId: maputil.GetString(options.ProviderDeployConfig, "domainId"),
InstanceId: maps.GetValueAsString(options.ProviderDeployConfig, "instanceId"), InstanceId: maputil.GetString(options.ProviderDeployConfig, "instanceId"),
}) })
return deployer, err return deployer, err
@ -745,7 +745,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeUCloudUCDN, domain.DeployProviderTypeUCloudUS3: case domain.DeployProviderTypeUCloudUCDN, domain.DeployProviderTypeUCloudUS3:
{ {
access := domain.AccessConfigForUCloud{} access := domain.AccessConfigForUCloud{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -755,7 +755,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
PrivateKey: access.PrivateKey, PrivateKey: access.PrivateKey,
PublicKey: access.PublicKey, PublicKey: access.PublicKey,
ProjectId: access.ProjectId, ProjectId: access.ProjectId,
DomainId: maps.GetValueAsString(options.ProviderDeployConfig, "domainId"), DomainId: maputil.GetString(options.ProviderDeployConfig, "domainId"),
}) })
return deployer, err return deployer, err
@ -764,9 +764,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
PrivateKey: access.PrivateKey, PrivateKey: access.PrivateKey,
PublicKey: access.PublicKey, PublicKey: access.PublicKey,
ProjectId: access.ProjectId, ProjectId: access.ProjectId,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
Bucket: maps.GetValueAsString(options.ProviderDeployConfig, "bucket"), Bucket: maputil.GetString(options.ProviderDeployConfig, "bucket"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -778,7 +778,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeVolcEngineCDN, domain.DeployProviderTypeVolcEngineCLB, domain.DeployProviderTypeVolcEngineDCDN, domain.DeployProviderTypeVolcEngineImageX, domain.DeployProviderTypeVolcEngineLive, domain.DeployProviderTypeVolcEngineTOS: case domain.DeployProviderTypeVolcEngineCDN, domain.DeployProviderTypeVolcEngineCLB, domain.DeployProviderTypeVolcEngineDCDN, domain.DeployProviderTypeVolcEngineImageX, domain.DeployProviderTypeVolcEngineLive, domain.DeployProviderTypeVolcEngineTOS:
{ {
access := domain.AccessConfigForVolcEngine{} access := domain.AccessConfigForVolcEngine{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
@ -787,7 +787,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pVolcEngineCDN.NewDeployer(&pVolcEngineCDN.DeployerConfig{ deployer, err := pVolcEngineCDN.NewDeployer(&pVolcEngineCDN.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.SecretAccessKey, AccessKeySecret: access.SecretAccessKey,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -795,9 +795,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pVolcEngineCLB.NewDeployer(&pVolcEngineCLB.DeployerConfig{ deployer, err := pVolcEngineCLB.NewDeployer(&pVolcEngineCLB.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.SecretAccessKey, AccessKeySecret: access.SecretAccessKey,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
ResourceType: pVolcEngineCLB.ResourceType(maps.GetValueAsString(options.ProviderDeployConfig, "resourceType")), ResourceType: pVolcEngineCLB.ResourceType(maputil.GetString(options.ProviderDeployConfig, "resourceType")),
ListenerId: maps.GetValueAsString(options.ProviderDeployConfig, "listenerId"), ListenerId: maputil.GetString(options.ProviderDeployConfig, "listenerId"),
}) })
return deployer, err return deployer, err
@ -805,7 +805,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pVolcEngineDCDN.NewDeployer(&pVolcEngineDCDN.DeployerConfig{ deployer, err := pVolcEngineDCDN.NewDeployer(&pVolcEngineDCDN.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.SecretAccessKey, AccessKeySecret: access.SecretAccessKey,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -813,9 +813,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pVolcEngineImageX.NewDeployer(&pVolcEngineImageX.DeployerConfig{ deployer, err := pVolcEngineImageX.NewDeployer(&pVolcEngineImageX.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.SecretAccessKey, AccessKeySecret: access.SecretAccessKey,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
ServiceId: maps.GetValueAsString(options.ProviderDeployConfig, "serviceId"), ServiceId: maputil.GetString(options.ProviderDeployConfig, "serviceId"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -823,7 +823,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pVolcEngineLive.NewDeployer(&pVolcEngineLive.DeployerConfig{ deployer, err := pVolcEngineLive.NewDeployer(&pVolcEngineLive.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.SecretAccessKey, AccessKeySecret: access.SecretAccessKey,
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -831,9 +831,9 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
deployer, err := pVolcEngineTOS.NewDeployer(&pVolcEngineTOS.DeployerConfig{ deployer, err := pVolcEngineTOS.NewDeployer(&pVolcEngineTOS.DeployerConfig{
AccessKeyId: access.AccessKeyId, AccessKeyId: access.AccessKeyId,
AccessKeySecret: access.SecretAccessKey, AccessKeySecret: access.SecretAccessKey,
Region: maps.GetValueAsString(options.ProviderDeployConfig, "region"), Region: maputil.GetString(options.ProviderDeployConfig, "region"),
Bucket: maps.GetValueAsString(options.ProviderDeployConfig, "bucket"), Bucket: maputil.GetString(options.ProviderDeployConfig, "bucket"),
Domain: maps.GetValueAsString(options.ProviderDeployConfig, "domain"), Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
}) })
return deployer, err return deployer, err
@ -845,13 +845,13 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
case domain.DeployProviderTypeWebhook: case domain.DeployProviderTypeWebhook:
{ {
access := domain.AccessConfigForWebhook{} access := domain.AccessConfigForWebhook{}
if err := maps.Populate(options.ProviderAccessConfig, &access); err != nil { if err := maputil.Populate(options.ProviderAccessConfig, &access); err != nil {
return nil, fmt.Errorf("failed to populate provider access config: %w", err) return nil, fmt.Errorf("failed to populate provider access config: %w", err)
} }
deployer, err := pWebhook.NewDeployer(&pWebhook.DeployerConfig{ deployer, err := pWebhook.NewDeployer(&pWebhook.DeployerConfig{
WebhookUrl: access.Url, WebhookUrl: access.Url,
WebhookData: maps.GetValueAsString(options.ProviderDeployConfig, "webhookData"), WebhookData: maputil.GetString(options.ProviderDeployConfig, "webhookData"),
AllowInsecureConnections: access.AllowInsecureConnections, AllowInsecureConnections: access.AllowInsecureConnections,
}) })
return deployer, err return deployer, err

View File

@ -8,7 +8,7 @@ import (
"strings" "strings"
"time" "time"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
) )
const CollectionNameCertificate = "certificate" const CollectionNameCertificate = "certificate"
@ -105,10 +105,10 @@ func (c *Certificate) PopulateFromPEM(certPEM, privkeyPEM string) *Certificate {
c.Certificate = certPEM c.Certificate = certPEM
c.PrivateKey = privkeyPEM c.PrivateKey = privkeyPEM
_, issuerCertPEM, _ := certs.ExtractCertificatesFromPEM(certPEM) _, issuerCertPEM, _ := certutil.ExtractCertificatesFromPEM(certPEM)
c.IssuerCertificate = issuerCertPEM c.IssuerCertificate = issuerCertPEM
certX509, _ := certs.ParseCertificateFromPEM(certPEM) certX509, _ := certutil.ParseCertificateFromPEM(certPEM)
if certX509 != nil { if certX509 != nil {
c.PopulateFromX509(certX509) c.PopulateFromX509(certX509)
} }

View File

@ -3,7 +3,7 @@ package domain
import ( import (
"time" "time"
"github.com/usual2970/certimate/internal/pkg/utils/maps" "github.com/usual2970/certimate/internal/pkg/utils/maputil"
) )
const CollectionNameWorkflow = "workflow" const CollectionNameWorkflow = "workflow"
@ -97,19 +97,19 @@ type WorkflowNodeConfigForNotify struct {
Message string `json:"message"` // 通知内容 Message string `json:"message"` // 通知内容
} }
func (n *WorkflowNode) getConfigValueAsString(key string) string { func (n *WorkflowNode) getConfigString(key string) string {
return maps.GetValueAsString(n.Config, key) return maputil.GetString(n.Config, key)
} }
func (n *WorkflowNode) getConfigValueAsBool(key string) bool { func (n *WorkflowNode) getConfigBool(key string) bool {
return maps.GetValueAsBool(n.Config, key) return maputil.GetBool(n.Config, key)
} }
func (n *WorkflowNode) getConfigValueAsInt32(key string) int32 { func (n *WorkflowNode) getConfigInt32(key string) int32 {
return maps.GetValueAsInt32(n.Config, key) return maputil.GetInt32(n.Config, key)
} }
func (n *WorkflowNode) getConfigValueAsMap(key string) map[string]any { func (n *WorkflowNode) getConfigMap(key string) map[string]any {
if val, ok := n.Config[key]; ok { if val, ok := n.Config[key]; ok {
if result, ok := val.(map[string]any); ok { if result, ok := val.(map[string]any); ok {
return result return result
@ -120,50 +120,50 @@ func (n *WorkflowNode) getConfigValueAsMap(key string) map[string]any {
} }
func (n *WorkflowNode) GetConfigForApply() WorkflowNodeConfigForApply { func (n *WorkflowNode) GetConfigForApply() WorkflowNodeConfigForApply {
skipBeforeExpiryDays := n.getConfigValueAsInt32("skipBeforeExpiryDays") skipBeforeExpiryDays := n.getConfigInt32("skipBeforeExpiryDays")
if skipBeforeExpiryDays == 0 { if skipBeforeExpiryDays == 0 {
skipBeforeExpiryDays = 30 skipBeforeExpiryDays = 30
} }
return WorkflowNodeConfigForApply{ return WorkflowNodeConfigForApply{
Domains: n.getConfigValueAsString("domains"), Domains: n.getConfigString("domains"),
ContactEmail: n.getConfigValueAsString("contactEmail"), ContactEmail: n.getConfigString("contactEmail"),
Provider: n.getConfigValueAsString("provider"), Provider: n.getConfigString("provider"),
ProviderAccessId: n.getConfigValueAsString("providerAccessId"), ProviderAccessId: n.getConfigString("providerAccessId"),
ProviderConfig: n.getConfigValueAsMap("providerConfig"), ProviderConfig: n.getConfigMap("providerConfig"),
KeyAlgorithm: n.getConfigValueAsString("keyAlgorithm"), KeyAlgorithm: n.getConfigString("keyAlgorithm"),
Nameservers: n.getConfigValueAsString("nameservers"), Nameservers: n.getConfigString("nameservers"),
DnsPropagationTimeout: n.getConfigValueAsInt32("dnsPropagationTimeout"), DnsPropagationTimeout: n.getConfigInt32("dnsPropagationTimeout"),
DnsTTL: n.getConfigValueAsInt32("dnsTTL"), DnsTTL: n.getConfigInt32("dnsTTL"),
DisableFollowCNAME: n.getConfigValueAsBool("disableFollowCNAME"), DisableFollowCNAME: n.getConfigBool("disableFollowCNAME"),
DisableARI: n.getConfigValueAsBool("disableARI"), DisableARI: n.getConfigBool("disableARI"),
SkipBeforeExpiryDays: skipBeforeExpiryDays, SkipBeforeExpiryDays: skipBeforeExpiryDays,
} }
} }
func (n *WorkflowNode) GetConfigForUpload() WorkflowNodeConfigForUpload { func (n *WorkflowNode) GetConfigForUpload() WorkflowNodeConfigForUpload {
return WorkflowNodeConfigForUpload{ return WorkflowNodeConfigForUpload{
Certificate: n.getConfigValueAsString("certificate"), Certificate: n.getConfigString("certificate"),
PrivateKey: n.getConfigValueAsString("privateKey"), PrivateKey: n.getConfigString("privateKey"),
Domains: n.getConfigValueAsString("domains"), Domains: n.getConfigString("domains"),
} }
} }
func (n *WorkflowNode) GetConfigForDeploy() WorkflowNodeConfigForDeploy { func (n *WorkflowNode) GetConfigForDeploy() WorkflowNodeConfigForDeploy {
return WorkflowNodeConfigForDeploy{ return WorkflowNodeConfigForDeploy{
Certificate: n.getConfigValueAsString("certificate"), Certificate: n.getConfigString("certificate"),
Provider: n.getConfigValueAsString("provider"), Provider: n.getConfigString("provider"),
ProviderAccessId: n.getConfigValueAsString("providerAccessId"), ProviderAccessId: n.getConfigString("providerAccessId"),
ProviderConfig: n.getConfigValueAsMap("providerConfig"), ProviderConfig: n.getConfigMap("providerConfig"),
SkipOnLastSucceeded: n.getConfigValueAsBool("skipOnLastSucceeded"), SkipOnLastSucceeded: n.getConfigBool("skipOnLastSucceeded"),
} }
} }
func (n *WorkflowNode) GetConfigForNotify() WorkflowNodeConfigForNotify { func (n *WorkflowNode) GetConfigForNotify() WorkflowNodeConfigForNotify {
return WorkflowNodeConfigForNotify{ return WorkflowNodeConfigForNotify{
Channel: n.getConfigValueAsString("channel"), Channel: n.getConfigString("channel"),
Subject: n.getConfigValueAsString("subject"), Subject: n.getConfigString("subject"),
Message: n.getConfigValueAsString("message"), Message: n.getConfigString("message"),
} }
} }

View File

@ -9,7 +9,7 @@ import (
"github.com/usual2970/certimate/internal/domain" "github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/pkg/core/notifier" "github.com/usual2970/certimate/internal/pkg/core/notifier"
"github.com/usual2970/certimate/internal/pkg/utils/maps" "github.com/usual2970/certimate/internal/pkg/utils/maputil"
"github.com/usual2970/certimate/internal/repository" "github.com/usual2970/certimate/internal/repository"
) )
@ -62,7 +62,7 @@ func getEnabledNotifiers() ([]notifier.Notifier, error) {
notifiers := make([]notifier.Notifier, 0) notifiers := make([]notifier.Notifier, 0)
for k, v := range rs { for k, v := range rs {
if !maps.GetValueAsBool(v, "enabled") { if !maputil.GetBool(v, "enabled") {
continue continue
} }

View File

@ -13,7 +13,7 @@ import (
pTelegram "github.com/usual2970/certimate/internal/pkg/core/notifier/providers/telegram" pTelegram "github.com/usual2970/certimate/internal/pkg/core/notifier/providers/telegram"
pWebhook "github.com/usual2970/certimate/internal/pkg/core/notifier/providers/webhook" pWebhook "github.com/usual2970/certimate/internal/pkg/core/notifier/providers/webhook"
pWeCom "github.com/usual2970/certimate/internal/pkg/core/notifier/providers/wecom" pWeCom "github.com/usual2970/certimate/internal/pkg/core/notifier/providers/wecom"
"github.com/usual2970/certimate/internal/pkg/utils/maps" "github.com/usual2970/certimate/internal/pkg/utils/maputil"
) )
func createNotifier(channel domain.NotifyChannelType, channelConfig map[string]any) (notifier.Notifier, error) { func createNotifier(channel domain.NotifyChannelType, channelConfig map[string]any) (notifier.Notifier, error) {
@ -24,52 +24,52 @@ func createNotifier(channel domain.NotifyChannelType, channelConfig map[string]a
switch channel { switch channel {
case domain.NotifyChannelTypeBark: case domain.NotifyChannelTypeBark:
return pBark.NewNotifier(&pBark.NotifierConfig{ return pBark.NewNotifier(&pBark.NotifierConfig{
DeviceKey: maps.GetValueAsString(channelConfig, "deviceKey"), DeviceKey: maputil.GetString(channelConfig, "deviceKey"),
ServerUrl: maps.GetValueAsString(channelConfig, "serverUrl"), ServerUrl: maputil.GetString(channelConfig, "serverUrl"),
}) })
case domain.NotifyChannelTypeDingTalk: case domain.NotifyChannelTypeDingTalk:
return pDingTalk.NewNotifier(&pDingTalk.NotifierConfig{ return pDingTalk.NewNotifier(&pDingTalk.NotifierConfig{
AccessToken: maps.GetValueAsString(channelConfig, "accessToken"), AccessToken: maputil.GetString(channelConfig, "accessToken"),
Secret: maps.GetValueAsString(channelConfig, "secret"), Secret: maputil.GetString(channelConfig, "secret"),
}) })
case domain.NotifyChannelTypeEmail: case domain.NotifyChannelTypeEmail:
return pEmail.NewNotifier(&pEmail.NotifierConfig{ return pEmail.NewNotifier(&pEmail.NotifierConfig{
SmtpHost: maps.GetValueAsString(channelConfig, "smtpHost"), SmtpHost: maputil.GetString(channelConfig, "smtpHost"),
SmtpPort: maps.GetValueAsInt32(channelConfig, "smtpPort"), SmtpPort: maputil.GetInt32(channelConfig, "smtpPort"),
SmtpTLS: maps.GetValueOrDefaultAsBool(channelConfig, "smtpTLS", true), SmtpTLS: maputil.GetOrDefaultBool(channelConfig, "smtpTLS", true),
Username: maps.GetValueOrDefaultAsString(channelConfig, "username", maps.GetValueAsString(channelConfig, "senderAddress")), Username: maputil.GetOrDefaultString(channelConfig, "username", maputil.GetString(channelConfig, "senderAddress")),
Password: maps.GetValueAsString(channelConfig, "password"), Password: maputil.GetString(channelConfig, "password"),
SenderAddress: maps.GetValueAsString(channelConfig, "senderAddress"), SenderAddress: maputil.GetString(channelConfig, "senderAddress"),
ReceiverAddress: maps.GetValueAsString(channelConfig, "receiverAddress"), ReceiverAddress: maputil.GetString(channelConfig, "receiverAddress"),
}) })
case domain.NotifyChannelTypeLark: case domain.NotifyChannelTypeLark:
return pLark.NewNotifier(&pLark.NotifierConfig{ return pLark.NewNotifier(&pLark.NotifierConfig{
WebhookUrl: maps.GetValueAsString(channelConfig, "webhookUrl"), WebhookUrl: maputil.GetString(channelConfig, "webhookUrl"),
}) })
case domain.NotifyChannelTypeServerChan: case domain.NotifyChannelTypeServerChan:
return pServerChan.NewNotifier(&pServerChan.NotifierConfig{ return pServerChan.NewNotifier(&pServerChan.NotifierConfig{
Url: maps.GetValueAsString(channelConfig, "url"), Url: maputil.GetString(channelConfig, "url"),
}) })
case domain.NotifyChannelTypeTelegram: case domain.NotifyChannelTypeTelegram:
return pTelegram.NewNotifier(&pTelegram.NotifierConfig{ return pTelegram.NewNotifier(&pTelegram.NotifierConfig{
ApiToken: maps.GetValueAsString(channelConfig, "apiToken"), ApiToken: maputil.GetString(channelConfig, "apiToken"),
ChatId: maps.GetValueAsInt64(channelConfig, "chatId"), ChatId: maputil.GetInt64(channelConfig, "chatId"),
}) })
case domain.NotifyChannelTypeWebhook: case domain.NotifyChannelTypeWebhook:
return pWebhook.NewNotifier(&pWebhook.NotifierConfig{ return pWebhook.NewNotifier(&pWebhook.NotifierConfig{
Url: maps.GetValueAsString(channelConfig, "url"), Url: maputil.GetString(channelConfig, "url"),
AllowInsecureConnections: maps.GetValueAsBool(channelConfig, "allowInsecureConnections"), AllowInsecureConnections: maputil.GetBool(channelConfig, "allowInsecureConnections"),
}) })
case domain.NotifyChannelTypeWeCom: case domain.NotifyChannelTypeWeCom:
return pWeCom.NewNotifier(&pWeCom.NotifierConfig{ return pWeCom.NewNotifier(&pWeCom.NotifierConfig{
WebhookUrl: maps.GetValueAsString(channelConfig, "webhookUrl"), WebhookUrl: maputil.GetString(channelConfig, "webhookUrl"),
}) })
} }

View File

@ -11,7 +11,7 @@ import (
xerrors "github.com/pkg/errors" xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/deployer" "github.com/usual2970/certimate/internal/pkg/core/deployer"
"github.com/usual2970/certimate/internal/pkg/utils/slices" "github.com/usual2970/certimate/internal/pkg/utils/sliceutil"
btsdk "github.com/usual2970/certimate/internal/pkg/vendors/btpanel-sdk" btsdk "github.com/usual2970/certimate/internal/pkg/vendors/btpanel-sdk"
) )
@ -105,7 +105,7 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPe
// 设置站点证书 // 设置站点证书
sslSetBatchCertToSiteReq := &btsdk.SSLSetBatchCertToSiteRequest{ sslSetBatchCertToSiteReq := &btsdk.SSLSetBatchCertToSiteRequest{
BatchInfo: slices.Map(d.config.SiteNames, func(siteName string) *btsdk.SSLSetBatchCertToSiteRequestBatchInfo { BatchInfo: sliceutil.Map(d.config.SiteNames, func(siteName string) *btsdk.SSLSetBatchCertToSiteRequestBatchInfo {
return &btsdk.SSLSetBatchCertToSiteRequestBatchInfo{ return &btsdk.SSLSetBatchCertToSiteRequestBatchInfo{
SiteName: siteName, SiteName: siteName,
SSLHash: sslCertSaveCertResp.SSLHash, SSLHash: sslCertSaveCertResp.SSLHash,

View File

@ -7,7 +7,7 @@ import (
xerrors "github.com/pkg/errors" xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/deployer" "github.com/usual2970/certimate/internal/pkg/core/deployer"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
edgsdk "github.com/usual2970/certimate/internal/pkg/vendors/edgio-sdk/applications/v7" edgsdk "github.com/usual2970/certimate/internal/pkg/vendors/edgio-sdk/applications/v7"
edgsdkDtos "github.com/usual2970/certimate/internal/pkg/vendors/edgio-sdk/applications/v7/dtos" edgsdkDtos "github.com/usual2970/certimate/internal/pkg/vendors/edgio-sdk/applications/v7/dtos"
) )
@ -57,7 +57,7 @@ func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPem string) (*deployer.DeployResult, error) { func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPem string) (*deployer.DeployResult, error) {
// 提取 Edgio 所需的服务端证书和中间证书内容 // 提取 Edgio 所需的服务端证书和中间证书内容
privateCertPem, intermediateCertPem, err := certs.ExtractCertificatesFromPEM(certPem) privateCertPem, intermediateCertPem, err := certutil.ExtractCertificatesFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -17,7 +17,7 @@ import (
"github.com/usual2970/certimate/internal/pkg/core/deployer" "github.com/usual2970/certimate/internal/pkg/core/deployer"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/jdcloud-ssl" uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/jdcloud-ssl"
"github.com/usual2970/certimate/internal/pkg/utils/slices" "github.com/usual2970/certimate/internal/pkg/utils/sliceutil"
) )
type DeployerConfig struct { type DeployerConfig struct {
@ -216,7 +216,7 @@ func (d *DeployerProvider) updateListenerCertificate(ctx context.Context, cloudL
} else { } else {
// 指定 SNI需部署到扩展证书 // 指定 SNI需部署到扩展证书
extCertSpecs := slices.Filter(describeListenerResp.Result.Listener.ExtensionCertificateSpecs, func(extCertSpec jdLbModel.ExtensionCertificateSpec) bool { extCertSpecs := sliceutil.Filter(describeListenerResp.Result.Listener.ExtensionCertificateSpecs, func(extCertSpec jdLbModel.ExtensionCertificateSpec) bool {
return extCertSpec.Domain == d.config.Domain return extCertSpec.Domain == d.config.Domain
}) })
if len(extCertSpecs) == 0 { if len(extCertSpecs) == 0 {
@ -228,7 +228,7 @@ func (d *DeployerProvider) updateListenerCertificate(ctx context.Context, cloudL
updateListenerCertificatesReq := jdLbApi.NewUpdateListenerCertificatesRequest( updateListenerCertificatesReq := jdLbApi.NewUpdateListenerCertificatesRequest(
d.config.RegionId, d.config.RegionId,
cloudListenerId, cloudListenerId,
slices.Map(extCertSpecs, func(extCertSpec jdLbModel.ExtensionCertificateSpec) jdLbModel.ExtCertificateUpdateSpec { sliceutil.Map(extCertSpecs, func(extCertSpec jdLbModel.ExtensionCertificateSpec) jdLbModel.ExtCertificateUpdateSpec {
return jdLbModel.ExtCertificateUpdateSpec{ return jdLbModel.ExtCertificateUpdateSpec{
CertificateBindId: extCertSpec.CertificateBindId, CertificateBindId: extCertSpec.CertificateBindId,
CertificateId: &cloudCertId, CertificateId: &cloudCertId,

View File

@ -14,7 +14,7 @@ import (
"k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd"
"github.com/usual2970/certimate/internal/pkg/core/deployer" "github.com/usual2970/certimate/internal/pkg/core/deployer"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
) )
type DeployerConfig struct { type DeployerConfig struct {
@ -76,7 +76,7 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPe
return nil, errors.New("config `secretDataKeyForKey` is required") return nil, errors.New("config `secretDataKeyForKey` is required")
} }
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -11,8 +11,8 @@ import (
xerrors "github.com/pkg/errors" xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/deployer" "github.com/usual2970/certimate/internal/pkg/core/deployer"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
"github.com/usual2970/certimate/internal/pkg/utils/files" "github.com/usual2970/certimate/internal/pkg/utils/fileutil"
) )
type DeployerConfig struct { type DeployerConfig struct {
@ -83,36 +83,36 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPe
// 写入证书和私钥文件 // 写入证书和私钥文件
switch d.config.OutputFormat { switch d.config.OutputFormat {
case OUTPUT_FORMAT_PEM: case OUTPUT_FORMAT_PEM:
if err := files.WriteString(d.config.OutputCertPath, certPem); err != nil { if err := fileutil.WriteString(d.config.OutputCertPath, certPem); err != nil {
return nil, xerrors.Wrap(err, "failed to save certificate file") return nil, xerrors.Wrap(err, "failed to save certificate file")
} }
d.logger.Info("ssl certificate file saved", slog.String("path", d.config.OutputCertPath)) d.logger.Info("ssl certificate file saved", slog.String("path", d.config.OutputCertPath))
if err := files.WriteString(d.config.OutputKeyPath, privkeyPem); err != nil { if err := fileutil.WriteString(d.config.OutputKeyPath, privkeyPem); err != nil {
return nil, xerrors.Wrap(err, "failed to save private key file") return nil, xerrors.Wrap(err, "failed to save private key file")
} }
d.logger.Info("ssl private key file saved", slog.String("path", d.config.OutputKeyPath)) d.logger.Info("ssl private key file saved", slog.String("path", d.config.OutputKeyPath))
case OUTPUT_FORMAT_PFX: case OUTPUT_FORMAT_PFX:
pfxData, err := certs.TransformCertificateFromPEMToPFX(certPem, privkeyPem, d.config.PfxPassword) pfxData, err := certutil.TransformCertificateFromPEMToPFX(certPem, privkeyPem, d.config.PfxPassword)
if err != nil { if err != nil {
return nil, xerrors.Wrap(err, "failed to transform certificate to PFX") return nil, xerrors.Wrap(err, "failed to transform certificate to PFX")
} }
d.logger.Info("ssl certificate transformed to pfx") d.logger.Info("ssl certificate transformed to pfx")
if err := files.Write(d.config.OutputCertPath, pfxData); err != nil { if err := fileutil.Write(d.config.OutputCertPath, pfxData); err != nil {
return nil, xerrors.Wrap(err, "failed to save certificate file") return nil, xerrors.Wrap(err, "failed to save certificate file")
} }
d.logger.Info("ssl certificate file saved", slog.String("path", d.config.OutputCertPath)) d.logger.Info("ssl certificate file saved", slog.String("path", d.config.OutputCertPath))
case OUTPUT_FORMAT_JKS: case OUTPUT_FORMAT_JKS:
jksData, err := certs.TransformCertificateFromPEMToJKS(certPem, privkeyPem, d.config.JksAlias, d.config.JksKeypass, d.config.JksStorepass) jksData, err := certutil.TransformCertificateFromPEMToJKS(certPem, privkeyPem, d.config.JksAlias, d.config.JksKeypass, d.config.JksStorepass)
if err != nil { if err != nil {
return nil, xerrors.Wrap(err, "failed to transform certificate to JKS") return nil, xerrors.Wrap(err, "failed to transform certificate to JKS")
} }
d.logger.Info("ssl certificate transformed to jks") d.logger.Info("ssl certificate transformed to jks")
if err := files.Write(d.config.OutputCertPath, jksData); err != nil { if err := fileutil.Write(d.config.OutputCertPath, jksData); err != nil {
return nil, xerrors.Wrap(err, "failed to save certificate file") return nil, xerrors.Wrap(err, "failed to save certificate file")
} }
d.logger.Info("ssl certificate file saved", slog.String("path", d.config.OutputCertPath)) d.logger.Info("ssl certificate file saved", slog.String("path", d.config.OutputCertPath))

View File

@ -14,7 +14,7 @@ import (
"golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh"
"github.com/usual2970/certimate/internal/pkg/core/deployer" "github.com/usual2970/certimate/internal/pkg/core/deployer"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
) )
type DeployerConfig struct { type DeployerConfig struct {
@ -125,7 +125,7 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPe
d.logger.Info("ssl private key file uploaded", slog.String("path", d.config.OutputKeyPath)) d.logger.Info("ssl private key file uploaded", slog.String("path", d.config.OutputKeyPath))
case OUTPUT_FORMAT_PFX: case OUTPUT_FORMAT_PFX:
pfxData, err := certs.TransformCertificateFromPEMToPFX(certPem, privkeyPem, d.config.PfxPassword) pfxData, err := certutil.TransformCertificateFromPEMToPFX(certPem, privkeyPem, d.config.PfxPassword)
if err != nil { if err != nil {
return nil, xerrors.Wrap(err, "failed to transform certificate to PFX") return nil, xerrors.Wrap(err, "failed to transform certificate to PFX")
} }
@ -137,7 +137,7 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPe
d.logger.Info("ssl certificate file uploaded", slog.String("path", d.config.OutputCertPath)) d.logger.Info("ssl certificate file uploaded", slog.String("path", d.config.OutputCertPath))
case OUTPUT_FORMAT_JKS: case OUTPUT_FORMAT_JKS:
jksData, err := certs.TransformCertificateFromPEMToJKS(certPem, privkeyPem, d.config.JksAlias, d.config.JksKeypass, d.config.JksStorepass) jksData, err := certutil.TransformCertificateFromPEMToJKS(certPem, privkeyPem, d.config.JksAlias, d.config.JksKeypass, d.config.JksStorepass)
if err != nil { if err != nil {
return nil, xerrors.Wrap(err, "failed to transform certificate to JKS") return nil, xerrors.Wrap(err, "failed to transform certificate to JKS")
} }

View File

@ -12,7 +12,7 @@ import (
xerrors "github.com/pkg/errors" xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/deployer" "github.com/usual2970/certimate/internal/pkg/core/deployer"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
) )
type DeployerConfig struct { type DeployerConfig struct {
@ -62,7 +62,7 @@ func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
} }
func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPem string) (*deployer.DeployResult, error) { func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPem string) (*deployer.DeployResult, error) {
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, xerrors.Wrap(err, "failed to parse x509") return nil, xerrors.Wrap(err, "failed to parse x509")
} }

View File

@ -13,7 +13,7 @@ import (
xerrors "github.com/pkg/errors" xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
) )
type UploaderConfig struct { type UploaderConfig struct {
@ -61,7 +61,7 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -99,12 +99,12 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
if *getUserCertificateDetailResp.Body.Cert == certPem { if *getUserCertificateDetailResp.Body.Cert == certPem {
isSameCert = true isSameCert = true
} else { } else {
oldCertX509, err := certs.ParseCertificateFromPEM(*getUserCertificateDetailResp.Body.Cert) oldCertX509, err := certutil.ParseCertificateFromPEM(*getUserCertificateDetailResp.Body.Cert)
if err != nil { if err != nil {
continue continue
} }
isSameCert = certs.EqualCertificate(certX509, oldCertX509) isSameCert = certutil.EqualCertificate(certX509, oldCertX509)
} }
// 如果已存在相同证书,直接返回 // 如果已存在相同证书,直接返回

View File

@ -16,7 +16,7 @@ import (
xerrors "github.com/pkg/errors" xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
) )
type UploaderConfig struct { type UploaderConfig struct {
@ -64,7 +64,7 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -12,7 +12,7 @@ import (
"golang.org/x/exp/slices" "golang.org/x/exp/slices"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
) )
type UploaderConfig struct { type UploaderConfig struct {
@ -60,13 +60,13 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }
// 生成 AWS 业务参数 // 生成 AWS 业务参数
scertPem, _ := certs.ConvertCertificateToPEM(certX509) scertPem, _ := certutil.ConvertCertificateToPEM(certX509)
bcertPem := certPem bcertPem := certPem
// 获取证书列表,避免重复上传 // 获取证书列表,避免重复上传
@ -112,12 +112,12 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
oldCertPem = aws.ToString(getCertificateResp.Certificate) oldCertPem = aws.ToString(getCertificateResp.Certificate)
} }
oldCertX509, err := certs.ParseCertificateFromPEM(oldCertPem) oldCertX509, err := certutil.ParseCertificateFromPEM(oldCertPem)
if err != nil { if err != nil {
continue continue
} }
if !certs.EqualCertificate(certX509, oldCertX509) { if !certutil.EqualCertificate(certX509, oldCertX509) {
continue continue
} }
} }

View File

@ -14,7 +14,7 @@ import (
xerrors "github.com/pkg/errors" xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
azcommon "github.com/usual2970/certimate/internal/pkg/vendors/azure-sdk/common" azcommon "github.com/usual2970/certimate/internal/pkg/vendors/azure-sdk/common"
) )
@ -67,7 +67,7 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -124,7 +124,7 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
continue continue
} }
if !certs.EqualCertificate(certX509, oldCertX509) { if !certutil.EqualCertificate(certX509, oldCertX509) {
continue continue
} }
} }

View File

@ -14,7 +14,7 @@ import (
xerrors "github.com/pkg/errors" xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
) )
type UploaderConfig struct { type UploaderConfig struct {
@ -59,7 +59,7 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -18,7 +18,7 @@ import (
xerrors "github.com/pkg/errors" xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
hwsdk "github.com/usual2970/certimate/internal/pkg/vendors/huaweicloud-sdk" hwsdk "github.com/usual2970/certimate/internal/pkg/vendors/huaweicloud-sdk"
) )
@ -67,7 +67,7 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -94,12 +94,12 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
if certDetail.Certificate == certPem { if certDetail.Certificate == certPem {
isSameCert = true isSameCert = true
} else { } else {
oldCertX509, err := certs.ParseCertificateFromPEM(certDetail.Certificate) oldCertX509, err := certutil.ParseCertificateFromPEM(certDetail.Certificate)
if err != nil { if err != nil {
continue continue
} }
isSameCert = certs.EqualCertificate(certX509, oldCertX509) isSameCert = certutil.EqualCertificate(certX509, oldCertX509)
} }
// 如果已存在相同证书,直接返回 // 如果已存在相同证书,直接返回

View File

@ -13,7 +13,7 @@ import (
xerrors "github.com/pkg/errors" xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
hwsdk "github.com/usual2970/certimate/internal/pkg/vendors/huaweicloud-sdk" hwsdk "github.com/usual2970/certimate/internal/pkg/vendors/huaweicloud-sdk"
) )
@ -62,7 +62,7 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -103,12 +103,12 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
if *exportCertificateResp.Certificate == certPem { if *exportCertificateResp.Certificate == certPem {
isSameCert = true isSameCert = true
} else { } else {
oldCertX509, err := certs.ParseCertificateFromPEM(*exportCertificateResp.Certificate) oldCertX509, err := certutil.ParseCertificateFromPEM(*exportCertificateResp.Certificate)
if err != nil { if err != nil {
continue continue
} }
isSameCert = certs.EqualCertificate(certX509, oldCertX509) isSameCert = certutil.EqualCertificate(certX509, oldCertX509)
} }
// 如果已存在相同证书,直接返回 // 如果已存在相同证书,直接返回

View File

@ -18,7 +18,7 @@ import (
xerrors "github.com/pkg/errors" xerrors "github.com/pkg/errors"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
hwsdk "github.com/usual2970/certimate/internal/pkg/vendors/huaweicloud-sdk" hwsdk "github.com/usual2970/certimate/internal/pkg/vendors/huaweicloud-sdk"
) )
@ -67,7 +67,7 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -103,12 +103,12 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
if *showCertificateResp.Content == certPem { if *showCertificateResp.Content == certPem {
isSameCert = true isSameCert = true
} else { } else {
oldCertX509, err := certs.ParseCertificateFromPEM(*showCertificateResp.Content) oldCertX509, err := certutil.ParseCertificateFromPEM(*showCertificateResp.Content)
if err != nil { if err != nil {
continue continue
} }
isSameCert = certs.EqualCertificate(certX509, oldCertX509) isSameCert = certutil.EqualCertificate(certX509, oldCertX509)
} }
// 如果已存在相同证书,直接返回 // 如果已存在相同证书,直接返回

View File

@ -16,7 +16,7 @@ import (
"golang.org/x/exp/slices" "golang.org/x/exp/slices"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
) )
type UploaderConfig struct { type UploaderConfig struct {
@ -62,7 +62,7 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -10,7 +10,7 @@ import (
"github.com/qiniu/go-sdk/v7/auth" "github.com/qiniu/go-sdk/v7/auth"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
qiniusdk "github.com/usual2970/certimate/internal/pkg/vendors/qiniu-sdk" qiniusdk "github.com/usual2970/certimate/internal/pkg/vendors/qiniu-sdk"
) )
@ -57,7 +57,7 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -17,7 +17,7 @@ import (
ucloudauth "github.com/ucloud/ucloud-sdk-go/ucloud/auth" ucloudauth "github.com/ucloud/ucloud-sdk-go/ucloud/auth"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
usslsdk "github.com/usual2970/certimate/internal/pkg/vendors/ucloud-sdk/ussl" usslsdk "github.com/usual2970/certimate/internal/pkg/vendors/ucloud-sdk/ussl"
) )
@ -114,7 +114,7 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
func (u *UploaderProvider) getExistCert(ctx context.Context, certPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) getExistCert(ctx context.Context, certPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -15,7 +15,7 @@ import (
ve "github.com/volcengine/volcengine-go-sdk/volcengine" ve "github.com/volcengine/volcengine-go-sdk/volcengine"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
) )
type UploaderConfig struct { type UploaderConfig struct {
@ -60,7 +60,7 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -12,7 +12,7 @@ import (
ve "github.com/volcengine/volcengine-go-sdk/volcengine" ve "github.com/volcengine/volcengine-go-sdk/volcengine"
"github.com/usual2970/certimate/internal/pkg/core/uploader" "github.com/usual2970/certimate/internal/pkg/core/uploader"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
) )
type UploaderConfig struct { type UploaderConfig struct {
@ -57,7 +57,7 @@ func (u *UploaderProvider) WithLogger(logger *slog.Logger) uploader.Uploader {
func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) { func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPem string) (res *uploader.UploadResult, err error) {
// 解析证书内容 // 解析证书内容
certX509, err := certs.ParseCertificateFromPEM(certPem) certX509, err := certutil.ParseCertificateFromPEM(certPem)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -88,12 +88,12 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
if certificate == certPem { if certificate == certPem {
isSameCert = true isSameCert = true
} else { } else {
oldCertX509, err := certs.ParseCertificateFromPEM(certificate) oldCertX509, err := certutil.ParseCertificateFromPEM(certificate)
if err != nil { if err != nil {
continue continue
} }
isSameCert = certs.EqualCertificate(certX509, oldCertX509) isSameCert = certutil.EqualCertificate(certX509, oldCertX509)
} }
// 如果已存在相同证书,直接返回 // 如果已存在相同证书,直接返回

View File

@ -1,4 +1,4 @@
package certs package certutil
import ( import (
"crypto/x509" "crypto/x509"

View File

@ -1,4 +1,4 @@
package certs package certutil
import ( import (
"crypto/ecdsa" "crypto/ecdsa"

View File

@ -1,4 +1,4 @@
package certs package certutil
import ( import (
"encoding/pem" "encoding/pem"

View File

@ -1,4 +1,4 @@
package certs package certutil
import ( import (
"crypto" "crypto"

View File

@ -1,4 +1,4 @@
package certs package certutil
import ( import (
"bytes" "bytes"

View File

@ -1,4 +1,4 @@
package files package fileutil
import ( import (
"os" "os"

View File

@ -1,9 +1,7 @@
package maps package maputil
import ( import (
"strconv" "strconv"
mapstructure "github.com/go-viper/mapstructure/v2"
) )
// 以字符串形式从字典中获取指定键的值。 // 以字符串形式从字典中获取指定键的值。
@ -14,8 +12,8 @@ import (
// //
// 出参: // 出参:
// - 字典中键对应的值。如果指定键不存在或者值的类型不是字符串,则返回空字符串。 // - 字典中键对应的值。如果指定键不存在或者值的类型不是字符串,则返回空字符串。
func GetValueAsString(dict map[string]any, key string) string { func GetString(dict map[string]any, key string) string {
return GetValueOrDefaultAsString(dict, key, "") return GetOrDefaultString(dict, key, "")
} }
// 以字符串形式从字典中获取指定键的值。 // 以字符串形式从字典中获取指定键的值。
@ -27,7 +25,7 @@ func GetValueAsString(dict map[string]any, key string) string {
// //
// 出参: // 出参:
// - 字典中键对应的值。如果指定键不存在、值的类型不是字符串或者值为零值,则返回默认值。 // - 字典中键对应的值。如果指定键不存在、值的类型不是字符串或者值为零值,则返回默认值。
func GetValueOrDefaultAsString(dict map[string]any, key string, defaultValue string) string { func GetOrDefaultString(dict map[string]any, key string, defaultValue string) string {
if dict == nil { if dict == nil {
return defaultValue return defaultValue
} }
@ -51,8 +49,8 @@ func GetValueOrDefaultAsString(dict map[string]any, key string, defaultValue str
// //
// 出参: // 出参:
// - 字典中键对应的值。如果指定键不存在或者值的类型不是 32 位整数,则返回 0。 // - 字典中键对应的值。如果指定键不存在或者值的类型不是 32 位整数,则返回 0。
func GetValueAsInt32(dict map[string]any, key string) int32 { func GetInt32(dict map[string]any, key string) int32 {
return GetValueOrDefaultAsInt32(dict, key, 0) return GetOrDefaultInt32(dict, key, 0)
} }
// 以 32 位整数形式从字典中获取指定键的值。 // 以 32 位整数形式从字典中获取指定键的值。
@ -64,7 +62,7 @@ func GetValueAsInt32(dict map[string]any, key string) int32 {
// //
// 出参: // 出参:
// - 字典中键对应的值。如果指定键不存在、值的类型不是 32 位整数或者值为零值,则返回默认值。 // - 字典中键对应的值。如果指定键不存在、值的类型不是 32 位整数或者值为零值,则返回默认值。
func GetValueOrDefaultAsInt32(dict map[string]any, key string, defaultValue int32) int32 { func GetOrDefaultInt32(dict map[string]any, key string, defaultValue int32) int32 {
if dict == nil { if dict == nil {
return defaultValue return defaultValue
} }
@ -97,8 +95,8 @@ func GetValueOrDefaultAsInt32(dict map[string]any, key string, defaultValue int3
// //
// 出参: // 出参:
// - 字典中键对应的值。如果指定键不存在或者值的类型不是 64 位整数,则返回 0。 // - 字典中键对应的值。如果指定键不存在或者值的类型不是 64 位整数,则返回 0。
func GetValueAsInt64(dict map[string]any, key string) int64 { func GetInt64(dict map[string]any, key string) int64 {
return GetValueOrDefaultAsInt64(dict, key, 0) return GetOrDefaultInt64(dict, key, 0)
} }
// 以 64 位整数形式从字典中获取指定键的值。 // 以 64 位整数形式从字典中获取指定键的值。
@ -110,7 +108,7 @@ func GetValueAsInt64(dict map[string]any, key string) int64 {
// //
// 出参: // 出参:
// - 字典中键对应的值。如果指定键不存在、值的类型不是 64 位整数或者值为零值,则返回默认值。 // - 字典中键对应的值。如果指定键不存在、值的类型不是 64 位整数或者值为零值,则返回默认值。
func GetValueOrDefaultAsInt64(dict map[string]any, key string, defaultValue int64) int64 { func GetOrDefaultInt64(dict map[string]any, key string, defaultValue int64) int64 {
if dict == nil { if dict == nil {
return defaultValue return defaultValue
} }
@ -149,8 +147,8 @@ func GetValueOrDefaultAsInt64(dict map[string]any, key string, defaultValue int6
// //
// 出参: // 出参:
// - 字典中键对应的值。如果指定键不存在或者值的类型不是布尔,则返回 false。 // - 字典中键对应的值。如果指定键不存在或者值的类型不是布尔,则返回 false。
func GetValueAsBool(dict map[string]any, key string) bool { func GetBool(dict map[string]any, key string) bool {
return GetValueOrDefaultAsBool(dict, key, false) return GetOrDefaultBool(dict, key, false)
} }
// 以布尔形式从字典中获取指定键的值。 // 以布尔形式从字典中获取指定键的值。
@ -162,7 +160,7 @@ func GetValueAsBool(dict map[string]any, key string) bool {
// //
// 出参: // 出参:
// - 字典中键对应的值。如果指定键不存在或者值的类型不是布尔,则返回默认值。 // - 字典中键对应的值。如果指定键不存在或者值的类型不是布尔,则返回默认值。
func GetValueOrDefaultAsBool(dict map[string]any, key string, defaultValue bool) bool { func GetOrDefaultBool(dict map[string]any, key string, defaultValue bool) bool {
if dict == nil { if dict == nil {
return defaultValue return defaultValue
} }
@ -182,28 +180,3 @@ func GetValueOrDefaultAsBool(dict map[string]any, key string, defaultValue bool)
return defaultValue return defaultValue
} }
// 将字典填充到指定类型的结构体。
// 与 [json.Unmarshal] 类似,但传入的是一个 [map[string]any] 对象而非 JSON 格式的字符串。
//
// 入参:
// - dict: 字典。
// - output: 结构体指针。
//
// 出参:
// - 错误信息。如果填充失败,则返回错误信息。
func Populate(dict map[string]any, output any) error {
config := &mapstructure.DecoderConfig{
Metadata: nil,
Result: output,
WeaklyTypedInput: true,
TagName: "json",
}
decoder, err := mapstructure.NewDecoder(config)
if err != nil {
return err
}
return decoder.Decode(dict)
}

View File

@ -0,0 +1,30 @@
package maputil
import (
mapstructure "github.com/go-viper/mapstructure/v2"
)
// 将字典填充到指定类型的结构体。
// 与 [json.Unmarshal] 类似,但传入的是一个 [map[string]any] 对象而非 JSON 格式的字符串。
//
// 入参:
// - dict: 字典。
// - output: 结构体指针。
//
// 出参:
// - 错误信息。如果填充失败,则返回错误信息。
func Populate(dict map[string]any, output any) error {
config := &mapstructure.DecoderConfig{
Metadata: nil,
Result: output,
WeaklyTypedInput: true,
TagName: "json",
}
decoder, err := mapstructure.NewDecoder(config)
if err != nil {
return err
}
return decoder.Decode(dict)
}

View File

@ -1,4 +1,4 @@
package slices package sliceutil
// 创建给定切片一部分的浅拷贝,其包含通过所提供函数实现的测试的所有元素。 // 创建给定切片一部分的浅拷贝,其包含通过所提供函数实现的测试的所有元素。
// //

View File

@ -1,4 +1,4 @@
package types package typeutil
import "reflect" import "reflect"

View File

@ -11,7 +11,7 @@ import (
"github.com/usual2970/certimate/internal/app" "github.com/usual2970/certimate/internal/app"
"github.com/usual2970/certimate/internal/domain" "github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/pkg/utils/slices" "github.com/usual2970/certimate/internal/pkg/utils/sliceutil"
) )
var maxWorkers = 16 var maxWorkers = 16
@ -118,7 +118,7 @@ func (d *WorkflowDispatcher) Cancel(runId string) {
// 移除排队中的 WorkflowRun // 移除排队中的 WorkflowRun
d.queueMutex.Lock() d.queueMutex.Lock()
d.queue = slices.Filter(d.queue, func(d *WorkflowWorkerData) bool { d.queue = sliceutil.Filter(d.queue, func(d *WorkflowWorkerData) bool {
return d.RunId != runId return d.RunId != runId
}) })
d.queueMutex.Unlock() d.queueMutex.Unlock()

View File

@ -9,7 +9,7 @@ import (
"github.com/usual2970/certimate/internal/applicant" "github.com/usual2970/certimate/internal/applicant"
"github.com/usual2970/certimate/internal/domain" "github.com/usual2970/certimate/internal/domain"
"github.com/usual2970/certimate/internal/pkg/utils/certs" "github.com/usual2970/certimate/internal/pkg/utils/certutil"
"github.com/usual2970/certimate/internal/repository" "github.com/usual2970/certimate/internal/repository"
) )
@ -63,7 +63,7 @@ func (n *applyNode) Process(ctx context.Context) error {
} }
// 解析证书并生成实体 // 解析证书并生成实体
certX509, err := certs.ParseCertificateFromPEM(applyResult.CertificateFullChain) certX509, err := certutil.ParseCertificateFromPEM(applyResult.CertificateFullChain)
if err != nil { if err != nil {
n.logger.Warn("failed to parse certificate, may be the CA responded error") n.logger.Warn("failed to parse certificate, may be the CA responded error")
return err return err

View File

@ -7,8 +7,7 @@ import (
"github.com/pocketbase/pocketbase/core" "github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations" m "github.com/pocketbase/pocketbase/migrations"
"github.com/usual2970/certimate/internal/pkg/utils/certutil"
"github.com/usual2970/certimate/internal/pkg/utils/certs"
) )
func init() { func init() {
@ -1754,21 +1753,21 @@ func init() {
case "certificate": case "certificate":
{ {
if record.GetString("issuer") == "" { if record.GetString("issuer") == "" {
cert, _ := certs.ParseCertificateFromPEM(record.GetString("certificate")) cert, _ := certutil.ParseCertificateFromPEM(record.GetString("certificate"))
if cert != nil { if cert != nil {
record.Set("issuer", strings.Join(cert.Issuer.Organization, ";")) record.Set("issuer", strings.Join(cert.Issuer.Organization, ";"))
changed = true changed = true
} }
} }
if record.GetString("serialNumber") == "" { if record.GetString("serialNumber") == "" {
cert, _ := certs.ParseCertificateFromPEM(record.GetString("certificate")) cert, _ := certutil.ParseCertificateFromPEM(record.GetString("certificate"))
if cert != nil { if cert != nil {
record.Set("serialNumber", strings.ToUpper(cert.SerialNumber.Text(16))) record.Set("serialNumber", strings.ToUpper(cert.SerialNumber.Text(16)))
changed = true changed = true
} }
} }
if record.GetString("keyAlgorithm") == "" { if record.GetString("keyAlgorithm") == "" {
cert, _ := certs.ParseCertificateFromPEM(record.GetString("certificate")) cert, _ := certutil.ParseCertificateFromPEM(record.GetString("certificate"))
if cert != nil { if cert != nil {
switch cert.SignatureAlgorithm { switch cert.SignatureAlgorithm {
case x509.SHA256WithRSA, x509.SHA256WithRSAPSS: case x509.SHA256WithRSA, x509.SHA256WithRSAPSS: