mirror of
https://github.com/usual2970/certimate.git
synced 2025-06-07 21:19:51 +00:00
commit
262c1d7fcb
@ -157,6 +157,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunALB.NewDeployer(&pAliyunALB.DeployerConfig{
|
deployer, err := pAliyunALB.NewDeployer(&pAliyunALB.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
ResourceType: pAliyunALB.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
ResourceType: pAliyunALB.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
||||||
LoadbalancerId: maputil.GetString(options.ProviderServiceConfig, "loadbalancerId"),
|
LoadbalancerId: maputil.GetString(options.ProviderServiceConfig, "loadbalancerId"),
|
||||||
@ -169,6 +170,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunAPIGW.NewDeployer(&pAliyunAPIGW.DeployerConfig{
|
deployer, err := pAliyunAPIGW.NewDeployer(&pAliyunAPIGW.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
ServiceType: pAliyunAPIGW.ServiceType(maputil.GetString(options.ProviderServiceConfig, "serviceType")),
|
ServiceType: pAliyunAPIGW.ServiceType(maputil.GetString(options.ProviderServiceConfig, "serviceType")),
|
||||||
GatewayId: maputil.GetString(options.ProviderServiceConfig, "gatewayId"),
|
GatewayId: maputil.GetString(options.ProviderServiceConfig, "gatewayId"),
|
||||||
@ -181,6 +183,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunCAS.NewDeployer(&pAliyunCAS.DeployerConfig{
|
deployer, err := pAliyunCAS.NewDeployer(&pAliyunCAS.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
})
|
})
|
||||||
return deployer, err
|
return deployer, err
|
||||||
@ -189,6 +192,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunCASDeploy.NewDeployer(&pAliyunCASDeploy.DeployerConfig{
|
deployer, err := pAliyunCASDeploy.NewDeployer(&pAliyunCASDeploy.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
ResourceIds: sliceutil.Filter(strings.Split(maputil.GetString(options.ProviderServiceConfig, "resourceIds"), ";"), func(s string) bool { return s != "" }),
|
ResourceIds: sliceutil.Filter(strings.Split(maputil.GetString(options.ProviderServiceConfig, "resourceIds"), ";"), func(s string) bool { return s != "" }),
|
||||||
ContactIds: sliceutil.Filter(strings.Split(maputil.GetString(options.ProviderServiceConfig, "contactIds"), ";"), func(s string) bool { return s != "" }),
|
ContactIds: sliceutil.Filter(strings.Split(maputil.GetString(options.ProviderServiceConfig, "contactIds"), ";"), func(s string) bool { return s != "" }),
|
||||||
@ -199,6 +203,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunCDN.NewDeployer(&pAliyunCDN.DeployerConfig{
|
deployer, err := pAliyunCDN.NewDeployer(&pAliyunCDN.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
||||||
})
|
})
|
||||||
return deployer, err
|
return deployer, err
|
||||||
@ -207,6 +212,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunCLB.NewDeployer(&pAliyunCLB.DeployerConfig{
|
deployer, err := pAliyunCLB.NewDeployer(&pAliyunCLB.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
ResourceType: pAliyunCLB.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
ResourceType: pAliyunCLB.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
||||||
LoadbalancerId: maputil.GetString(options.ProviderServiceConfig, "loadbalancerId"),
|
LoadbalancerId: maputil.GetString(options.ProviderServiceConfig, "loadbalancerId"),
|
||||||
@ -219,6 +225,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunDCDN.NewDeployer(&pAliyunDCDN.DeployerConfig{
|
deployer, err := pAliyunDCDN.NewDeployer(&pAliyunDCDN.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
||||||
})
|
})
|
||||||
return deployer, err
|
return deployer, err
|
||||||
@ -227,6 +234,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunDDoS.NewDeployer(&pAliyunDDoS.DeployerConfig{
|
deployer, err := pAliyunDDoS.NewDeployer(&pAliyunDDoS.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
||||||
})
|
})
|
||||||
@ -245,6 +253,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunFC.NewDeployer(&pAliyunFC.DeployerConfig{
|
deployer, err := pAliyunFC.NewDeployer(&pAliyunFC.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
ServiceVersion: maputil.GetOrDefaultString(options.ProviderServiceConfig, "serviceVersion", "3.0"),
|
ServiceVersion: maputil.GetOrDefaultString(options.ProviderServiceConfig, "serviceVersion", "3.0"),
|
||||||
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
||||||
@ -255,6 +264,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunGA.NewDeployer(&pAliyunGA.DeployerConfig{
|
deployer, err := pAliyunGA.NewDeployer(&pAliyunGA.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
ResourceType: pAliyunGA.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
ResourceType: pAliyunGA.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
||||||
AcceleratorId: maputil.GetString(options.ProviderServiceConfig, "acceleratorId"),
|
AcceleratorId: maputil.GetString(options.ProviderServiceConfig, "acceleratorId"),
|
||||||
ListenerId: maputil.GetString(options.ProviderServiceConfig, "listenerId"),
|
ListenerId: maputil.GetString(options.ProviderServiceConfig, "listenerId"),
|
||||||
@ -275,6 +285,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunNLB.NewDeployer(&pAliyunNLB.DeployerConfig{
|
deployer, err := pAliyunNLB.NewDeployer(&pAliyunNLB.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
ResourceType: pAliyunNLB.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
ResourceType: pAliyunNLB.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
||||||
LoadbalancerId: maputil.GetString(options.ProviderServiceConfig, "loadbalancerId"),
|
LoadbalancerId: maputil.GetString(options.ProviderServiceConfig, "loadbalancerId"),
|
||||||
@ -286,6 +297,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunOSS.NewDeployer(&pAliyunOSS.DeployerConfig{
|
deployer, err := pAliyunOSS.NewDeployer(&pAliyunOSS.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
Bucket: maputil.GetString(options.ProviderServiceConfig, "bucket"),
|
Bucket: maputil.GetString(options.ProviderServiceConfig, "bucket"),
|
||||||
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
||||||
@ -296,6 +308,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunVOD.NewDeployer(&pAliyunVOD.DeployerConfig{
|
deployer, err := pAliyunVOD.NewDeployer(&pAliyunVOD.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
||||||
})
|
})
|
||||||
@ -305,6 +318,7 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
deployer, err := pAliyunWAF.NewDeployer(&pAliyunWAF.DeployerConfig{
|
deployer, err := pAliyunWAF.NewDeployer(&pAliyunWAF.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
AccessKeySecret: access.AccessKeySecret,
|
AccessKeySecret: access.AccessKeySecret,
|
||||||
|
ResourceGroupId: access.ResourceGroupId,
|
||||||
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
ServiceVersion: maputil.GetOrDefaultString(options.ProviderServiceConfig, "serviceVersion", "3.0"),
|
ServiceVersion: maputil.GetOrDefaultString(options.ProviderServiceConfig, "serviceVersion", "3.0"),
|
||||||
InstanceId: maputil.GetString(options.ProviderServiceConfig, "instanceId"),
|
InstanceId: maputil.GetString(options.ProviderServiceConfig, "instanceId"),
|
||||||
@ -676,40 +690,44 @@ func createDeployerProvider(options *deployerProviderOptions) (deployer.Deployer
|
|||||||
switch options.Provider {
|
switch options.Provider {
|
||||||
case domain.DeploymentProviderTypeHuaweiCloudCDN:
|
case domain.DeploymentProviderTypeHuaweiCloudCDN:
|
||||||
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: maputil.GetString(options.ProviderServiceConfig, "region"),
|
EnterpriseProjectId: access.EnterpriseProjectId,
|
||||||
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
|
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
||||||
})
|
})
|
||||||
return deployer, err
|
return deployer, err
|
||||||
|
|
||||||
case domain.DeploymentProviderTypeHuaweiCloudELB:
|
case domain.DeploymentProviderTypeHuaweiCloudELB:
|
||||||
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: maputil.GetString(options.ProviderServiceConfig, "region"),
|
EnterpriseProjectId: access.EnterpriseProjectId,
|
||||||
ResourceType: pHuaweiCloudELB.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
CertificateId: maputil.GetString(options.ProviderServiceConfig, "certificateId"),
|
ResourceType: pHuaweiCloudELB.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
||||||
LoadbalancerId: maputil.GetString(options.ProviderServiceConfig, "loadbalancerId"),
|
CertificateId: maputil.GetString(options.ProviderServiceConfig, "certificateId"),
|
||||||
ListenerId: maputil.GetString(options.ProviderServiceConfig, "listenerId"),
|
LoadbalancerId: maputil.GetString(options.ProviderServiceConfig, "loadbalancerId"),
|
||||||
|
ListenerId: maputil.GetString(options.ProviderServiceConfig, "listenerId"),
|
||||||
})
|
})
|
||||||
return deployer, err
|
return deployer, err
|
||||||
|
|
||||||
case domain.DeploymentProviderTypeHuaweiCloudSCM:
|
case domain.DeploymentProviderTypeHuaweiCloudSCM:
|
||||||
deployer, err := pHuaweiCloudSCM.NewDeployer(&pHuaweiCloudSCM.DeployerConfig{
|
deployer, err := pHuaweiCloudSCM.NewDeployer(&pHuaweiCloudSCM.DeployerConfig{
|
||||||
AccessKeyId: access.AccessKeyId,
|
AccessKeyId: access.AccessKeyId,
|
||||||
SecretAccessKey: access.SecretAccessKey,
|
SecretAccessKey: access.SecretAccessKey,
|
||||||
|
EnterpriseProjectId: access.EnterpriseProjectId,
|
||||||
})
|
})
|
||||||
return deployer, err
|
return deployer, err
|
||||||
|
|
||||||
case domain.DeploymentProviderTypeHuaweiCloudWAF:
|
case domain.DeploymentProviderTypeHuaweiCloudWAF:
|
||||||
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: maputil.GetString(options.ProviderServiceConfig, "region"),
|
EnterpriseProjectId: access.EnterpriseProjectId,
|
||||||
ResourceType: pHuaweiCloudWAF.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
Region: maputil.GetString(options.ProviderServiceConfig, "region"),
|
||||||
CertificateId: maputil.GetString(options.ProviderServiceConfig, "certificateId"),
|
ResourceType: pHuaweiCloudWAF.ResourceType(maputil.GetString(options.ProviderServiceConfig, "resourceType")),
|
||||||
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
CertificateId: maputil.GetString(options.ProviderServiceConfig, "certificateId"),
|
||||||
|
Domain: maputil.GetString(options.ProviderServiceConfig, "domain"),
|
||||||
})
|
})
|
||||||
return deployer, err
|
return deployer, err
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@ type AccessConfigForACMEHttpReq struct {
|
|||||||
type AccessConfigForAliyun struct {
|
type AccessConfigForAliyun struct {
|
||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type AccessConfigForAWS struct {
|
type AccessConfigForAWS struct {
|
||||||
@ -199,8 +200,9 @@ type AccessConfigForHetzner struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type AccessConfigForHuaweiCloud struct {
|
type AccessConfigForHuaweiCloud struct {
|
||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
SecretAccessKey string `json:"secretAccessKey"`
|
SecretAccessKey string `json:"secretAccessKey"`
|
||||||
|
EnterpriseProjectId string `json:"enterpriseProjectId,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type AccessConfigForJDCloud struct {
|
type AccessConfigForJDCloud struct {
|
||||||
|
@ -71,17 +71,17 @@ type WorkflowNodeConfigForApply struct {
|
|||||||
Provider string `json:"provider"` // DNS 提供商
|
Provider string `json:"provider"` // DNS 提供商
|
||||||
ProviderAccessId string `json:"providerAccessId"` // DNS 提供商授权记录 ID
|
ProviderAccessId string `json:"providerAccessId"` // DNS 提供商授权记录 ID
|
||||||
ProviderConfig map[string]any `json:"providerConfig"` // DNS 提供商额外配置
|
ProviderConfig map[string]any `json:"providerConfig"` // DNS 提供商额外配置
|
||||||
CAProvider string `json:"caProvider,omitempty"` // CA 提供商(零值将使用全局配置)
|
CAProvider string `json:"caProvider,omitempty"` // CA 提供商(零值时使用全局配置)
|
||||||
CAProviderAccessId string `json:"caProviderAccessId,omitempty"` // CA 提供商授权记录 ID
|
CAProviderAccessId string `json:"caProviderAccessId,omitempty"` // CA 提供商授权记录 ID
|
||||||
CAProviderConfig map[string]any `json:"caProviderConfig,omitempty"` // CA 提供商额外配置
|
CAProviderConfig map[string]any `json:"caProviderConfig,omitempty"` // CA 提供商额外配置
|
||||||
KeyAlgorithm string `json:"keyAlgorithm"` // 证书算法
|
KeyAlgorithm string `json:"keyAlgorithm"` // 证书算法
|
||||||
Nameservers string `json:"nameservers,omitempty"` // DNS 服务器列表,以半角分号分隔
|
Nameservers string `json:"nameservers,omitempty"` // DNS 服务器列表,以半角分号分隔
|
||||||
DnsPropagationWait int32 `json:"dnsPropagationWait,omitempty"` // DNS 传播等待时间,等同于 lego 的 `--dns-propagation-wait` 参数
|
DnsPropagationWait int32 `json:"dnsPropagationWait,omitempty"` // DNS 传播等待时间,等同于 lego 的 `--dns-propagation-wait` 参数
|
||||||
DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` // DNS 传播检查超时时间(零值取决于提供商的默认值)
|
DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` // DNS 传播检查超时时间(零值时使用提供商的默认值)
|
||||||
DnsTTL int32 `json:"dnsTTL,omitempty"` // DNS 解析记录 TTL(零值取决于提供商的默认值)
|
DnsTTL int32 `json:"dnsTTL,omitempty"` // DNS 解析记录 TTL(零值时使用提供商的默认值)
|
||||||
DisableFollowCNAME bool `json:"disableFollowCNAME,omitempty"` // 是否关闭 CNAME 跟随
|
DisableFollowCNAME bool `json:"disableFollowCNAME,omitempty"` // 是否关闭 CNAME 跟随
|
||||||
DisableARI bool `json:"disableARI,omitempty"` // 是否关闭 ARI
|
DisableARI bool `json:"disableARI,omitempty"` // 是否关闭 ARI
|
||||||
SkipBeforeExpiryDays int32 `json:"skipBeforeExpiryDays,omitempty"` // 证书到期前多少天前跳过续期(零值将使用默认值 30)
|
SkipBeforeExpiryDays int32 `json:"skipBeforeExpiryDays,omitempty"` // 证书到期前多少天前跳过续期(零值时默认值 30)
|
||||||
}
|
}
|
||||||
|
|
||||||
type WorkflowNodeConfigForUpload struct {
|
type WorkflowNodeConfigForUpload struct {
|
||||||
|
@ -20,7 +20,7 @@ type Deployer interface {
|
|||||||
// 出参:
|
// 出参:
|
||||||
// - res:部署结果。
|
// - res:部署结果。
|
||||||
// - err: 错误。
|
// - err: 错误。
|
||||||
Deploy(ctx context.Context, certPEM string, privkeyPEM string) (res *DeployResult, err error)
|
Deploy(ctx context.Context, certPEM string, privkeyPEM string) (_res *DeployResult, _err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 表示证书部署结果的数据结构。
|
// 表示证书部署结果的数据结构。
|
||||||
|
@ -53,7 +53,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 部署资源类型。
|
// 部署资源类型。
|
||||||
@ -64,7 +66,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
return nil, fmt.Errorf("failed to create sdk clients: %w", err)
|
return nil, fmt.Errorf("failed to create sdk clients: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.ResourceGroupId, config.Region)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
}
|
}
|
||||||
@ -79,7 +81,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -423,7 +425,7 @@ func createSdkClients(accessKeyId, accessKeySecret, region string) (*wSdkClients
|
|||||||
// 接入点一览 https://api.aliyun.com/product/Alb
|
// 接入点一览 https://api.aliyun.com/product/Alb
|
||||||
var albEndpoint string
|
var albEndpoint string
|
||||||
switch region {
|
switch region {
|
||||||
case "cn-hangzhou-finance":
|
case "", "cn-hangzhou-finance":
|
||||||
albEndpoint = "alb.cn-hangzhou.aliyuncs.com"
|
albEndpoint = "alb.cn-hangzhou.aliyuncs.com"
|
||||||
default:
|
default:
|
||||||
albEndpoint = fmt.Sprintf("alb.%s.aliyuncs.com", region)
|
albEndpoint = fmt.Sprintf("alb.%s.aliyuncs.com", region)
|
||||||
@ -463,7 +465,7 @@ func createSdkClients(accessKeyId, accessKeySecret, region string) (*wSdkClients
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Uploader, error) {
|
func createSslUploader(accessKeyId, accessKeySecret, resourceGroupId, region string) (uploader.Uploader, error) {
|
||||||
casRegion := region
|
casRegion := region
|
||||||
if casRegion != "" {
|
if casRegion != "" {
|
||||||
// 阿里云 CAS 服务接入点是独立于 ALB 服务的
|
// 阿里云 CAS 服务接入点是独立于 ALB 服务的
|
||||||
@ -479,6 +481,7 @@ func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Up
|
|||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: accessKeyId,
|
AccessKeyId: accessKeyId,
|
||||||
AccessKeySecret: accessKeySecret,
|
AccessKeySecret: accessKeySecret,
|
||||||
|
ResourceGroupId: resourceGroupId,
|
||||||
Region: casRegion,
|
Region: casRegion,
|
||||||
})
|
})
|
||||||
return uploader, err
|
return uploader, err
|
||||||
|
@ -16,6 +16,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/aliyun-cas"
|
uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/aliyun-cas"
|
||||||
|
typeutil "github.com/usual2970/certimate/internal/pkg/utils/type"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeployerConfig struct {
|
type DeployerConfig struct {
|
||||||
@ -23,6 +24,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 服务类型。
|
// 服务类型。
|
||||||
@ -61,7 +64,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
return nil, fmt.Errorf("failed to create sdk clients: %w", err)
|
return nil, fmt.Errorf("failed to create sdk clients: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.ResourceGroupId, config.Region)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
}
|
}
|
||||||
@ -76,7 +79,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -149,10 +152,11 @@ func (d *DeployerProvider) deployToCloudNative(ctx context.Context, certPEM stri
|
|||||||
}
|
}
|
||||||
|
|
||||||
listDomainsReq := &aliapig.ListDomainsRequest{
|
listDomainsReq := &aliapig.ListDomainsRequest{
|
||||||
GatewayId: tea.String(d.config.GatewayId),
|
ResourceGroupId: typeutil.ToPtrOrZeroNil(d.config.ResourceGroupId),
|
||||||
NameLike: tea.String(d.config.Domain),
|
GatewayId: tea.String(d.config.GatewayId),
|
||||||
PageNumber: tea.Int32(listDomainsPageNumber),
|
NameLike: tea.String(d.config.Domain),
|
||||||
PageSize: tea.Int32(listDomainsPageSize),
|
PageNumber: tea.Int32(listDomainsPageNumber),
|
||||||
|
PageSize: tea.Int32(listDomainsPageSize),
|
||||||
}
|
}
|
||||||
listDomainsResp, err := d.sdkClients.CloudNativeAPIGateway.ListDomains(listDomainsReq)
|
listDomainsResp, err := d.sdkClients.CloudNativeAPIGateway.ListDomains(listDomainsReq)
|
||||||
d.logger.Debug("sdk request 'apig.ListDomains'", slog.Any("request", listDomainsReq), slog.Any("response", listDomainsResp))
|
d.logger.Debug("sdk request 'apig.ListDomains'", slog.Any("request", listDomainsReq), slog.Any("response", listDomainsResp))
|
||||||
@ -223,7 +227,7 @@ func (d *DeployerProvider) deployToCloudNative(ctx context.Context, certPEM stri
|
|||||||
|
|
||||||
func createSdkClients(accessKeyId, accessKeySecret, region string) (*wSdkClients, error) {
|
func createSdkClients(accessKeyId, accessKeySecret, region string) (*wSdkClients, error) {
|
||||||
// 接入点一览 https://api.aliyun.com/product/APIG
|
// 接入点一览 https://api.aliyun.com/product/APIG
|
||||||
cloudNativeAPIGEndpoint := fmt.Sprintf("apig.%s.aliyuncs.com", region)
|
cloudNativeAPIGEndpoint := strings.ReplaceAll(fmt.Sprintf("apig.%s.aliyuncs.com", region), "..", ".")
|
||||||
cloudNativeAPIGConfig := &aliopen.Config{
|
cloudNativeAPIGConfig := &aliopen.Config{
|
||||||
AccessKeyId: tea.String(accessKeyId),
|
AccessKeyId: tea.String(accessKeyId),
|
||||||
AccessKeySecret: tea.String(accessKeySecret),
|
AccessKeySecret: tea.String(accessKeySecret),
|
||||||
@ -235,7 +239,7 @@ func createSdkClients(accessKeyId, accessKeySecret, region string) (*wSdkClients
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 接入点一览 https://api.aliyun.com/product/CloudAPI
|
// 接入点一览 https://api.aliyun.com/product/CloudAPI
|
||||||
traditionalAPIGEndpoint := fmt.Sprintf("apigateway.%s.aliyuncs.com", region)
|
traditionalAPIGEndpoint := strings.ReplaceAll(fmt.Sprintf("apigateway.%s.aliyuncs.com", region), "..", ".")
|
||||||
traditionalAPIGConfig := &aliopen.Config{
|
traditionalAPIGConfig := &aliopen.Config{
|
||||||
AccessKeyId: tea.String(accessKeyId),
|
AccessKeyId: tea.String(accessKeyId),
|
||||||
AccessKeySecret: tea.String(accessKeySecret),
|
AccessKeySecret: tea.String(accessKeySecret),
|
||||||
@ -252,7 +256,7 @@ func createSdkClients(accessKeyId, accessKeySecret, region string) (*wSdkClients
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Uploader, error) {
|
func createSslUploader(accessKeyId, accessKeySecret, resourceGroupId, region string) (uploader.Uploader, error) {
|
||||||
casRegion := region
|
casRegion := region
|
||||||
if casRegion != "" {
|
if casRegion != "" {
|
||||||
// 阿里云 CAS 服务接入点是独立于 APIGateway 服务的
|
// 阿里云 CAS 服务接入点是独立于 APIGateway 服务的
|
||||||
@ -268,6 +272,7 @@ func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Up
|
|||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: accessKeyId,
|
AccessKeyId: accessKeyId,
|
||||||
AccessKeySecret: accessKeySecret,
|
AccessKeySecret: accessKeySecret,
|
||||||
|
ResourceGroupId: resourceGroupId,
|
||||||
Region: casRegion,
|
Region: casRegion,
|
||||||
})
|
})
|
||||||
return uploader, err
|
return uploader, err
|
||||||
|
@ -22,12 +22,14 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 阿里云云产品资源 ID 数组。
|
// 阿里云云产品资源 ID 数组。
|
||||||
ResourceIds []string `json:"resourceIds"`
|
ResourceIds []string `json:"resourceIds"`
|
||||||
// 阿里云云联系人 ID 数组。
|
// 阿里云云联系人 ID 数组。
|
||||||
// 零值时默认使用账号下第一个联系人。
|
// 零值时使用账号下第一个联系人。
|
||||||
ContactIds []string `json:"contactIds"`
|
ContactIds []string `json:"contactIds"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,11 +52,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.ResourceGroupId, config.Region)
|
||||||
AccessKeyId: config.AccessKeyId,
|
|
||||||
AccessKeySecret: config.AccessKeySecret,
|
|
||||||
Region: config.Region,
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
}
|
}
|
||||||
@ -69,7 +67,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -94,9 +92,10 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPEM string, privkeyPE
|
|||||||
if len(contactIds) == 0 {
|
if len(contactIds) == 0 {
|
||||||
// 获取联系人列表
|
// 获取联系人列表
|
||||||
// REF: https://help.aliyun.com/zh/ssl-certificate/developer-reference/api-cas-2020-04-07-listcontact
|
// REF: https://help.aliyun.com/zh/ssl-certificate/developer-reference/api-cas-2020-04-07-listcontact
|
||||||
listContactReq := &alicas.ListContactRequest{}
|
listContactReq := &alicas.ListContactRequest{
|
||||||
listContactReq.ShowSize = tea.Int32(1)
|
ShowSize: tea.Int32(1),
|
||||||
listContactReq.CurrentPage = tea.Int32(1)
|
CurrentPage: tea.Int32(1),
|
||||||
|
}
|
||||||
listContactResp, err := d.sdkClient.ListContact(listContactReq)
|
listContactResp, err := d.sdkClient.ListContact(listContactReq)
|
||||||
d.logger.Debug("sdk request 'cas.ListContact'", slog.Any("request", listContactReq), slog.Any("response", listContactResp))
|
d.logger.Debug("sdk request 'cas.ListContact'", slog.Any("request", listContactReq), slog.Any("response", listContactResp))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -157,14 +156,10 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPEM string, privkeyPE
|
|||||||
}
|
}
|
||||||
|
|
||||||
func createSdkClient(accessKeyId, accessKeySecret, region string) (*alicas.Client, error) {
|
func createSdkClient(accessKeyId, accessKeySecret, region string) (*alicas.Client, error) {
|
||||||
if region == "" {
|
|
||||||
region = "cn-hangzhou" // CAS 服务默认区域:华东一杭州
|
|
||||||
}
|
|
||||||
|
|
||||||
// 接入点一览 https://api.aliyun.com/product/cas
|
// 接入点一览 https://api.aliyun.com/product/cas
|
||||||
var endpoint string
|
var endpoint string
|
||||||
switch region {
|
switch region {
|
||||||
case "cn-hangzhou":
|
case "", "cn-hangzhou":
|
||||||
endpoint = "cas.aliyuncs.com"
|
endpoint = "cas.aliyuncs.com"
|
||||||
default:
|
default:
|
||||||
endpoint = fmt.Sprintf("cas.%s.aliyuncs.com", region)
|
endpoint = fmt.Sprintf("cas.%s.aliyuncs.com", region)
|
||||||
@ -183,3 +178,25 @@ func createSdkClient(accessKeyId, accessKeySecret, region string) (*alicas.Clien
|
|||||||
|
|
||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func createSslUploader(accessKeyId, accessKeySecret, resourceGroupId, region string) (uploader.Uploader, error) {
|
||||||
|
casRegion := region
|
||||||
|
if casRegion != "" {
|
||||||
|
// 阿里云 CAS 服务接入点是独立于其他服务的
|
||||||
|
// 国内版固定接入点:华东一杭州
|
||||||
|
// 国际版固定接入点:亚太东南一新加坡
|
||||||
|
if !strings.HasPrefix(casRegion, "cn-") {
|
||||||
|
casRegion = "ap-southeast-1"
|
||||||
|
} else {
|
||||||
|
casRegion = "cn-hangzhou"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
|
AccessKeyId: accessKeyId,
|
||||||
|
AccessKeySecret: accessKeySecret,
|
||||||
|
ResourceGroupId: resourceGroupId,
|
||||||
|
Region: casRegion,
|
||||||
|
})
|
||||||
|
return uploader, err
|
||||||
|
}
|
||||||
|
@ -15,6 +15,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
}
|
}
|
||||||
@ -35,6 +37,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: config.AccessKeyId,
|
AccessKeyId: config.AccessKeyId,
|
||||||
AccessKeySecret: config.AccessKeySecret,
|
AccessKeySecret: config.AccessKeySecret,
|
||||||
|
ResourceGroupId: config.ResourceGroupId,
|
||||||
Region: config.Region,
|
Region: config.Region,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -50,7 +53,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 加速域名(支持泛域名)。
|
// 加速域名(支持泛域名)。
|
||||||
Domain string `json:"domain"`
|
Domain string `json:"domain"`
|
||||||
}
|
}
|
||||||
@ -50,7 +52,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 部署资源类型。
|
// 部署资源类型。
|
||||||
@ -54,7 +56,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.ResourceGroupId, config.Region)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
}
|
}
|
||||||
@ -69,7 +71,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -283,7 +285,7 @@ func createSdkClient(accessKeyId, accessKeySecret, region string) (*alislb.Clien
|
|||||||
// 接入点一览 https://api.aliyun.com/product/Slb
|
// 接入点一览 https://api.aliyun.com/product/Slb
|
||||||
var endpoint string
|
var endpoint string
|
||||||
switch region {
|
switch region {
|
||||||
case
|
case "",
|
||||||
"cn-hangzhou",
|
"cn-hangzhou",
|
||||||
"cn-hangzhou-finance",
|
"cn-hangzhou-finance",
|
||||||
"cn-shanghai-finance-1",
|
"cn-shanghai-finance-1",
|
||||||
@ -307,10 +309,11 @@ func createSdkClient(accessKeyId, accessKeySecret, region string) (*alislb.Clien
|
|||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Uploader, error) {
|
func createSslUploader(accessKeyId, accessKeySecret, resourceGroupId, region string) (uploader.Uploader, error) {
|
||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: accessKeyId,
|
AccessKeyId: accessKeyId,
|
||||||
AccessKeySecret: accessKeySecret,
|
AccessKeySecret: accessKeySecret,
|
||||||
|
ResourceGroupId: resourceGroupId,
|
||||||
Region: region,
|
Region: region,
|
||||||
})
|
})
|
||||||
return uploader, err
|
return uploader, err
|
||||||
|
@ -19,6 +19,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 加速域名(支持泛域名)。
|
// 加速域名(支持泛域名)。
|
||||||
Domain string `json:"domain"`
|
Domain string `json:"domain"`
|
||||||
}
|
}
|
||||||
@ -50,7 +52,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 网站域名(支持泛域名)。
|
// 网站域名(支持泛域名)。
|
||||||
@ -47,7 +49,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.ResourceGroupId, config.Region)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
}
|
}
|
||||||
@ -62,7 +64,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -104,7 +106,7 @@ func createSdkClient(accessKeyId, accessKeySecret, region string) (*aliddos.Clie
|
|||||||
config := &aliopen.Config{
|
config := &aliopen.Config{
|
||||||
AccessKeyId: tea.String(accessKeyId),
|
AccessKeyId: tea.String(accessKeyId),
|
||||||
AccessKeySecret: tea.String(accessKeySecret),
|
AccessKeySecret: tea.String(accessKeySecret),
|
||||||
Endpoint: tea.String(fmt.Sprintf("ddoscoo.%s.aliyuncs.com", region)),
|
Endpoint: tea.String(strings.ReplaceAll(fmt.Sprintf("ddoscoo.%s.aliyuncs.com", region), "..", ".")),
|
||||||
}
|
}
|
||||||
|
|
||||||
client, err := aliddos.NewClient(config)
|
client, err := aliddos.NewClient(config)
|
||||||
@ -115,7 +117,7 @@ func createSdkClient(accessKeyId, accessKeySecret, region string) (*aliddos.Clie
|
|||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Uploader, error) {
|
func createSslUploader(accessKeyId, accessKeySecret, resourceGroupId, region string) (uploader.Uploader, error) {
|
||||||
casRegion := region
|
casRegion := region
|
||||||
if casRegion != "" {
|
if casRegion != "" {
|
||||||
// 阿里云 CAS 服务接入点是独立于 Anti-DDoS 服务的
|
// 阿里云 CAS 服务接入点是独立于 Anti-DDoS 服务的
|
||||||
@ -131,6 +133,7 @@ func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Up
|
|||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: accessKeyId,
|
AccessKeyId: accessKeyId,
|
||||||
AccessKeySecret: accessKeySecret,
|
AccessKeySecret: accessKeySecret,
|
||||||
|
ResourceGroupId: resourceGroupId,
|
||||||
Region: casRegion,
|
Region: casRegion,
|
||||||
})
|
})
|
||||||
return uploader, err
|
return uploader, err
|
||||||
|
@ -22,6 +22,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 阿里云 ESA 站点 ID。
|
// 阿里云 ESA 站点 ID。
|
||||||
@ -47,7 +49,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.ResourceGroupId, config.Region)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
}
|
}
|
||||||
@ -62,7 +64,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -105,7 +107,7 @@ func createSdkClient(accessKeyId, accessKeySecret, region string) (*aliesa.Clien
|
|||||||
config := &aliopen.Config{
|
config := &aliopen.Config{
|
||||||
AccessKeyId: tea.String(accessKeyId),
|
AccessKeyId: tea.String(accessKeyId),
|
||||||
AccessKeySecret: tea.String(accessKeySecret),
|
AccessKeySecret: tea.String(accessKeySecret),
|
||||||
Endpoint: tea.String(fmt.Sprintf("esa.%s.aliyuncs.com", region)),
|
Endpoint: tea.String(strings.ReplaceAll(fmt.Sprintf("esa.%s.aliyuncs.com", region), "..", ".")),
|
||||||
}
|
}
|
||||||
|
|
||||||
client, err := aliesa.NewClient(config)
|
client, err := aliesa.NewClient(config)
|
||||||
@ -116,7 +118,7 @@ func createSdkClient(accessKeyId, accessKeySecret, region string) (*aliesa.Clien
|
|||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Uploader, error) {
|
func createSslUploader(accessKeyId, accessKeySecret, resourceGroupId, region string) (uploader.Uploader, error) {
|
||||||
casRegion := region
|
casRegion := region
|
||||||
if casRegion != "" {
|
if casRegion != "" {
|
||||||
// 阿里云 CAS 服务接入点是独立于 ESA 服务的
|
// 阿里云 CAS 服务接入点是独立于 ESA 服务的
|
||||||
@ -132,6 +134,7 @@ func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Up
|
|||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: accessKeyId,
|
AccessKeyId: accessKeyId,
|
||||||
AccessKeySecret: accessKeySecret,
|
AccessKeySecret: accessKeySecret,
|
||||||
|
ResourceGroupId: resourceGroupId,
|
||||||
Region: casRegion,
|
Region: casRegion,
|
||||||
})
|
})
|
||||||
return uploader, err
|
return uploader, err
|
||||||
|
@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client"
|
aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client"
|
||||||
@ -19,6 +20,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 服务版本。
|
// 服务版本。
|
||||||
@ -60,7 +63,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -108,6 +111,9 @@ func (d *DeployerProvider) deployToFC3(ctx context.Context, certPEM string, priv
|
|||||||
TlsConfig: getCustomDomainResp.Body.TlsConfig,
|
TlsConfig: getCustomDomainResp.Body.TlsConfig,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
if tea.StringValue(updateCustomDomainReq.Body.Protocol) == "HTTP" {
|
||||||
|
updateCustomDomainReq.Body.Protocol = tea.String("HTTP,HTTPS")
|
||||||
|
}
|
||||||
updateCustomDomainResp, err := d.sdkClients.FC3.UpdateCustomDomain(tea.String(d.config.Domain), updateCustomDomainReq)
|
updateCustomDomainResp, err := d.sdkClients.FC3.UpdateCustomDomain(tea.String(d.config.Domain), updateCustomDomainReq)
|
||||||
d.logger.Debug("sdk request 'fc.UpdateCustomDomain'", slog.Any("request", updateCustomDomainReq), slog.Any("response", updateCustomDomainResp))
|
d.logger.Debug("sdk request 'fc.UpdateCustomDomain'", slog.Any("request", updateCustomDomainReq), slog.Any("response", updateCustomDomainResp))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -137,6 +143,9 @@ func (d *DeployerProvider) deployToFC2(ctx context.Context, certPEM string, priv
|
|||||||
Protocol: getCustomDomainResp.Body.Protocol,
|
Protocol: getCustomDomainResp.Body.Protocol,
|
||||||
TlsConfig: getCustomDomainResp.Body.TlsConfig,
|
TlsConfig: getCustomDomainResp.Body.TlsConfig,
|
||||||
}
|
}
|
||||||
|
if tea.StringValue(updateCustomDomainReq.Protocol) == "HTTP" {
|
||||||
|
updateCustomDomainReq.Protocol = tea.String("HTTP,HTTPS")
|
||||||
|
}
|
||||||
updateCustomDomainResp, err := d.sdkClients.FC2.UpdateCustomDomain(tea.String(d.config.Domain), updateCustomDomainReq)
|
updateCustomDomainResp, err := d.sdkClients.FC2.UpdateCustomDomain(tea.String(d.config.Domain), updateCustomDomainReq)
|
||||||
d.logger.Debug("sdk request 'fc.UpdateCustomDomain'", slog.Any("request", updateCustomDomainReq), slog.Any("response", updateCustomDomainResp))
|
d.logger.Debug("sdk request 'fc.UpdateCustomDomain'", slog.Any("request", updateCustomDomainReq), slog.Any("response", updateCustomDomainResp))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -150,6 +159,8 @@ func createSdkClients(accessKeyId, accessKeySecret, region string) (*wSdkClients
|
|||||||
// 接入点一览 https://api.aliyun.com/product/FC-Open
|
// 接入点一览 https://api.aliyun.com/product/FC-Open
|
||||||
var fc2Endpoint string
|
var fc2Endpoint string
|
||||||
switch region {
|
switch region {
|
||||||
|
case "":
|
||||||
|
fc2Endpoint = "fc.aliyuncs.com"
|
||||||
case "cn-hangzhou-finance":
|
case "cn-hangzhou-finance":
|
||||||
fc2Endpoint = fmt.Sprintf("%s.fc.aliyuncs.com", region)
|
fc2Endpoint = fmt.Sprintf("%s.fc.aliyuncs.com", region)
|
||||||
default:
|
default:
|
||||||
@ -167,7 +178,7 @@ func createSdkClients(accessKeyId, accessKeySecret, region string) (*wSdkClients
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 接入点一览 https://api.aliyun.com/product/FC-Open
|
// 接入点一览 https://api.aliyun.com/product/FC-Open
|
||||||
fc3Endpoint := fmt.Sprintf("fcv3.%s.aliyuncs.com", region)
|
fc3Endpoint := strings.ReplaceAll(fmt.Sprintf("fcv3.%s.aliyuncs.com", region), "..", ".")
|
||||||
fc3Config := &aliopen.Config{
|
fc3Config := &aliopen.Config{
|
||||||
AccessKeyId: tea.String(accessKeyId),
|
AccessKeyId: tea.String(accessKeyId),
|
||||||
AccessKeySecret: tea.String(accessKeySecret),
|
AccessKeySecret: tea.String(accessKeySecret),
|
||||||
|
@ -22,6 +22,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 部署资源类型。
|
// 部署资源类型。
|
||||||
ResourceType ResourceType `json:"resourceType"`
|
ResourceType ResourceType `json:"resourceType"`
|
||||||
// 全球加速实例 ID。
|
// 全球加速实例 ID。
|
||||||
@ -53,7 +55,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret)
|
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.ResourceGroupId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
}
|
}
|
||||||
@ -68,7 +70,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -312,10 +314,11 @@ func createSdkClient(accessKeyId, accessKeySecret string) (*aliga.Client, error)
|
|||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSslUploader(accessKeyId, accessKeySecret string) (uploader.Uploader, error) {
|
func createSslUploader(accessKeyId, accessKeySecret, resourceGroupId string) (uploader.Uploader, error) {
|
||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: accessKeyId,
|
AccessKeyId: accessKeyId,
|
||||||
AccessKeySecret: accessKeySecret,
|
AccessKeySecret: accessKeySecret,
|
||||||
|
ResourceGroupId: resourceGroupId,
|
||||||
Region: "cn-hangzhou",
|
Region: "cn-hangzhou",
|
||||||
})
|
})
|
||||||
return uploader, err
|
return uploader, err
|
||||||
|
@ -19,6 +19,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 直播流域名(支持泛域名)。
|
// 直播流域名(支持泛域名)。
|
||||||
@ -52,7 +54,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -86,7 +88,7 @@ func createSdkClient(accessKeyId, accessKeySecret, region string) (*alilive.Clie
|
|||||||
// 接入点一览 https://api.aliyun.com/product/live
|
// 接入点一览 https://api.aliyun.com/product/live
|
||||||
var endpoint string
|
var endpoint string
|
||||||
switch region {
|
switch region {
|
||||||
case
|
case "",
|
||||||
"cn-qingdao",
|
"cn-qingdao",
|
||||||
"cn-beijing",
|
"cn-beijing",
|
||||||
"cn-shanghai",
|
"cn-shanghai",
|
||||||
|
@ -21,6 +21,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 部署资源类型。
|
// 部署资源类型。
|
||||||
@ -52,7 +54,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.ResourceGroupId, config.Region)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
}
|
}
|
||||||
@ -67,7 +69,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -224,12 +226,7 @@ func (d *DeployerProvider) updateListenerCertificate(ctx context.Context, cloudL
|
|||||||
|
|
||||||
func createSdkClient(accessKeyId, accessKeySecret, region string) (*alinlb.Client, error) {
|
func createSdkClient(accessKeyId, accessKeySecret, region string) (*alinlb.Client, error) {
|
||||||
// 接入点一览 https://api.aliyun.com/product/Nlb
|
// 接入点一览 https://api.aliyun.com/product/Nlb
|
||||||
var endpoint string
|
endpoint := strings.ReplaceAll(fmt.Sprintf("nlb.%s.aliyuncs.com", region), "..", ".")
|
||||||
switch region {
|
|
||||||
default:
|
|
||||||
endpoint = fmt.Sprintf("nlb.%s.aliyuncs.com", region)
|
|
||||||
}
|
|
||||||
|
|
||||||
config := &aliopen.Config{
|
config := &aliopen.Config{
|
||||||
AccessKeyId: tea.String(accessKeyId),
|
AccessKeyId: tea.String(accessKeyId),
|
||||||
AccessKeySecret: tea.String(accessKeySecret),
|
AccessKeySecret: tea.String(accessKeySecret),
|
||||||
@ -244,7 +241,7 @@ func createSdkClient(accessKeyId, accessKeySecret, region string) (*alinlb.Clien
|
|||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Uploader, error) {
|
func createSslUploader(accessKeyId, accessKeySecret, resourceGroupId, region string) (uploader.Uploader, error) {
|
||||||
casRegion := region
|
casRegion := region
|
||||||
if casRegion != "" {
|
if casRegion != "" {
|
||||||
// 阿里云 CAS 服务接入点是独立于 NLB 服务的
|
// 阿里云 CAS 服务接入点是独立于 NLB 服务的
|
||||||
@ -260,6 +257,7 @@ func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Up
|
|||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: accessKeyId,
|
AccessKeyId: accessKeyId,
|
||||||
AccessKeySecret: accessKeySecret,
|
AccessKeySecret: accessKeySecret,
|
||||||
|
ResourceGroupId: resourceGroupId,
|
||||||
Region: casRegion,
|
Region: casRegion,
|
||||||
})
|
})
|
||||||
return uploader, err
|
return uploader, err
|
||||||
|
@ -16,6 +16,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 存储桶名。
|
// 存储桶名。
|
||||||
@ -51,7 +53,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client"
|
aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client"
|
||||||
@ -18,6 +19,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 点播加速域名(不支持泛域名)。
|
// 点播加速域名(不支持泛域名)。
|
||||||
@ -51,7 +54,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -80,8 +83,7 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPEM string, privkeyPE
|
|||||||
|
|
||||||
func createSdkClient(accessKeyId, accessKeySecret, region string) (*alivod.Client, error) {
|
func createSdkClient(accessKeyId, accessKeySecret, region string) (*alivod.Client, error) {
|
||||||
// 接入点一览 https://api.aliyun.com/product/vod
|
// 接入点一览 https://api.aliyun.com/product/vod
|
||||||
endpoint := fmt.Sprintf("vod.%s.aliyuncs.com", region)
|
endpoint := strings.ReplaceAll(fmt.Sprintf("vod.%s.aliyuncs.com", region), "..", ".")
|
||||||
|
|
||||||
config := &aliopen.Config{
|
config := &aliopen.Config{
|
||||||
AccessKeyId: tea.String(accessKeyId),
|
AccessKeyId: tea.String(accessKeyId),
|
||||||
AccessKeySecret: tea.String(accessKeySecret),
|
AccessKeySecret: tea.String(accessKeySecret),
|
||||||
|
@ -15,6 +15,7 @@ import (
|
|||||||
"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/aliyun-cas"
|
uploadersp "github.com/usual2970/certimate/internal/pkg/core/uploader/providers/aliyun-cas"
|
||||||
sliceutil "github.com/usual2970/certimate/internal/pkg/utils/slice"
|
sliceutil "github.com/usual2970/certimate/internal/pkg/utils/slice"
|
||||||
|
typeutil "github.com/usual2970/certimate/internal/pkg/utils/type"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeployerConfig struct {
|
type DeployerConfig struct {
|
||||||
@ -22,6 +23,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 阿里云 AccessKeySecret。
|
// 阿里云 AccessKeySecret。
|
||||||
AccessKeySecret string `json:"accessKeySecret"`
|
AccessKeySecret string `json:"accessKeySecret"`
|
||||||
|
// 阿里云资源组 ID。
|
||||||
|
ResourceGroupId string `json:"resourceGroupId,omitempty"`
|
||||||
// 阿里云地域。
|
// 阿里云地域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 服务版本。
|
// 服务版本。
|
||||||
@ -51,7 +54,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
return nil, fmt.Errorf("failed to create sdk client: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.Region)
|
uploader, err := createSslUploader(config.AccessKeyId, config.AccessKeySecret, config.ResourceGroupId, config.Region)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
}
|
}
|
||||||
@ -66,7 +69,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -107,8 +110,9 @@ func (d *DeployerProvider) deployToWAF3(ctx context.Context, certPEM string, pri
|
|||||||
// 查询默认 SSL/TLS 设置
|
// 查询默认 SSL/TLS 设置
|
||||||
// REF: https://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-describedefaulthttps
|
// REF: https://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-describedefaulthttps
|
||||||
describeDefaultHttpsReq := &aliwaf.DescribeDefaultHttpsRequest{
|
describeDefaultHttpsReq := &aliwaf.DescribeDefaultHttpsRequest{
|
||||||
InstanceId: tea.String(d.config.InstanceId),
|
ResourceManagerResourceGroupId: typeutil.ToPtrOrZeroNil(d.config.ResourceGroupId),
|
||||||
RegionId: tea.String(d.config.Region),
|
InstanceId: tea.String(d.config.InstanceId),
|
||||||
|
RegionId: tea.String(d.config.Region),
|
||||||
}
|
}
|
||||||
describeDefaultHttpsResp, err := d.sdkClient.DescribeDefaultHttps(describeDefaultHttpsReq)
|
describeDefaultHttpsResp, err := d.sdkClient.DescribeDefaultHttps(describeDefaultHttpsReq)
|
||||||
d.logger.Debug("sdk request 'waf.DescribeDefaultHttps'", slog.Any("request", describeDefaultHttpsReq), slog.Any("response", describeDefaultHttpsResp))
|
d.logger.Debug("sdk request 'waf.DescribeDefaultHttps'", slog.Any("request", describeDefaultHttpsReq), slog.Any("response", describeDefaultHttpsResp))
|
||||||
@ -119,11 +123,12 @@ func (d *DeployerProvider) deployToWAF3(ctx context.Context, certPEM string, pri
|
|||||||
// 修改默认 SSL/TLS 设置
|
// 修改默认 SSL/TLS 设置
|
||||||
// REF: https://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-modifydefaulthttps
|
// REF: https://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-modifydefaulthttps
|
||||||
modifyDefaultHttpsReq := &aliwaf.ModifyDefaultHttpsRequest{
|
modifyDefaultHttpsReq := &aliwaf.ModifyDefaultHttpsRequest{
|
||||||
InstanceId: tea.String(d.config.InstanceId),
|
ResourceManagerResourceGroupId: typeutil.ToPtrOrZeroNil(d.config.ResourceGroupId),
|
||||||
RegionId: tea.String(d.config.Region),
|
InstanceId: tea.String(d.config.InstanceId),
|
||||||
CertId: tea.String(upres.CertId),
|
RegionId: tea.String(d.config.Region),
|
||||||
TLSVersion: tea.String("tlsv1"),
|
CertId: tea.String(upres.CertId),
|
||||||
EnableTLSv3: tea.Bool(false),
|
TLSVersion: tea.String("tlsv1"),
|
||||||
|
EnableTLSv3: tea.Bool(false),
|
||||||
}
|
}
|
||||||
if describeDefaultHttpsResp.Body != nil && describeDefaultHttpsResp.Body.DefaultHttps != nil {
|
if describeDefaultHttpsResp.Body != nil && describeDefaultHttpsResp.Body.DefaultHttps != nil {
|
||||||
modifyDefaultHttpsReq.TLSVersion = describeDefaultHttpsResp.Body.DefaultHttps.TLSVersion
|
modifyDefaultHttpsReq.TLSVersion = describeDefaultHttpsResp.Body.DefaultHttps.TLSVersion
|
||||||
@ -172,10 +177,11 @@ func (d *DeployerProvider) deployToWAF3(ctx context.Context, certPEM string, pri
|
|||||||
|
|
||||||
func createSdkClient(accessKeyId, accessKeySecret, region string) (*aliwaf.Client, error) {
|
func createSdkClient(accessKeyId, accessKeySecret, region string) (*aliwaf.Client, error) {
|
||||||
// 接入点一览:https://api.aliyun.com/product/waf-openapi
|
// 接入点一览:https://api.aliyun.com/product/waf-openapi
|
||||||
|
endpoint := strings.ReplaceAll(fmt.Sprintf("wafopenapi.%s.aliyuncs.com", region), "..", ".")
|
||||||
config := &aliopen.Config{
|
config := &aliopen.Config{
|
||||||
AccessKeyId: tea.String(accessKeyId),
|
AccessKeyId: tea.String(accessKeyId),
|
||||||
AccessKeySecret: tea.String(accessKeySecret),
|
AccessKeySecret: tea.String(accessKeySecret),
|
||||||
Endpoint: tea.String(fmt.Sprintf("wafopenapi.%s.aliyuncs.com", region)),
|
Endpoint: tea.String(endpoint),
|
||||||
}
|
}
|
||||||
|
|
||||||
client, err := aliwaf.NewClient(config)
|
client, err := aliwaf.NewClient(config)
|
||||||
@ -186,7 +192,7 @@ func createSdkClient(accessKeyId, accessKeySecret, region string) (*aliwaf.Clien
|
|||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Uploader, error) {
|
func createSslUploader(accessKeyId, accessKeySecret, resourceGroupId, region string) (uploader.Uploader, error) {
|
||||||
casRegion := region
|
casRegion := region
|
||||||
if casRegion != "" {
|
if casRegion != "" {
|
||||||
// 阿里云 CAS 服务接入点是独立于 WAF 服务的
|
// 阿里云 CAS 服务接入点是独立于 WAF 服务的
|
||||||
@ -202,6 +208,7 @@ func createSslUploader(accessKeyId, accessKeySecret, region string) (uploader.Up
|
|||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: accessKeyId,
|
AccessKeyId: accessKeyId,
|
||||||
AccessKeySecret: accessKeySecret,
|
AccessKeySecret: accessKeySecret,
|
||||||
|
ResourceGroupId: resourceGroupId,
|
||||||
Region: casRegion,
|
Region: casRegion,
|
||||||
})
|
})
|
||||||
return uploader, err
|
return uploader, err
|
||||||
|
@ -66,7 +66,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ type DeployerConfig struct {
|
|||||||
// 网站名称。
|
// 网站名称。
|
||||||
SiteName string `json:"siteName"`
|
SiteName string `json:"siteName"`
|
||||||
// 网站 SSL 端口。
|
// 网站 SSL 端口。
|
||||||
// 零值时默认为 443。
|
// 零值时默认值 443。
|
||||||
SitePort int32 `json:"sitePort,omitempty"`
|
SitePort int32 `json:"sitePort,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 华为云 SecretAccessKey。
|
// 华为云 SecretAccessKey。
|
||||||
SecretAccessKey string `json:"secretAccessKey"`
|
SecretAccessKey string `json:"secretAccessKey"`
|
||||||
|
// 华为云企业项目 ID。
|
||||||
|
EnterpriseProjectId string `json:"enterpriseProjectId,omitempty"`
|
||||||
// 华为云区域。
|
// 华为云区域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 加速域名(不支持泛域名)。
|
// 加速域名(不支持泛域名)。
|
||||||
@ -51,8 +53,9 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: config.AccessKeyId,
|
AccessKeyId: config.AccessKeyId,
|
||||||
SecretAccessKey: config.SecretAccessKey,
|
SecretAccessKey: config.SecretAccessKey,
|
||||||
|
EnterpriseProjectId: config.EnterpriseProjectId,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
@ -68,7 +71,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -88,7 +91,8 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPEM string, privkeyPE
|
|||||||
// 查询加速域名配置
|
// 查询加速域名配置
|
||||||
// REF: https://support.huaweicloud.com/api-cdn/ShowDomainFullConfig.html
|
// REF: https://support.huaweicloud.com/api-cdn/ShowDomainFullConfig.html
|
||||||
showDomainFullConfigReq := &hccdnmodel.ShowDomainFullConfigRequest{
|
showDomainFullConfigReq := &hccdnmodel.ShowDomainFullConfigRequest{
|
||||||
DomainName: d.config.Domain,
|
EnterpriseProjectId: typeutil.ToPtrOrZeroNil(d.config.EnterpriseProjectId),
|
||||||
|
DomainName: d.config.Domain,
|
||||||
}
|
}
|
||||||
showDomainFullConfigResp, err := d.sdkClient.ShowDomainFullConfig(showDomainFullConfigReq)
|
showDomainFullConfigResp, err := d.sdkClient.ShowDomainFullConfig(showDomainFullConfigReq)
|
||||||
d.logger.Debug("sdk request 'cdn.ShowDomainFullConfig'", slog.Any("request", showDomainFullConfigReq), slog.Any("response", showDomainFullConfigResp))
|
d.logger.Debug("sdk request 'cdn.ShowDomainFullConfig'", slog.Any("request", showDomainFullConfigReq), slog.Any("response", showDomainFullConfigResp))
|
||||||
@ -107,6 +111,7 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPEM string, privkeyPE
|
|||||||
updateDomainMultiCertificatesReqBodyContent.CertName = typeutil.ToPtr(upres.CertName)
|
updateDomainMultiCertificatesReqBodyContent.CertName = typeutil.ToPtr(upres.CertName)
|
||||||
updateDomainMultiCertificatesReqBodyContent = assign(updateDomainMultiCertificatesReqBodyContent, showDomainFullConfigResp.Configs)
|
updateDomainMultiCertificatesReqBodyContent = assign(updateDomainMultiCertificatesReqBodyContent, showDomainFullConfigResp.Configs)
|
||||||
updateDomainMultiCertificatesReq := &hccdnmodel.UpdateDomainMultiCertificatesRequest{
|
updateDomainMultiCertificatesReq := &hccdnmodel.UpdateDomainMultiCertificatesRequest{
|
||||||
|
EnterpriseProjectId: typeutil.ToPtrOrZeroNil(d.config.EnterpriseProjectId),
|
||||||
Body: &hccdnmodel.UpdateDomainMultiCertificatesRequestBody{
|
Body: &hccdnmodel.UpdateDomainMultiCertificatesRequestBody{
|
||||||
Https: updateDomainMultiCertificatesReqBodyContent,
|
Https: updateDomainMultiCertificatesReqBodyContent,
|
||||||
},
|
},
|
||||||
|
@ -27,6 +27,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 华为云 SecretAccessKey。
|
// 华为云 SecretAccessKey。
|
||||||
SecretAccessKey string `json:"secretAccessKey"`
|
SecretAccessKey string `json:"secretAccessKey"`
|
||||||
|
// 华为云企业项目 ID。
|
||||||
|
EnterpriseProjectId string `json:"enterpriseProjectId,omitempty"`
|
||||||
// 华为云区域。
|
// 华为云区域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 部署资源类型。
|
// 部署资源类型。
|
||||||
@ -62,9 +64,10 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: config.AccessKeyId,
|
AccessKeyId: config.AccessKeyId,
|
||||||
SecretAccessKey: config.SecretAccessKey,
|
SecretAccessKey: config.SecretAccessKey,
|
||||||
Region: config.Region,
|
EnterpriseProjectId: config.EnterpriseProjectId,
|
||||||
|
Region: config.Region,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
@ -80,7 +83,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -172,6 +175,9 @@ func (d *DeployerProvider) deployToLoadbalancer(ctx context.Context, certPEM str
|
|||||||
Protocol: &[]string{"HTTPS", "TERMINATED_HTTPS"},
|
Protocol: &[]string{"HTTPS", "TERMINATED_HTTPS"},
|
||||||
LoadbalancerId: &[]string{showLoadBalancerResp.Loadbalancer.Id},
|
LoadbalancerId: &[]string{showLoadBalancerResp.Loadbalancer.Id},
|
||||||
}
|
}
|
||||||
|
if d.config.EnterpriseProjectId != "" {
|
||||||
|
listListenersReq.EnterpriseProjectId = typeutil.ToPtr([]string{d.config.EnterpriseProjectId})
|
||||||
|
}
|
||||||
listListenersResp, err := d.sdkClient.ListListeners(listListenersReq)
|
listListenersResp, err := d.sdkClient.ListListeners(listListenersReq)
|
||||||
d.logger.Debug("sdk request 'elb.ListListeners'", slog.Any("request", listListenersReq), slog.Any("response", listListenersResp))
|
d.logger.Debug("sdk request 'elb.ListListeners'", slog.Any("request", listListenersReq), slog.Any("response", listListenersResp))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -15,6 +15,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 华为云 SecretAccessKey。
|
// 华为云 SecretAccessKey。
|
||||||
SecretAccessKey string `json:"secretAccessKey"`
|
SecretAccessKey string `json:"secretAccessKey"`
|
||||||
|
// 华为云企业项目 ID。
|
||||||
|
EnterpriseProjectId string `json:"enterpriseProjectId,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type DeployerProvider struct {
|
type DeployerProvider struct {
|
||||||
@ -31,8 +33,9 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: config.AccessKeyId,
|
AccessKeyId: config.AccessKeyId,
|
||||||
SecretAccessKey: config.SecretAccessKey,
|
SecretAccessKey: config.SecretAccessKey,
|
||||||
|
EnterpriseProjectId: config.EnterpriseProjectId,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
@ -47,7 +50,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,8 @@ type DeployerConfig struct {
|
|||||||
AccessKeyId string `json:"accessKeyId"`
|
AccessKeyId string `json:"accessKeyId"`
|
||||||
// 华为云 SecretAccessKey。
|
// 华为云 SecretAccessKey。
|
||||||
SecretAccessKey string `json:"secretAccessKey"`
|
SecretAccessKey string `json:"secretAccessKey"`
|
||||||
|
// 华为云企业项目 ID。
|
||||||
|
EnterpriseProjectId string `json:"enterpriseProjectId,omitempty"`
|
||||||
// 华为云区域。
|
// 华为云区域。
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
// 部署资源类型。
|
// 部署资源类型。
|
||||||
@ -59,9 +61,10 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
uploader, err := uploadersp.NewUploader(&uploadersp.UploaderConfig{
|
||||||
AccessKeyId: config.AccessKeyId,
|
AccessKeyId: config.AccessKeyId,
|
||||||
SecretAccessKey: config.SecretAccessKey,
|
SecretAccessKey: config.SecretAccessKey,
|
||||||
Region: config.Region,
|
EnterpriseProjectId: config.EnterpriseProjectId,
|
||||||
|
Region: config.Region,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
return nil, fmt.Errorf("failed to create ssl uploader: %w", err)
|
||||||
@ -77,7 +80,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
@ -126,7 +129,8 @@ func (d *DeployerProvider) deployToCertificate(ctx context.Context, certPEM stri
|
|||||||
// 查询证书
|
// 查询证书
|
||||||
// REF: https://support.huaweicloud.com/api-waf/ShowCertificate.html
|
// REF: https://support.huaweicloud.com/api-waf/ShowCertificate.html
|
||||||
showCertificateReq := &hcwafmodel.ShowCertificateRequest{
|
showCertificateReq := &hcwafmodel.ShowCertificateRequest{
|
||||||
CertificateId: d.config.CertificateId,
|
EnterpriseProjectId: typeutil.ToPtrOrZeroNil(d.config.EnterpriseProjectId),
|
||||||
|
CertificateId: d.config.CertificateId,
|
||||||
}
|
}
|
||||||
showCertificateResp, err := d.sdkClient.ShowCertificate(showCertificateReq)
|
showCertificateResp, err := d.sdkClient.ShowCertificate(showCertificateReq)
|
||||||
d.logger.Debug("sdk request 'waf.ShowCertificate'", slog.Any("request", showCertificateReq), slog.Any("response", showCertificateResp))
|
d.logger.Debug("sdk request 'waf.ShowCertificate'", slog.Any("request", showCertificateReq), slog.Any("response", showCertificateResp))
|
||||||
@ -137,7 +141,8 @@ func (d *DeployerProvider) deployToCertificate(ctx context.Context, certPEM stri
|
|||||||
// 更新证书
|
// 更新证书
|
||||||
// REF: https://support.huaweicloud.com/api-waf/UpdateCertificate.html
|
// REF: https://support.huaweicloud.com/api-waf/UpdateCertificate.html
|
||||||
updateCertificateReq := &hcwafmodel.UpdateCertificateRequest{
|
updateCertificateReq := &hcwafmodel.UpdateCertificateRequest{
|
||||||
CertificateId: d.config.CertificateId,
|
EnterpriseProjectId: typeutil.ToPtrOrZeroNil(d.config.EnterpriseProjectId),
|
||||||
|
CertificateId: d.config.CertificateId,
|
||||||
Body: &hcwafmodel.UpdateCertificateRequestBody{
|
Body: &hcwafmodel.UpdateCertificateRequestBody{
|
||||||
Name: *showCertificateResp.Name,
|
Name: *showCertificateResp.Name,
|
||||||
Content: typeutil.ToPtr(certPEM),
|
Content: typeutil.ToPtr(certPEM),
|
||||||
@ -179,9 +184,10 @@ func (d *DeployerProvider) deployToCloudServer(ctx context.Context, certPEM stri
|
|||||||
}
|
}
|
||||||
|
|
||||||
listHostReq := &hcwafmodel.ListHostRequest{
|
listHostReq := &hcwafmodel.ListHostRequest{
|
||||||
Hostname: typeutil.ToPtr(strings.TrimPrefix(d.config.Domain, "*")),
|
EnterpriseProjectId: typeutil.ToPtrOrZeroNil(d.config.EnterpriseProjectId),
|
||||||
Page: typeutil.ToPtr(listHostPage),
|
Hostname: typeutil.ToPtr(strings.TrimPrefix(d.config.Domain, "*")),
|
||||||
Pagesize: typeutil.ToPtr(listHostPageSize),
|
Page: typeutil.ToPtr(listHostPage),
|
||||||
|
Pagesize: typeutil.ToPtr(listHostPageSize),
|
||||||
}
|
}
|
||||||
listHostResp, err := d.sdkClient.ListHost(listHostReq)
|
listHostResp, err := d.sdkClient.ListHost(listHostReq)
|
||||||
d.logger.Debug("sdk request 'waf.ListHost'", slog.Any("request", listHostReq), slog.Any("response", listHostResp))
|
d.logger.Debug("sdk request 'waf.ListHost'", slog.Any("request", listHostReq), slog.Any("response", listHostResp))
|
||||||
@ -211,7 +217,8 @@ func (d *DeployerProvider) deployToCloudServer(ctx context.Context, certPEM stri
|
|||||||
// 更新云模式防护域名的配置
|
// 更新云模式防护域名的配置
|
||||||
// REF: https://support.huaweicloud.com/api-waf/UpdateHost.html
|
// REF: https://support.huaweicloud.com/api-waf/UpdateHost.html
|
||||||
updateHostReq := &hcwafmodel.UpdateHostRequest{
|
updateHostReq := &hcwafmodel.UpdateHostRequest{
|
||||||
InstanceId: hostId,
|
EnterpriseProjectId: typeutil.ToPtrOrZeroNil(d.config.EnterpriseProjectId),
|
||||||
|
InstanceId: hostId,
|
||||||
Body: &hcwafmodel.UpdateHostRequestBody{
|
Body: &hcwafmodel.UpdateHostRequestBody{
|
||||||
Certificateid: typeutil.ToPtr(upres.CertId),
|
Certificateid: typeutil.ToPtr(upres.CertId),
|
||||||
Certificatename: typeutil.ToPtr(upres.CertName),
|
Certificatename: typeutil.ToPtr(upres.CertName),
|
||||||
@ -252,9 +259,10 @@ func (d *DeployerProvider) deployToPremiumHost(ctx context.Context, certPEM stri
|
|||||||
}
|
}
|
||||||
|
|
||||||
listPremiumHostReq := &hcwafmodel.ListPremiumHostRequest{
|
listPremiumHostReq := &hcwafmodel.ListPremiumHostRequest{
|
||||||
Hostname: typeutil.ToPtr(strings.TrimPrefix(d.config.Domain, "*")),
|
EnterpriseProjectId: typeutil.ToPtrOrZeroNil(d.config.EnterpriseProjectId),
|
||||||
Page: typeutil.ToPtr(fmt.Sprintf("%d", listPremiumHostPage)),
|
Hostname: typeutil.ToPtr(strings.TrimPrefix(d.config.Domain, "*")),
|
||||||
Pagesize: typeutil.ToPtr(fmt.Sprintf("%d", listPremiumHostPageSize)),
|
Page: typeutil.ToPtr(fmt.Sprintf("%d", listPremiumHostPage)),
|
||||||
|
Pagesize: typeutil.ToPtr(fmt.Sprintf("%d", listPremiumHostPageSize)),
|
||||||
}
|
}
|
||||||
listPremiumHostResp, err := d.sdkClient.ListPremiumHost(listPremiumHostReq)
|
listPremiumHostResp, err := d.sdkClient.ListPremiumHost(listPremiumHostReq)
|
||||||
d.logger.Debug("sdk request 'waf.ListPremiumHost'", slog.Any("request", listPremiumHostReq), slog.Any("response", listPremiumHostResp))
|
d.logger.Debug("sdk request 'waf.ListPremiumHost'", slog.Any("request", listPremiumHostReq), slog.Any("response", listPremiumHostResp))
|
||||||
@ -284,7 +292,8 @@ func (d *DeployerProvider) deployToPremiumHost(ctx context.Context, certPEM stri
|
|||||||
// 修改独享模式域名配置
|
// 修改独享模式域名配置
|
||||||
// REF: https://support.huaweicloud.com/api-waf/UpdatePremiumHost.html
|
// REF: https://support.huaweicloud.com/api-waf/UpdatePremiumHost.html
|
||||||
updatePremiumHostReq := &hcwafmodel.UpdatePremiumHostRequest{
|
updatePremiumHostReq := &hcwafmodel.UpdatePremiumHostRequest{
|
||||||
HostId: hostId,
|
EnterpriseProjectId: typeutil.ToPtrOrZeroNil(d.config.EnterpriseProjectId),
|
||||||
|
HostId: hostId,
|
||||||
Body: &hcwafmodel.UpdatePremiumHostRequestBody{
|
Body: &hcwafmodel.UpdatePremiumHostRequestBody{
|
||||||
Certificateid: typeutil.ToPtr(upres.CertId),
|
Certificateid: typeutil.ToPtr(upres.CertId),
|
||||||
Certificatename: typeutil.ToPtr(upres.CertName),
|
Certificatename: typeutil.ToPtr(upres.CertName),
|
||||||
|
@ -76,7 +76,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ import (
|
|||||||
|
|
||||||
type DeployerConfig struct {
|
type DeployerConfig struct {
|
||||||
// Shell 执行环境。
|
// Shell 执行环境。
|
||||||
// 零值时默认根据操作系统决定。
|
// 零值时根据操作系统决定。
|
||||||
ShellEnv ShellEnvType `json:"shellEnv,omitempty"`
|
ShellEnv ShellEnvType `json:"shellEnv,omitempty"`
|
||||||
// 前置命令。
|
// 前置命令。
|
||||||
PreCommand string `json:"preCommand,omitempty"`
|
PreCommand string `json:"preCommand,omitempty"`
|
||||||
@ -67,7 +67,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -19,10 +19,10 @@ import (
|
|||||||
|
|
||||||
type JumpServerConfig struct {
|
type JumpServerConfig struct {
|
||||||
// SSH 主机。
|
// SSH 主机。
|
||||||
// 零值时默认为 "localhost"。
|
// 零值时默认值 "localhost"。
|
||||||
SshHost string `json:"sshHost,omitempty"`
|
SshHost string `json:"sshHost,omitempty"`
|
||||||
// SSH 端口。
|
// SSH 端口。
|
||||||
// 零值时默认为 22。
|
// 零值时默认值 22。
|
||||||
SshPort int32 `json:"sshPort,omitempty"`
|
SshPort int32 `json:"sshPort,omitempty"`
|
||||||
// SSH 登录用户名。
|
// SSH 登录用户名。
|
||||||
SshUsername string `json:"sshUsername,omitempty"`
|
SshUsername string `json:"sshUsername,omitempty"`
|
||||||
@ -36,10 +36,10 @@ type JumpServerConfig struct {
|
|||||||
|
|
||||||
type DeployerConfig struct {
|
type DeployerConfig struct {
|
||||||
// SSH 主机。
|
// SSH 主机。
|
||||||
// 零值时默认为 "localhost"。
|
// 零值时默认值 "localhost"。
|
||||||
SshHost string `json:"sshHost,omitempty"`
|
SshHost string `json:"sshHost,omitempty"`
|
||||||
// SSH 端口。
|
// SSH 端口。
|
||||||
// 零值时默认为 22。
|
// 零值时默认值 22。
|
||||||
SshPort int32 `json:"sshPort,omitempty"`
|
SshPort int32 `json:"sshPort,omitempty"`
|
||||||
// SSH 登录用户名。
|
// SSH 登录用户名。
|
||||||
SshUsername string `json:"sshUsername,omitempty"`
|
SshUsername string `json:"sshUsername,omitempty"`
|
||||||
@ -103,7 +103,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ type DeployerConfig struct {
|
|||||||
// Webhook 回调数据(application/json 或 application/x-www-form-urlencoded 格式)。
|
// Webhook 回调数据(application/json 或 application/x-www-form-urlencoded 格式)。
|
||||||
WebhookData string `json:"webhookData,omitempty"`
|
WebhookData string `json:"webhookData,omitempty"`
|
||||||
// 请求谓词。
|
// 请求谓词。
|
||||||
// 零值时默认为 "POST"。
|
// 零值时默认值 "POST"。
|
||||||
Method string `json:"method,omitempty"`
|
Method string `json:"method,omitempty"`
|
||||||
// 请求标头。
|
// 请求标头。
|
||||||
Headers map[string]string `json:"headers,omitempty"`
|
Headers map[string]string `json:"headers,omitempty"`
|
||||||
@ -61,7 +61,7 @@ func NewDeployer(config *DeployerConfig) (*DeployerProvider, error) {
|
|||||||
|
|
||||||
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
func (d *DeployerProvider) WithLogger(logger *slog.Logger) deployer.Deployer {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
d.logger = slog.Default()
|
d.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
d.logger = logger
|
d.logger = logger
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ type Notifier interface {
|
|||||||
// 出参:
|
// 出参:
|
||||||
// - res:发送结果。
|
// - res:发送结果。
|
||||||
// - err: 错误。
|
// - err: 错误。
|
||||||
Notify(ctx context.Context, subject string, message string) (res *NotifyResult, err error)
|
Notify(ctx context.Context, subject string, message string) (_res *NotifyResult, _err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 表示通知发送结果的数据结构。
|
// 表示通知发送结果的数据结构。
|
||||||
|
@ -12,7 +12,7 @@ import (
|
|||||||
|
|
||||||
type NotifierConfig struct {
|
type NotifierConfig struct {
|
||||||
// Bark 服务地址。
|
// Bark 服务地址。
|
||||||
// 零值时默认使用官方服务器。
|
// 零值时使用官方服务器。
|
||||||
ServerUrl string `json:"serverUrl"`
|
ServerUrl string `json:"serverUrl"`
|
||||||
// Bark 设备密钥。
|
// Bark 设备密钥。
|
||||||
DeviceKey string `json:"deviceKey"`
|
DeviceKey string `json:"deviceKey"`
|
||||||
@ -42,14 +42,14 @@ func NewNotifier(config *NotifierConfig) (*NotifierProvider, error) {
|
|||||||
|
|
||||||
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
n.logger = slog.Default()
|
n.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
n.logger = logger
|
n.logger = logger
|
||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (res *notifier.NotifyResult, err error) {
|
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (*notifier.NotifyResult, error) {
|
||||||
const defaultServerURL = "https://api.day.app/"
|
const defaultServerURL = "https://api.day.app/"
|
||||||
serverUrl := defaultServerURL
|
serverUrl := defaultServerURL
|
||||||
if n.config.ServerUrl != "" {
|
if n.config.ServerUrl != "" {
|
||||||
|
@ -38,14 +38,14 @@ func NewNotifier(config *NotifierConfig) (*NotifierProvider, error) {
|
|||||||
|
|
||||||
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
n.logger = slog.Default()
|
n.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
n.logger = logger
|
n.logger = logger
|
||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (res *notifier.NotifyResult, err error) {
|
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (*notifier.NotifyResult, error) {
|
||||||
webhookUrl, err := url.Parse(n.config.WebhookUrl)
|
webhookUrl, err := url.Parse(n.config.WebhookUrl)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("dingtalk api error: invalid webhook url: %w", err)
|
return nil, fmt.Errorf("dingtalk api error: invalid webhook url: %w", err)
|
||||||
|
@ -41,19 +41,20 @@ func NewNotifier(config *NotifierConfig) (*NotifierProvider, error) {
|
|||||||
|
|
||||||
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
n.logger = slog.Default()
|
n.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
n.logger = logger
|
n.logger = logger
|
||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (res *notifier.NotifyResult, err error) {
|
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (*notifier.NotifyResult, error) {
|
||||||
// REF: https://discord.com/developers/docs/resources/message#create-message
|
// REF: https://discord.com/developers/docs/resources/message#create-message
|
||||||
req := n.httpClient.R().
|
req := n.httpClient.R().
|
||||||
SetContext(ctx).
|
SetContext(ctx).
|
||||||
SetHeader("Content-Type", "application/json").
|
|
||||||
SetHeader("Authorization", "Bot "+n.config.BotToken).
|
SetHeader("Authorization", "Bot "+n.config.BotToken).
|
||||||
|
SetHeader("Content-Type", "application/json").
|
||||||
|
SetHeader("User-Agent", "certimate").
|
||||||
SetBody(map[string]any{
|
SetBody(map[string]any{
|
||||||
"content": subject + "\n" + message,
|
"content": subject + "\n" + message,
|
||||||
})
|
})
|
||||||
|
@ -50,14 +50,14 @@ func NewNotifier(config *NotifierConfig) (*NotifierProvider, error) {
|
|||||||
|
|
||||||
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
n.logger = slog.Default()
|
n.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
n.logger = logger
|
n.logger = logger
|
||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (res *notifier.NotifyResult, err error) {
|
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (*notifier.NotifyResult, error) {
|
||||||
var smtpAuth smtp.Auth
|
var smtpAuth smtp.Auth
|
||||||
if n.config.Username != "" || n.config.Password != "" {
|
if n.config.Username != "" || n.config.Password != "" {
|
||||||
smtpAuth = smtp.PlainAuth("", n.config.Username, n.config.Password, n.config.SmtpHost)
|
smtpAuth = smtp.PlainAuth("", n.config.Username, n.config.Password, n.config.SmtpHost)
|
||||||
@ -76,10 +76,11 @@ func (n *NotifierProvider) Notify(ctx context.Context, subject string, message s
|
|||||||
|
|
||||||
var yak *mailyak.MailYak
|
var yak *mailyak.MailYak
|
||||||
if n.config.SmtpTls {
|
if n.config.SmtpTls {
|
||||||
yak, err = mailyak.NewWithTLS(smtpAddr, smtpAuth, newTlsConfig())
|
yakWithTls, err := mailyak.NewWithTLS(smtpAddr, smtpAuth, newTlsConfig())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
yak = yakWithTls
|
||||||
} else {
|
} else {
|
||||||
yak = mailyak.New(smtpAddr, smtpAuth)
|
yak = mailyak.New(smtpAddr, smtpAuth)
|
||||||
}
|
}
|
||||||
@ -89,8 +90,7 @@ func (n *NotifierProvider) Notify(ctx context.Context, subject string, message s
|
|||||||
yak.Subject(subject)
|
yak.Subject(subject)
|
||||||
yak.Plain().Set(message)
|
yak.Plain().Set(message)
|
||||||
|
|
||||||
err = yak.Send()
|
if err := yak.Send(); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,21 +44,22 @@ func NewNotifier(config *NotifierConfig) (*NotifierProvider, error) {
|
|||||||
|
|
||||||
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
n.logger = slog.Default()
|
n.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
n.logger = logger
|
n.logger = logger
|
||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (res *notifier.NotifyResult, err error) {
|
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (*notifier.NotifyResult, error) {
|
||||||
serverUrl := strings.TrimRight(n.config.ServerUrl, "/")
|
serverUrl := strings.TrimRight(n.config.ServerUrl, "/")
|
||||||
|
|
||||||
// REF: https://gotify.net/api-docs#/message/createMessage
|
// REF: https://gotify.net/api-docs#/message/createMessage
|
||||||
req := n.httpClient.R().
|
req := n.httpClient.R().
|
||||||
SetContext(ctx).
|
SetContext(ctx).
|
||||||
SetHeader("Content-Type", "application/json").
|
|
||||||
SetHeader("Authorization", "Bearer "+n.config.Token).
|
SetHeader("Authorization", "Bearer "+n.config.Token).
|
||||||
|
SetHeader("Content-Type", "application/json").
|
||||||
|
SetHeader("User-Agent", "certimate").
|
||||||
SetBody(map[string]any{
|
SetBody(map[string]any{
|
||||||
"title": subject,
|
"title": subject,
|
||||||
"message": message,
|
"message": message,
|
||||||
|
@ -35,14 +35,14 @@ func NewNotifier(config *NotifierConfig) (*NotifierProvider, error) {
|
|||||||
|
|
||||||
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
n.logger = slog.Default()
|
n.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
n.logger = logger
|
n.logger = logger
|
||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (res *notifier.NotifyResult, err error) {
|
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (*notifier.NotifyResult, error) {
|
||||||
bot := lark.NewNotificationBot(n.config.WebhookUrl)
|
bot := lark.NewNotificationBot(n.config.WebhookUrl)
|
||||||
content := lark.NewPostBuilder().
|
content := lark.NewPostBuilder().
|
||||||
Title(subject).
|
Title(subject).
|
||||||
|
@ -46,20 +46,21 @@ func NewNotifier(config *NotifierConfig) (*NotifierProvider, error) {
|
|||||||
|
|
||||||
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
n.logger = slog.Default()
|
n.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
n.logger = logger
|
n.logger = logger
|
||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (res *notifier.NotifyResult, err error) {
|
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (*notifier.NotifyResult, error) {
|
||||||
serverUrl := strings.TrimRight(n.config.ServerUrl, "/")
|
serverUrl := strings.TrimRight(n.config.ServerUrl, "/")
|
||||||
|
|
||||||
// REF: https://developers.mattermost.com/api-documentation/#/operations/Login
|
// REF: https://developers.mattermost.com/api-documentation/#/operations/Login
|
||||||
loginReq := n.httpClient.R().
|
loginReq := n.httpClient.R().
|
||||||
SetContext(ctx).
|
SetContext(ctx).
|
||||||
SetHeader("Content-Type", "application/json").
|
SetHeader("Content-Type", "application/json").
|
||||||
|
SetHeader("User-Agent", "certimate").
|
||||||
SetBody(map[string]any{
|
SetBody(map[string]any{
|
||||||
"login_id": n.config.Username,
|
"login_id": n.config.Username,
|
||||||
"password": n.config.Password,
|
"password": n.config.Password,
|
||||||
@ -76,8 +77,9 @@ func (n *NotifierProvider) Notify(ctx context.Context, subject string, message s
|
|||||||
// REF: https://developers.mattermost.com/api-documentation/#/operations/CreatePost
|
// REF: https://developers.mattermost.com/api-documentation/#/operations/CreatePost
|
||||||
postReq := n.httpClient.R().
|
postReq := n.httpClient.R().
|
||||||
SetContext(ctx).
|
SetContext(ctx).
|
||||||
SetHeader("Content-Type", "application/json").
|
|
||||||
SetHeader("Authorization", "Bearer "+loginResp.Header().Get("Token")).
|
SetHeader("Authorization", "Bearer "+loginResp.Header().Get("Token")).
|
||||||
|
SetHeader("Content-Type", "application/json").
|
||||||
|
SetHeader("User-Agent", "certimate").
|
||||||
SetBody(map[string]any{
|
SetBody(map[string]any{
|
||||||
"channel_id": n.config.ChannelId,
|
"channel_id": n.config.ChannelId,
|
||||||
"props": map[string]interface{}{
|
"props": map[string]interface{}{
|
||||||
|
@ -41,18 +41,19 @@ func NewNotifier(config *NotifierConfig) (*NotifierProvider, error) {
|
|||||||
|
|
||||||
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
n.logger = slog.Default()
|
n.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
n.logger = logger
|
n.logger = logger
|
||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (res *notifier.NotifyResult, err error) {
|
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (*notifier.NotifyResult, error) {
|
||||||
// REF: https://pushover.net/api
|
// REF: https://pushover.net/api
|
||||||
req := n.httpClient.R().
|
req := n.httpClient.R().
|
||||||
SetContext(ctx).
|
SetContext(ctx).
|
||||||
SetHeader("Content-Type", "application/json").
|
SetHeader("Content-Type", "application/json").
|
||||||
|
SetHeader("User-Agent", "certimate").
|
||||||
SetBody(map[string]any{
|
SetBody(map[string]any{
|
||||||
"title": subject,
|
"title": subject,
|
||||||
"message": message,
|
"message": message,
|
||||||
|
@ -40,18 +40,19 @@ func NewNotifier(config *NotifierConfig) (*NotifierProvider, error) {
|
|||||||
|
|
||||||
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
func (n *NotifierProvider) WithLogger(logger *slog.Logger) notifier.Notifier {
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
n.logger = slog.Default()
|
n.logger = slog.New(slog.DiscardHandler)
|
||||||
} else {
|
} else {
|
||||||
n.logger = logger
|
n.logger = logger
|
||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (res *notifier.NotifyResult, err error) {
|
func (n *NotifierProvider) Notify(ctx context.Context, subject string, message string) (*notifier.NotifyResult, error) {
|
||||||
// REF: https://pushplus.plus/doc/guide/api.html#%E4%B8%80%E3%80%81%E5%8F%91%E9%80%81%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3
|
// REF: https://pushplus.plus/doc/guide/api.html#%E4%B8%80%E3%80%81%E5%8F%91%E9%80%81%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3
|
||||||
req := n.httpClient.R().
|
req := n.httpClient.R().
|
||||||
SetContext(ctx).
|
SetContext(ctx).
|
||||||
SetHeader("Content-Type", "application/json").
|
SetHeader("Content-Type", "application/json").
|
||||||
|
SetHeader("User-Agent", "certimate").
|
||||||
SetBody(map[string]any{
|
SetBody(map[string]any{
|
||||||
"title": subject,
|
"title": subject,
|
||||||
"content": message,
|
"content": message,
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user