From e9b74a24a4f8563b0d0af6912ee83a5ebb22f8f2 Mon Sep 17 00:00:00 2001 From: VupHub <95559063+VupHub@users.noreply.github.com> Date: Fri, 3 Jul 2026 13:41:57 +0800 Subject: [PATCH] fix: #1367 --- .../providers/aliyun-cdn/aliyun_cdn.go | 13 ++++++++++--- .../providers/aliyun-dcdn/aliyun_dcdn.go | 13 ++++++++++--- .../providers/aliyun-live/aliyun_live.go | 13 ++++++++++--- .../providers/baishan-cdn/baishan_cdn.go | 18 ++++++++++++++---- .../deployer/providers/qiniu-cdn/qiniu_cdn.go | 13 ++++++++++--- .../volcengine-dcdn/volcengine_dcdn.go | 13 ++++++++++--- .../providers/wangsu-cdn/wangsu_cdn.go | 11 +++++++++-- 7 files changed, 73 insertions(+), 21 deletions(-) diff --git a/pkg/core/deployer/providers/aliyun-cdn/aliyun_cdn.go b/pkg/core/deployer/providers/aliyun-cdn/aliyun_cdn.go index 65118e162..da44f292c 100644 --- a/pkg/core/deployer/providers/aliyun-cdn/aliyun_cdn.go +++ b/pkg/core/deployer/providers/aliyun-cdn/aliyun_cdn.go @@ -104,12 +104,11 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep switch d.config.DomainMatchPattern { case "", DOMAIN_MATCH_PATTERN_EXACT: { - if d.config.Domain == "" { + domain := normalizeDomain(d.config.Domain) + if domain == "" { return nil, fmt.Errorf("config `domain` is required") } - // "*.example.com" → ".example.com",适配阿里云 CDN 要求的泛域名格式 - domain := strings.TrimPrefix(d.config.Domain, "*") domains = []string{domain} } @@ -270,3 +269,11 @@ func createSDKClient(accessKeyId, accessKeySecret string) (*alicdn.Client, error return client, nil } + +func normalizeDomain(domain string) string { + // "*.example.com" → ".example.com",适配阿里云 CDN 的泛域名参数要求 + if strings.HasPrefix(domain, "*.") { + return strings.TrimPrefix(domain, "*") + } + return domain +} diff --git a/pkg/core/deployer/providers/aliyun-dcdn/aliyun_dcdn.go b/pkg/core/deployer/providers/aliyun-dcdn/aliyun_dcdn.go index 3bcaaa4d3..d70945465 100644 --- a/pkg/core/deployer/providers/aliyun-dcdn/aliyun_dcdn.go +++ b/pkg/core/deployer/providers/aliyun-dcdn/aliyun_dcdn.go @@ -104,12 +104,11 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep switch d.config.DomainMatchPattern { case "", DOMAIN_MATCH_PATTERN_EXACT: { - if d.config.Domain == "" { + domain := normalizeDomain(d.config.Domain) + if domain == "" { return nil, fmt.Errorf("config `domain` is required") } - // "*.example.com" → ".example.com",适配阿里云 DCDN 要求的泛域名格式 - domain := strings.TrimPrefix(d.config.Domain, "*") domains = []string{domain} } @@ -271,3 +270,11 @@ func createSDKClient(accessKeyId, accessKeySecret string) (*alidcdn.Client, erro return client, nil } + +func normalizeDomain(domain string) string { + // "*.example.com" → ".example.com",适配阿里云 DCDN 的泛域名参数要求 + if strings.HasPrefix(domain, "*.") { + return strings.TrimPrefix(domain, "*") + } + return domain +} diff --git a/pkg/core/deployer/providers/aliyun-live/aliyun_live.go b/pkg/core/deployer/providers/aliyun-live/aliyun_live.go index 494c456e6..0541c1a2d 100644 --- a/pkg/core/deployer/providers/aliyun-live/aliyun_live.go +++ b/pkg/core/deployer/providers/aliyun-live/aliyun_live.go @@ -79,12 +79,11 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep switch d.config.DomainMatchPattern { case "", DOMAIN_MATCH_PATTERN_EXACT: { - if d.config.Domain == "" { + domain := normalizeDomain(d.config.Domain) + if domain == "" { return nil, fmt.Errorf("config `domain` is required") } - // "*.example.com" → ".example.com",适配阿里云 Live 要求的泛域名格式 - domain := strings.TrimPrefix(d.config.Domain, "*") domains = []string{domain} } @@ -251,3 +250,11 @@ func createSDKClient(accessKeyId, accessKeySecret, region string) (*alilive.Clie return client, nil } + +func normalizeDomain(domain string) string { + // "*.example.com" → ".example.com",适配阿里云 Live 的泛域名参数要求 + if strings.HasPrefix(domain, "*.") { + return strings.TrimPrefix(domain, "*") + } + return domain +} diff --git a/pkg/core/deployer/providers/baishan-cdn/baishan_cdn.go b/pkg/core/deployer/providers/baishan-cdn/baishan_cdn.go index fbf7ecaab..882ab8cb1 100644 --- a/pkg/core/deployer/providers/baishan-cdn/baishan_cdn.go +++ b/pkg/core/deployer/providers/baishan-cdn/baishan_cdn.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "log/slog" + "strings" "github.com/samber/lo" @@ -98,7 +99,8 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep } func (d *Deployer) deployToDomain(ctx context.Context, certPEM, privkeyPEM string) error { - if d.config.Domain == "" { + domain := normalizeDomain(d.config.Domain) + if domain == "" { return fmt.Errorf("config `domain` is required") } @@ -113,7 +115,7 @@ func (d *Deployer) deployToDomain(ctx context.Context, certPEM, privkeyPEM strin // 查询域名配置 // REF: https://portal.baishancloud.com/track/document/api/1/1065 getDomainConfigReq := &baishansdk.GetDomainConfigRequest{ - Domains: lo.ToPtr(d.config.Domain), + Domains: lo.ToPtr(domain), Config: []*string{lo.ToPtr("https")}, } getDomainConfigResp, err := d.sdkClient.GetDomainConfigWithContext(ctx, getDomainConfigReq) @@ -121,13 +123,13 @@ func (d *Deployer) deployToDomain(ctx context.Context, certPEM, privkeyPEM strin if err != nil { return fmt.Errorf("failed to execute sdk request 'cdn.GetDomainConfig': %w", err) } else if len(getDomainConfigResp.Data) == 0 { - return fmt.Errorf("could not find domain '%s'", d.config.Domain) + return fmt.Errorf("could not find domain '%s'", domain) } // 设置域名配置 // REF: https://portal.baishancloud.com/track/document/api/1/1045 setDomainConfigReq := &baishansdk.SetDomainConfigRequest{ - Domains: lo.ToPtr(d.config.Domain), + Domains: lo.ToPtr(domain), Config: &baishansdk.DomainConfig{ Https: &baishansdk.DomainConfigHttps{ CertId: json.Number(upres.CertId), @@ -172,3 +174,11 @@ func createSDKClient(apiToken string) (*baishansdk.Client, error) { return client, nil } + +func normalizeDomain(domain string) string { + // "*.example.com" → ".example.com",适配白山云 CDN 的泛域名参数要求 + if strings.HasPrefix(domain, "*.") { + return strings.TrimPrefix(domain, "*") + } + return domain +} diff --git a/pkg/core/deployer/providers/qiniu-cdn/qiniu_cdn.go b/pkg/core/deployer/providers/qiniu-cdn/qiniu_cdn.go index 1b2ca5d4b..926539749 100644 --- a/pkg/core/deployer/providers/qiniu-cdn/qiniu_cdn.go +++ b/pkg/core/deployer/providers/qiniu-cdn/qiniu_cdn.go @@ -89,12 +89,11 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep switch d.config.DomainMatchPattern { case "", DOMAIN_MATCH_PATTERN_EXACT: { - if d.config.Domain == "" { + domain := normalizeDomain(d.config.Domain) + if domain == "" { return nil, fmt.Errorf("config `domain` is required") } - // "*.example.com" → ".example.com",适配七牛云 CDN 要求的泛域名格式 - domain := strings.TrimPrefix(d.config.Domain, "*") domains = []string{domain} } @@ -232,3 +231,11 @@ func (d *Deployer) updateDomainCertificate(ctx context.Context, domain string, c return nil } + +func normalizeDomain(domain string) string { + // "*.example.com" → ".example.com",适配七牛云 CDN 的泛域名参数要求 + if strings.HasPrefix(domain, "*.") { + return strings.TrimPrefix(domain, "*") + } + return domain +} diff --git a/pkg/core/deployer/providers/volcengine-dcdn/volcengine_dcdn.go b/pkg/core/deployer/providers/volcengine-dcdn/volcengine_dcdn.go index 63455f2e9..d7501c5ab 100644 --- a/pkg/core/deployer/providers/volcengine-dcdn/volcengine_dcdn.go +++ b/pkg/core/deployer/providers/volcengine-dcdn/volcengine_dcdn.go @@ -99,12 +99,11 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep switch d.config.DomainMatchPattern { case "", DOMAIN_MATCH_PATTERN_EXACT: { - if d.config.Domain == "" { + domain := normalizeDomain(d.config.Domain) + if domain == "" { return nil, fmt.Errorf("config `domain` is required") } - // "*.example.com" → ".example.com",适配火山引擎 DCDN 要求的泛域名格式 - domain := strings.TrimPrefix(d.config.Domain, "*") domains = []string{domain} } @@ -227,3 +226,11 @@ func createSDKClient(accessKeyId, secretAccessKey, region string) (*vedcdn.DCDN, client := vedcdn.New(session) return client, nil } + +func normalizeDomain(domain string) string { + // "*.example.com" → ".example.com",适配火山引擎 DCDN 的泛域名参数要求 + if strings.HasPrefix(domain, "*.") { + return strings.TrimPrefix(domain, "*") + } + return domain +} diff --git a/pkg/core/deployer/providers/wangsu-cdn/wangsu_cdn.go b/pkg/core/deployer/providers/wangsu-cdn/wangsu_cdn.go index f722b3401..959f77762 100644 --- a/pkg/core/deployer/providers/wangsu-cdn/wangsu_cdn.go +++ b/pkg/core/deployer/providers/wangsu-cdn/wangsu_cdn.go @@ -94,9 +94,8 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep return nil, fmt.Errorf("config `domains` is required") } - // "*.example.com" → ".example.com",适配网宿云 CDN 要求的泛域名格式 domains = lo.Map(d.config.Domains, func(domain string, _ int) string { - return strings.TrimPrefix(domain, "*") + return normalizeDomain(domain) }) } @@ -130,3 +129,11 @@ func createSDKClient(accessKeyId, accessKeySecret string) (*wangsucdn.Client, er return client, nil } + +func normalizeDomain(domain string) string { + // "*.example.com" → ".example.com",适配网宿云 CDN 的泛域名参数要求 + if strings.HasPrefix(domain, "*.") { + return strings.TrimPrefix(domain, "*") + } + return domain +}