mirror of
https://github.com/usual2970/certimate.git
synced 2025-06-08 21:49:52 +00:00
commit
893391a3d1
@ -372,6 +372,7 @@ func createDeployer(options *deployerOptions) (deployer.Deployer, error) {
|
|||||||
deployer, err := pBaishanCDN.NewDeployer(&pBaishanCDN.DeployerConfig{
|
deployer, err := pBaishanCDN.NewDeployer(&pBaishanCDN.DeployerConfig{
|
||||||
ApiToken: access.ApiToken,
|
ApiToken: access.ApiToken,
|
||||||
Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
|
Domain: maputil.GetString(options.ProviderDeployConfig, "domain"),
|
||||||
|
CertificateId: maputil.GetString(options.ProviderDeployConfig, "certificateId"),
|
||||||
})
|
})
|
||||||
return deployer, err
|
return deployer, err
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ func (d *DeployerProvider) deployToWAF3(ctx context.Context, certPem string, pri
|
|||||||
InstanceId: tea.String(d.config.InstanceId),
|
InstanceId: tea.String(d.config.InstanceId),
|
||||||
RegionId: tea.String(d.config.Region),
|
RegionId: tea.String(d.config.Region),
|
||||||
Domain: tea.String(d.config.Domain),
|
Domain: tea.String(d.config.Domain),
|
||||||
Listen: &aliwaf.ModifyDomainRequestListen{CertId: tea.String(upres.CertId)},
|
Listen: &aliwaf.ModifyDomainRequestListen{CertId: tea.String(upres.ExtendedData["certIdentifier"].(string))},
|
||||||
Redirect: &aliwaf.ModifyDomainRequestRedirect{Loadbalance: tea.String("iphash")},
|
Redirect: &aliwaf.ModifyDomainRequestRedirect{Loadbalance: tea.String("iphash")},
|
||||||
}
|
}
|
||||||
modifyDomainReq = assign(modifyDomainReq, describeDomainDetailResp.Body)
|
modifyDomainReq = assign(modifyDomainReq, describeDomainDetailResp.Body)
|
||||||
|
@ -21,6 +21,9 @@ type DeployerConfig struct {
|
|||||||
ApiToken string `json:"apiToken"`
|
ApiToken string `json:"apiToken"`
|
||||||
// 加速域名(支持泛域名)。
|
// 加速域名(支持泛域名)。
|
||||||
Domain string `json:"domain"`
|
Domain string `json:"domain"`
|
||||||
|
// 证书 ID。
|
||||||
|
// 选填。
|
||||||
|
CertificateId string `json:"certificateId,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type DeployerProvider struct {
|
type DeployerProvider struct {
|
||||||
@ -62,20 +65,7 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPe
|
|||||||
return nil, errors.New("config `domain` is required")
|
return nil, errors.New("config `domain` is required")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询域名配置
|
if d.config.CertificateId == "" {
|
||||||
// REF: https://portal.baishancloud.com/track/document/api/1/1065
|
|
||||||
getDomainConfigReq := &bssdk.GetDomainConfigRequest{
|
|
||||||
Domains: d.config.Domain,
|
|
||||||
Config: []string{"https"},
|
|
||||||
}
|
|
||||||
getDomainConfigResp, err := d.sdkClient.GetDomainConfig(getDomainConfigReq)
|
|
||||||
d.logger.Debug("sdk request 'baishan.GetDomainConfig'", slog.Any("request", getDomainConfigReq), slog.Any("response", getDomainConfigResp))
|
|
||||||
if err != nil {
|
|
||||||
return nil, xerrors.Wrap(err, "failed to execute sdk request 'baishan.GetDomainConfig'")
|
|
||||||
} else if len(getDomainConfigResp.Data) == 0 {
|
|
||||||
return nil, errors.New("domain config not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增证书
|
// 新增证书
|
||||||
// REF: https://portal.baishancloud.com/track/document/downloadPdf/1441
|
// REF: https://portal.baishancloud.com/track/document/downloadPdf/1441
|
||||||
certificateId := ""
|
certificateId := ""
|
||||||
@ -102,6 +92,20 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPe
|
|||||||
certificateId = createCertificateResp.Data.CertId.String()
|
certificateId = createCertificateResp.Data.CertId.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询域名配置
|
||||||
|
// REF: https://portal.baishancloud.com/track/document/api/1/1065
|
||||||
|
getDomainConfigReq := &bssdk.GetDomainConfigRequest{
|
||||||
|
Domains: d.config.Domain,
|
||||||
|
Config: []string{"https"},
|
||||||
|
}
|
||||||
|
getDomainConfigResp, err := d.sdkClient.GetDomainConfig(getDomainConfigReq)
|
||||||
|
d.logger.Debug("sdk request 'baishan.GetDomainConfig'", slog.Any("request", getDomainConfigReq), slog.Any("response", getDomainConfigResp))
|
||||||
|
if err != nil {
|
||||||
|
return nil, xerrors.Wrap(err, "failed to execute sdk request 'baishan.GetDomainConfig'")
|
||||||
|
} else if len(getDomainConfigResp.Data) == 0 {
|
||||||
|
return nil, errors.New("domain config not found")
|
||||||
|
}
|
||||||
|
|
||||||
// 设置域名配置
|
// 设置域名配置
|
||||||
// REF: https://portal.baishancloud.com/track/document/api/1/1045
|
// REF: https://portal.baishancloud.com/track/document/api/1/1045
|
||||||
setDomainConfigReq := &bssdk.SetDomainConfigRequest{
|
setDomainConfigReq := &bssdk.SetDomainConfigRequest{
|
||||||
@ -120,6 +124,21 @@ func (d *DeployerProvider) Deploy(ctx context.Context, certPem string, privkeyPe
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Wrap(err, "failed to execute sdk request 'baishan.SetDomainConfig'")
|
return nil, xerrors.Wrap(err, "failed to execute sdk request 'baishan.SetDomainConfig'")
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// 替换证书
|
||||||
|
// REF: https://portal.baishancloud.com/track/document/downloadPdf/1441
|
||||||
|
createCertificateReq := &bssdk.CreateCertificateRequest{
|
||||||
|
CertificateId: &d.config.CertificateId,
|
||||||
|
Certificate: certPem,
|
||||||
|
Key: privkeyPem,
|
||||||
|
Name: fmt.Sprintf("certimate_%d", time.Now().UnixMilli()),
|
||||||
|
}
|
||||||
|
createCertificateResp, err := d.sdkClient.CreateCertificate(createCertificateReq)
|
||||||
|
d.logger.Debug("sdk request 'baishan.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||||
|
if err != nil {
|
||||||
|
return nil, xerrors.Wrap(err, "failed to execute sdk request 'baishan.CreateCertificate'")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return &deployer.DeployResult{}, nil
|
return &deployer.DeployResult{}, nil
|
||||||
}
|
}
|
||||||
|
@ -116,6 +116,10 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
|
|||||||
return &uploader.UploadResult{
|
return &uploader.UploadResult{
|
||||||
CertId: fmt.Sprintf("%d", tea.Int64Value(certDetail.CertificateId)),
|
CertId: fmt.Sprintf("%d", tea.Int64Value(certDetail.CertificateId)),
|
||||||
CertName: *certDetail.Name,
|
CertName: *certDetail.Name,
|
||||||
|
ExtendedData: map[string]any{
|
||||||
|
"instanceId": tea.StringValue(getUserCertificateDetailResp.Body.InstanceId),
|
||||||
|
"certIdentifier": tea.StringValue(getUserCertificateDetailResp.Body.CertIdentifier),
|
||||||
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -129,8 +133,7 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 生成新证书名(需符合阿里云命名规则)
|
// 生成新证书名(需符合阿里云命名规则)
|
||||||
var certId, certName string
|
certName := fmt.Sprintf("certimate_%d", time.Now().UnixMilli())
|
||||||
certName = fmt.Sprintf("certimate_%d", time.Now().UnixMilli())
|
|
||||||
|
|
||||||
// 上传新证书
|
// 上传新证书
|
||||||
// REF: https://help.aliyun.com/zh/ssl-certificate/developer-reference/api-cas-2020-04-07-uploadusercertificate
|
// REF: https://help.aliyun.com/zh/ssl-certificate/developer-reference/api-cas-2020-04-07-uploadusercertificate
|
||||||
@ -145,10 +148,25 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
|
|||||||
return nil, xerrors.Wrap(err, "failed to execute sdk request 'cas.UploadUserCertificate'")
|
return nil, xerrors.Wrap(err, "failed to execute sdk request 'cas.UploadUserCertificate'")
|
||||||
}
|
}
|
||||||
|
|
||||||
certId = fmt.Sprintf("%d", tea.Int64Value(uploadUserCertificateResp.Body.CertId))
|
// 获取证书详情
|
||||||
|
// REF: https://help.aliyun.com/zh/ssl-certificate/developer-reference/api-cas-2020-04-07-getusercertificatedetail
|
||||||
|
getUserCertificateDetailReq := &alicas.GetUserCertificateDetailRequest{
|
||||||
|
CertId: uploadUserCertificateResp.Body.CertId,
|
||||||
|
CertFilter: tea.Bool(true),
|
||||||
|
}
|
||||||
|
getUserCertificateDetailResp, err := u.sdkClient.GetUserCertificateDetail(getUserCertificateDetailReq)
|
||||||
|
u.logger.Debug("sdk request 'cas.GetUserCertificateDetail'", slog.Any("request", getUserCertificateDetailReq), slog.Any("response", getUserCertificateDetailResp))
|
||||||
|
if err != nil {
|
||||||
|
return nil, xerrors.Wrap(err, "failed to execute sdk request 'cas.GetUserCertificateDetail'")
|
||||||
|
}
|
||||||
|
|
||||||
return &uploader.UploadResult{
|
return &uploader.UploadResult{
|
||||||
CertId: certId,
|
CertId: fmt.Sprintf("%d", tea.Int64Value(getUserCertificateDetailResp.Body.Id)),
|
||||||
CertName: certName,
|
CertName: certName,
|
||||||
|
ExtendedData: map[string]any{
|
||||||
|
"instanceId": tea.StringValue(getUserCertificateDetailResp.Body.InstanceId),
|
||||||
|
"certIdentifier": tea.StringValue(getUserCertificateDetailResp.Body.CertIdentifier),
|
||||||
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ func (u *UploaderProvider) Upload(ctx context.Context, certPem string, privkeyPe
|
|||||||
|
|
||||||
// 获取证书列表,避免重复上传
|
// 获取证书列表,避免重复上传
|
||||||
// REF: https://docs.aws.amazon.com/en_us/acm/latest/APIReference/API_ListCertificates.html
|
// REF: https://docs.aws.amazon.com/en_us/acm/latest/APIReference/API_ListCertificates.html
|
||||||
listCertificatesNextToken := new(string)
|
var listCertificatesNextToken *string = nil
|
||||||
listCertificatesMaxItems := int32(1000)
|
listCertificatesMaxItems := int32(1000)
|
||||||
for {
|
for {
|
||||||
listCertificatesReq := &awsacm.ListCertificatesInput{
|
listCertificatesReq := &awsacm.ListCertificatesInput{
|
||||||
|
1
internal/pkg/vendors/baishan-sdk/models.go
vendored
1
internal/pkg/vendors/baishan-sdk/models.go
vendored
@ -27,6 +27,7 @@ func (r *baseResponse) GetMessage() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type CreateCertificateRequest struct {
|
type CreateCertificateRequest struct {
|
||||||
|
CertificateId *string `json:"cert_id,omitempty"`
|
||||||
Certificate string `json:"certificate"`
|
Certificate string `json:"certificate"`
|
||||||
Key string `json:"key"`
|
Key string `json:"key"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
@ -7,6 +7,7 @@ import { validDomainName } from "@/utils/validators";
|
|||||||
|
|
||||||
type DeployNodeConfigFormBaishanCDNConfigFieldValues = Nullish<{
|
type DeployNodeConfigFormBaishanCDNConfigFieldValues = Nullish<{
|
||||||
domain: string;
|
domain: string;
|
||||||
|
certificateId?: string | number;
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
export type DeployNodeConfigFormBaishanCDNConfigProps = {
|
export type DeployNodeConfigFormBaishanCDNConfigProps = {
|
||||||
@ -34,6 +35,13 @@ const DeployNodeConfigFormBaishanCDNConfig = ({
|
|||||||
domain: z
|
domain: z
|
||||||
.string({ message: t("workflow_node.deploy.form.baishan_cdn_domain.placeholder") })
|
.string({ message: t("workflow_node.deploy.form.baishan_cdn_domain.placeholder") })
|
||||||
.refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")),
|
.refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")),
|
||||||
|
certificateId: z
|
||||||
|
.union([z.string(), z.number().int()])
|
||||||
|
.nullish()
|
||||||
|
.refine((v) => {
|
||||||
|
if (!v) return true;
|
||||||
|
return /^\d+$/.test(v + "") && +v > 0;
|
||||||
|
}, t("workflow_node.deploy.form.baishan_cdn_certificate_id.placeholder")),
|
||||||
});
|
});
|
||||||
const formRule = createSchemaFieldRule(formSchema);
|
const formRule = createSchemaFieldRule(formSchema);
|
||||||
|
|
||||||
@ -58,6 +66,15 @@ const DeployNodeConfigFormBaishanCDNConfig = ({
|
|||||||
>
|
>
|
||||||
<Input placeholder={t("workflow_node.deploy.form.baishan_cdn_domain.placeholder")} />
|
<Input placeholder={t("workflow_node.deploy.form.baishan_cdn_domain.placeholder")} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item
|
||||||
|
name="certificateId"
|
||||||
|
label={t("workflow_node.deploy.form.baishan_cdn_certificate_id.label")}
|
||||||
|
rules={[formRule]}
|
||||||
|
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.baishan_cdn_certificate_id.tooltip") }}></span>}
|
||||||
|
>
|
||||||
|
<Input type="number" placeholder={t("workflow_node.deploy.form.baishan_cdn_certificate_id.placeholder")} />
|
||||||
|
</Form.Item>
|
||||||
</Form>
|
</Form>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -38,9 +38,12 @@ const DeployNodeConfigFormCdnflyConfig = ({ form: formInst, formName, disabled,
|
|||||||
if (fieldResourceType !== RESOURCE_TYPE_SITE) return true;
|
if (fieldResourceType !== RESOURCE_TYPE_SITE) return true;
|
||||||
return /^\d+$/.test(v + "") && +v > 0;
|
return /^\d+$/.test(v + "") && +v > 0;
|
||||||
}, t("workflow_node.deploy.form.cdnfly_site_id.placeholder")),
|
}, t("workflow_node.deploy.form.cdnfly_site_id.placeholder")),
|
||||||
certificateId: z.union([z.string(), z.number().int()]).refine((v) => {
|
certificateId: z
|
||||||
|
.union([z.string(), z.number().int()])
|
||||||
|
.nullish()
|
||||||
|
.refine((v) => {
|
||||||
if (fieldResourceType !== RESOURCE_TYPE_CERTIFICATE) return true;
|
if (fieldResourceType !== RESOURCE_TYPE_CERTIFICATE) return true;
|
||||||
return /^\d+$/.test(v + "") && +v > 0;
|
return /^\d+$/.test(v + "") && +v! > 0;
|
||||||
}, t("workflow_node.deploy.form.cdnfly_certificate_id.placeholder")),
|
}, t("workflow_node.deploy.form.cdnfly_certificate_id.placeholder")),
|
||||||
});
|
});
|
||||||
const formRule = createSchemaFieldRule(formSchema);
|
const formRule = createSchemaFieldRule(formSchema);
|
||||||
|
@ -34,9 +34,12 @@ const DeployNodeConfigFormSafeLineConfig = ({ form: formInst, formName, disabled
|
|||||||
resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, {
|
resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, {
|
||||||
message: t("workflow_node.deploy.form.safeline_resource_type.placeholder"),
|
message: t("workflow_node.deploy.form.safeline_resource_type.placeholder"),
|
||||||
}),
|
}),
|
||||||
certificateId: z.union([z.string(), z.number().int()]).refine((v) => {
|
certificateId: z
|
||||||
|
.union([z.string(), z.number().int()])
|
||||||
|
.nullish()
|
||||||
|
.refine((v) => {
|
||||||
if (fieldResourceType !== RESOURCE_TYPE_CERTIFICATE) return true;
|
if (fieldResourceType !== RESOURCE_TYPE_CERTIFICATE) return true;
|
||||||
return /^\d+$/.test(v + "") && +v > 0;
|
return /^\d+$/.test(v + "") && +v! > 0;
|
||||||
}, t("workflow_node.deploy.form.safeline_certificate_id.placeholder")),
|
}, t("workflow_node.deploy.form.safeline_certificate_id.placeholder")),
|
||||||
});
|
});
|
||||||
const formRule = createSchemaFieldRule(formSchema);
|
const formRule = createSchemaFieldRule(formSchema);
|
||||||
|
@ -265,6 +265,9 @@
|
|||||||
"workflow_node.deploy.form.baishan_cdn_domain.label": "Baishan CDN domain",
|
"workflow_node.deploy.form.baishan_cdn_domain.label": "Baishan CDN domain",
|
||||||
"workflow_node.deploy.form.baishan_cdn_domain.placeholder": "Please enter Baishan CDN domain name",
|
"workflow_node.deploy.form.baishan_cdn_domain.placeholder": "Please enter Baishan CDN domain name",
|
||||||
"workflow_node.deploy.form.baishan_cdn_domain.tooltip": "For more information, see <a href=\"https://cdnx.console.baishan.com\" target=\"_blank\">https://cdnx.console.baishan.com</a>",
|
"workflow_node.deploy.form.baishan_cdn_domain.tooltip": "For more information, see <a href=\"https://cdnx.console.baishan.com\" target=\"_blank\">https://cdnx.console.baishan.com</a>",
|
||||||
|
"workflow_node.deploy.form.baishan_cdn_certificate_id.label": "Baishan CDN certificate ID (Optional",
|
||||||
|
"workflow_node.deploy.form.baishan_cdn_certificate_id.placeholder": "Please enter Baishan CDN certificate ID",
|
||||||
|
"workflow_node.deploy.form.baishan_cdn_certificate_id.tooltip": "For more information, see <a href=\"https://cdnx.console.baishan.com/#/cdn/cert\" target=\"_blank\">https://cdnx.console.baishan.com/#/cdn/cert</a>",
|
||||||
"workflow_node.deploy.form.baotapanel_console_auto_restart.label": "Auto restart after deployment",
|
"workflow_node.deploy.form.baotapanel_console_auto_restart.label": "Auto restart after deployment",
|
||||||
"workflow_node.deploy.form.baotapanel_site_type.label": "aaPanel site type",
|
"workflow_node.deploy.form.baotapanel_site_type.label": "aaPanel site type",
|
||||||
"workflow_node.deploy.form.baotapanel_site_type.placeholder": "Please select aaPanel site type",
|
"workflow_node.deploy.form.baotapanel_site_type.placeholder": "Please select aaPanel site type",
|
||||||
|
@ -114,7 +114,7 @@
|
|||||||
"workflow_node.deploy.form.aliyun_alb_listener_id.tooltip": "这是什么?请参阅 <a href=\"https://slb.console.aliyun.com/alb\" target=\"_blank\">https://slb.console.aliyun.com/alb</a>",
|
"workflow_node.deploy.form.aliyun_alb_listener_id.tooltip": "这是什么?请参阅 <a href=\"https://slb.console.aliyun.com/alb\" target=\"_blank\">https://slb.console.aliyun.com/alb</a>",
|
||||||
"workflow_node.deploy.form.aliyun_alb_snidomain.label": "阿里云 ALB 扩展域名(可选)",
|
"workflow_node.deploy.form.aliyun_alb_snidomain.label": "阿里云 ALB 扩展域名(可选)",
|
||||||
"workflow_node.deploy.form.aliyun_alb_snidomain.placeholder": "请输入阿里云 ALB 扩展域名(支持泛域名)",
|
"workflow_node.deploy.form.aliyun_alb_snidomain.placeholder": "请输入阿里云 ALB 扩展域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.aliyun_alb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://slb.console.aliyun.com/alb\" target=\"_blank\">https://slb.console.aliyun.com/alb</a><br><br>不填写时,将替换监听器的默认证书。",
|
"workflow_node.deploy.form.aliyun_alb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://slb.console.aliyun.com/alb\" target=\"_blank\">https://slb.console.aliyun.com/alb</a><br><br>不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
|
||||||
"workflow_node.deploy.form.aliyun_cas_region.label": "阿里云 CAS 服务地域",
|
"workflow_node.deploy.form.aliyun_cas_region.label": "阿里云 CAS 服务地域",
|
||||||
"workflow_node.deploy.form.aliyun_cas_region.placeholder": "请输入阿里云 CAS 服务地域(例如:cn-hangzhou)",
|
"workflow_node.deploy.form.aliyun_cas_region.placeholder": "请输入阿里云 CAS 服务地域(例如:cn-hangzhou)",
|
||||||
"workflow_node.deploy.form.aliyun_cas_region.tooltip": "这是什么?请参阅 <a href=\"https://help.aliyun.com/zh/ssl-certificate/developer-reference/endpoints\" target=\"_blank\">https://help.aliyun.com/zh/ssl-certificate/developer-reference/endpoints</a>",
|
"workflow_node.deploy.form.aliyun_cas_region.tooltip": "这是什么?请参阅 <a href=\"https://help.aliyun.com/zh/ssl-certificate/developer-reference/endpoints\" target=\"_blank\">https://help.aliyun.com/zh/ssl-certificate/developer-reference/endpoints</a>",
|
||||||
@ -149,7 +149,7 @@
|
|||||||
"workflow_node.deploy.form.aliyun_clb_listener_port.tooltip": "这是什么?请参阅 <a href=\"https://slb.console.aliyun.com/clb\" target=\"_blank\">https://slb.console.aliyun.com/clb</a>",
|
"workflow_node.deploy.form.aliyun_clb_listener_port.tooltip": "这是什么?请参阅 <a href=\"https://slb.console.aliyun.com/clb\" target=\"_blank\">https://slb.console.aliyun.com/clb</a>",
|
||||||
"workflow_node.deploy.form.aliyun_clb_snidomain.label": "阿里云 CLB 扩展域名(可选)",
|
"workflow_node.deploy.form.aliyun_clb_snidomain.label": "阿里云 CLB 扩展域名(可选)",
|
||||||
"workflow_node.deploy.form.aliyun_clb_snidomain.placeholder": "请输入阿里云 CLB 扩展域名(支持泛域名)",
|
"workflow_node.deploy.form.aliyun_clb_snidomain.placeholder": "请输入阿里云 CLB 扩展域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.aliyun_clb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://slb.console.aliyun.com/clb\" target=\"_blank\">https://slb.console.aliyun.com/clb</a><br><br>不填写时,将替换监听器的默认证书。",
|
"workflow_node.deploy.form.aliyun_clb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://slb.console.aliyun.com/clb\" target=\"_blank\">https://slb.console.aliyun.com/clb</a><br><br>不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
|
||||||
"workflow_node.deploy.form.aliyun_cdn_domain.label": "阿里云 CDN 加速域名",
|
"workflow_node.deploy.form.aliyun_cdn_domain.label": "阿里云 CDN 加速域名",
|
||||||
"workflow_node.deploy.form.aliyun_cdn_domain.placeholder": "请输入阿里云 CDN 加速域名(支持泛域名)",
|
"workflow_node.deploy.form.aliyun_cdn_domain.placeholder": "请输入阿里云 CDN 加速域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.aliyun_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://cdn.console.aliyun.com\" target=\"_blank\">https://cdn.console.aliyun.com</a>",
|
"workflow_node.deploy.form.aliyun_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://cdn.console.aliyun.com\" target=\"_blank\">https://cdn.console.aliyun.com</a>",
|
||||||
@ -214,7 +214,7 @@
|
|||||||
"workflow_node.deploy.form.aliyun_waf_instance_id.tooltip": "这是什么?请参阅 <a href=\"https://waf.console.aliyun.com\" target=\"_blank\">https://waf.console.aliyun.com</a><br><br>仅支持 CNAME 接入。",
|
"workflow_node.deploy.form.aliyun_waf_instance_id.tooltip": "这是什么?请参阅 <a href=\"https://waf.console.aliyun.com\" target=\"_blank\">https://waf.console.aliyun.com</a><br><br>仅支持 CNAME 接入。",
|
||||||
"workflow_node.deploy.form.aliyun_waf_domain.label": "阿里云 WAF 接入域名(可选)",
|
"workflow_node.deploy.form.aliyun_waf_domain.label": "阿里云 WAF 接入域名(可选)",
|
||||||
"workflow_node.deploy.form.aliyun_waf_domain.placeholder": "请输入阿里云 WAF 接入域名(支持泛域名)",
|
"workflow_node.deploy.form.aliyun_waf_domain.placeholder": "请输入阿里云 WAF 接入域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.aliyun_waf_domain.tooltip": "这是什么?请参阅 <a href=\"https://waf.console.aliyun.com\" target=\"_blank\">waf.console.aliyun.com</a><br><br>不填写时,将替换实例的默认证书。",
|
"workflow_node.deploy.form.aliyun_waf_domain.tooltip": "这是什么?请参阅 <a href=\"https://waf.console.aliyun.com\" target=\"_blank\">waf.console.aliyun.com</a><br><br>不填写时,将替换实例的默认证书;否则,将替换扩展域名证书。",
|
||||||
"workflow_node.deploy.form.aws_acm_region.label": "AWS ACM 服务区域",
|
"workflow_node.deploy.form.aws_acm_region.label": "AWS ACM 服务区域",
|
||||||
"workflow_node.deploy.form.aws_acm_region.placeholder": "请输入 AWS ACM 服务区域(例如:us-east-1)",
|
"workflow_node.deploy.form.aws_acm_region.placeholder": "请输入 AWS ACM 服务区域(例如:us-east-1)",
|
||||||
"workflow_node.deploy.form.aws_acm_region.tooltip": "这是什么?请参阅 <a href=\"https://docs.aws.amazon.com/zh_cn/general/latest/gr/rande.html#regional-endpoints\" target=\"_blank\">https://docs.aws.amazon.com/zh_cn/general/latest/gr/rande.html#regional-endpoints</a>",
|
"workflow_node.deploy.form.aws_acm_region.tooltip": "这是什么?请参阅 <a href=\"https://docs.aws.amazon.com/zh_cn/general/latest/gr/rande.html#regional-endpoints\" target=\"_blank\">https://docs.aws.amazon.com/zh_cn/general/latest/gr/rande.html#regional-endpoints</a>",
|
||||||
@ -242,7 +242,7 @@
|
|||||||
"workflow_node.deploy.form.baiducloud_appblb_listener_port.tooltip": "这是什么?请参阅 <a href=\"https://console.bce.baidu.com/blb/#/appblb/list\" target=\"_blank\">https://console.bce.baidu.com/blb/#/appblb/list</a>",
|
"workflow_node.deploy.form.baiducloud_appblb_listener_port.tooltip": "这是什么?请参阅 <a href=\"https://console.bce.baidu.com/blb/#/appblb/list\" target=\"_blank\">https://console.bce.baidu.com/blb/#/appblb/list</a>",
|
||||||
"workflow_node.deploy.form.baiducloud_appblb_snidomain.label": "百度智能云 BLB 扩展域名(可选)",
|
"workflow_node.deploy.form.baiducloud_appblb_snidomain.label": "百度智能云 BLB 扩展域名(可选)",
|
||||||
"workflow_node.deploy.form.baiducloud_appblb_snidomain.placeholder": "请输入百度智能云 BLB 扩展域名(支持泛域名)",
|
"workflow_node.deploy.form.baiducloud_appblb_snidomain.placeholder": "请输入百度智能云 BLB 扩展域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.baiducloud_appblb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://console.bce.baidu.com/blb/#/appblb/list\" target=\"_blank\">https://console.bce.baidu.com/blb/#/appblb/list</a><br><br>不填写时,将替换监听器的默认证书。",
|
"workflow_node.deploy.form.baiducloud_appblb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://console.bce.baidu.com/blb/#/appblb/list\" target=\"_blank\">https://console.bce.baidu.com/blb/#/appblb/list</a><br><br>不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
|
||||||
"workflow_node.deploy.form.baiducloud_blb_resource_type.label": "证书替换方式",
|
"workflow_node.deploy.form.baiducloud_blb_resource_type.label": "证书替换方式",
|
||||||
"workflow_node.deploy.form.baiducloud_blb_resource_type.placeholder": "请选择证书替换方式",
|
"workflow_node.deploy.form.baiducloud_blb_resource_type.placeholder": "请选择证书替换方式",
|
||||||
"workflow_node.deploy.form.baiducloud_blb_resource_type.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS/SSL 监听的证书",
|
"workflow_node.deploy.form.baiducloud_blb_resource_type.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS/SSL 监听的证书",
|
||||||
@ -258,13 +258,16 @@
|
|||||||
"workflow_node.deploy.form.baiducloud_blb_listener_port.tooltip": "这是什么?请参阅 <a href=\"https://console.bce.baidu.com/blb/#/blb/list\" target=\"_blank\">https://console.bce.baidu.com/blb/#/blb/list</a>",
|
"workflow_node.deploy.form.baiducloud_blb_listener_port.tooltip": "这是什么?请参阅 <a href=\"https://console.bce.baidu.com/blb/#/blb/list\" target=\"_blank\">https://console.bce.baidu.com/blb/#/blb/list</a>",
|
||||||
"workflow_node.deploy.form.baiducloud_blb_snidomain.label": "百度智能云 BLB 扩展域名(可选)",
|
"workflow_node.deploy.form.baiducloud_blb_snidomain.label": "百度智能云 BLB 扩展域名(可选)",
|
||||||
"workflow_node.deploy.form.baiducloud_blb_snidomain.placeholder": "请输入百度智能云 BLB 扩展域名(支持泛域名)",
|
"workflow_node.deploy.form.baiducloud_blb_snidomain.placeholder": "请输入百度智能云 BLB 扩展域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.baiducloud_blb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://console.bce.baidu.com/blb/#/blb/list\" target=\"_blank\">https://console.bce.baidu.com/blb/#/blb/list</a><br><br>不填写时,将替换监听器的默认证书。",
|
"workflow_node.deploy.form.baiducloud_blb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://console.bce.baidu.com/blb/#/blb/list\" target=\"_blank\">https://console.bce.baidu.com/blb/#/blb/list</a><br><br>不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
|
||||||
"workflow_node.deploy.form.baiducloud_cdn_domain.label": "百度智能云 CDN 加速域名",
|
"workflow_node.deploy.form.baiducloud_cdn_domain.label": "百度智能云 CDN 加速域名",
|
||||||
"workflow_node.deploy.form.baiducloud_cdn_domain.placeholder": "请输入百度智能云 CDN 加速域名(支持泛域名)",
|
"workflow_node.deploy.form.baiducloud_cdn_domain.placeholder": "请输入百度智能云 CDN 加速域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.baiducloud_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://console.bce.baidu.com/cdn\" target=\"_blank\">https://console.bce.baidu.com/cdn</a>",
|
"workflow_node.deploy.form.baiducloud_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://console.bce.baidu.com/cdn\" target=\"_blank\">https://console.bce.baidu.com/cdn</a>",
|
||||||
"workflow_node.deploy.form.baishan_cdn_domain.label": "白山云 CDN 加速域名",
|
"workflow_node.deploy.form.baishan_cdn_domain.label": "白山云 CDN 加速域名",
|
||||||
"workflow_node.deploy.form.baishan_cdn_domain.placeholder": "请输入白山云 CDN 加速域名(支持泛域名)",
|
"workflow_node.deploy.form.baishan_cdn_domain.placeholder": "请输入白山云 CDN 加速域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.baishan_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://cdnx.console.baishan.com\" target=\"_blank\">https://cdnx.console.baishan.com</a>",
|
"workflow_node.deploy.form.baishan_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://cdnx.console.baishan.com\" target=\"_blank\">https://cdnx.console.baishan.com</a>",
|
||||||
|
"workflow_node.deploy.form.baishan_cdn_certificate_id.label": "白山云 CDN 原证书 ID(可选)",
|
||||||
|
"workflow_node.deploy.form.baishan_cdn_certificate_id.placeholder": "请输入白山云 CDN 原证书 ID",
|
||||||
|
"workflow_node.deploy.form.baishan_cdn_certificate_id.tooltip": "这是什么?请参阅 <a href=\"https://cdnx.console.baishan.com/#/cdn/cert\" target=\"_blank\">https://cdnx.console.baishan.com/#/cdn/cert</a><br><br>不填写时,将上传新证书;否则,将替换原证书。",
|
||||||
"workflow_node.deploy.form.baotapanel_console_auto_restart.label": "部署后自动重启面板服务",
|
"workflow_node.deploy.form.baotapanel_console_auto_restart.label": "部署后自动重启面板服务",
|
||||||
"workflow_node.deploy.form.baotapanel_site_type.label": "宝塔面板网站类型",
|
"workflow_node.deploy.form.baotapanel_site_type.label": "宝塔面板网站类型",
|
||||||
"workflow_node.deploy.form.baotapanel_site_type.placeholder": "请选择宝塔面板网站类型",
|
"workflow_node.deploy.form.baotapanel_site_type.placeholder": "请选择宝塔面板网站类型",
|
||||||
@ -351,7 +354,7 @@
|
|||||||
"workflow_node.deploy.form.jdcloud_alb_listener_id.tooltip": "这是什么?请参阅 <a href=\"https://cns-console.jdcloud.com/host/loadBalance/list\" target=\"_blank\">https://cns-console.jdcloud.com/host/loadBalance/list</a>",
|
"workflow_node.deploy.form.jdcloud_alb_listener_id.tooltip": "这是什么?请参阅 <a href=\"https://cns-console.jdcloud.com/host/loadBalance/list\" target=\"_blank\">https://cns-console.jdcloud.com/host/loadBalance/list</a>",
|
||||||
"workflow_node.deploy.form.jdcloud_alb_snidomain.label": "京东云 ALB 扩展域名(可选)",
|
"workflow_node.deploy.form.jdcloud_alb_snidomain.label": "京东云 ALB 扩展域名(可选)",
|
||||||
"workflow_node.deploy.form.jdcloud_alb_snidomain.placeholder": "请输入京东云 ALB 扩展域名(支持泛域名)",
|
"workflow_node.deploy.form.jdcloud_alb_snidomain.placeholder": "请输入京东云 ALB 扩展域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.jdcloud_alb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://cns-console.jdcloud.com/host/loadBalance/list\" target=\"_blank\">https://cns-console.jdcloud.com/host/loadBalance/list</a><br><br>不填写时,将替换监听器的默认证书。",
|
"workflow_node.deploy.form.jdcloud_alb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://cns-console.jdcloud.com/host/loadBalance/list\" target=\"_blank\">https://cns-console.jdcloud.com/host/loadBalance/list</a><br><br>不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
|
||||||
"workflow_node.deploy.form.jdcloud_cdn_domain.label": "京东云 CDN 加速域名",
|
"workflow_node.deploy.form.jdcloud_cdn_domain.label": "京东云 CDN 加速域名",
|
||||||
"workflow_node.deploy.form.jdcloud_cdn_domain.placeholder": "请输入京东云 CDN 加速域名(支持泛域名)",
|
"workflow_node.deploy.form.jdcloud_cdn_domain.placeholder": "请输入京东云 CDN 加速域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.jdcloud_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://cdn-console.jdcloud.com/\" target=\"_blank\">https://cdn-console.jdcloud.com/</a>",
|
"workflow_node.deploy.form.jdcloud_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://cdn-console.jdcloud.com/\" target=\"_blank\">https://cdn-console.jdcloud.com/</a>",
|
||||||
@ -485,7 +488,7 @@
|
|||||||
"workflow_node.deploy.form.tencentcloud_clb_listener_id.tooltip": "这是什么?请参阅 <a href=\"https://console.cloud.tencent.com/clb\" target=\"_blank\">https://console.cloud.tencent.com/clb</a>",
|
"workflow_node.deploy.form.tencentcloud_clb_listener_id.tooltip": "这是什么?请参阅 <a href=\"https://console.cloud.tencent.com/clb\" target=\"_blank\">https://console.cloud.tencent.com/clb</a>",
|
||||||
"workflow_node.deploy.form.tencentcloud_clb_snidomain.label": "腾讯云 CLB SNI 域名(可选)",
|
"workflow_node.deploy.form.tencentcloud_clb_snidomain.label": "腾讯云 CLB SNI 域名(可选)",
|
||||||
"workflow_node.deploy.form.tencentcloud_clb_snidomain.placeholder": "请输入腾讯云 CLB SNI 域名",
|
"workflow_node.deploy.form.tencentcloud_clb_snidomain.placeholder": "请输入腾讯云 CLB SNI 域名",
|
||||||
"workflow_node.deploy.form.tencentcloud_clb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://console.cloud.tencent.com/clb\" target=\"_blank\">https://console.cloud.tencent.com/clb</a><br><br>不填写时,将替换监听器的默认证书。",
|
"workflow_node.deploy.form.tencentcloud_clb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://console.cloud.tencent.com/clb\" target=\"_blank\">https://console.cloud.tencent.com/clb</a><br><br>不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
|
||||||
"workflow_node.deploy.form.tencentcloud_clb_ruledomain.label": "腾讯云 CLB 七层转发规则域名",
|
"workflow_node.deploy.form.tencentcloud_clb_ruledomain.label": "腾讯云 CLB 七层转发规则域名",
|
||||||
"workflow_node.deploy.form.tencentcloud_clb_ruledomain.placeholder": "请输入腾讯云 CLB 七层转发规则域名",
|
"workflow_node.deploy.form.tencentcloud_clb_ruledomain.placeholder": "请输入腾讯云 CLB 七层转发规则域名",
|
||||||
"workflow_node.deploy.form.tencentcloud_clb_ruledomain.tooltip": "这是什么?请参阅 <a href=\"https://console.cloud.tencent.com/clb\" target=\"_blank\">https://console.cloud.tencent.com/clb</a>",
|
"workflow_node.deploy.form.tencentcloud_clb_ruledomain.tooltip": "这是什么?请参阅 <a href=\"https://console.cloud.tencent.com/clb\" target=\"_blank\">https://console.cloud.tencent.com/clb</a>",
|
||||||
@ -580,7 +583,7 @@
|
|||||||
"workflow_node.deploy.form.volcengine_alb_listener_id.tooltip": "这是什么?请参阅 <a href=\"https://console.volcengine.com/alb\" target=\"_blank\">https://console.volcengine.com/alb</a>",
|
"workflow_node.deploy.form.volcengine_alb_listener_id.tooltip": "这是什么?请参阅 <a href=\"https://console.volcengine.com/alb\" target=\"_blank\">https://console.volcengine.com/alb</a>",
|
||||||
"workflow_node.deploy.form.volcengine_alb_snidomain.label": "火山引擎 ALB 扩展域名(可选)",
|
"workflow_node.deploy.form.volcengine_alb_snidomain.label": "火山引擎 ALB 扩展域名(可选)",
|
||||||
"workflow_node.deploy.form.volcengine_alb_snidomain.placeholder": "请输入火山引擎 ALB 扩展域名(支持泛域名)",
|
"workflow_node.deploy.form.volcengine_alb_snidomain.placeholder": "请输入火山引擎 ALB 扩展域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.volcengine_alb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://console.volcengine.com/alb\" target=\"_blank\">https://console.volcengine.com/alb</a><br><br>不填写时,将替换监听器的默认证书。",
|
"workflow_node.deploy.form.volcengine_alb_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://console.volcengine.com/alb\" target=\"_blank\">https://console.volcengine.com/alb</a><br><br>不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
|
||||||
"workflow_node.deploy.form.volcengine_cdn_domain.label": "火山引擎 CDN 加速域名",
|
"workflow_node.deploy.form.volcengine_cdn_domain.label": "火山引擎 CDN 加速域名",
|
||||||
"workflow_node.deploy.form.volcengine_cdn_domain.placeholder": "请输入火山引擎 CDN 加速域名(支持泛域名)",
|
"workflow_node.deploy.form.volcengine_cdn_domain.placeholder": "请输入火山引擎 CDN 加速域名(支持泛域名)",
|
||||||
"workflow_node.deploy.form.volcengine_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://console.volcengine.com/cdn/homepage\" target=\"_blank\">https://console.volcengine.com/cdn/homepage</a>",
|
"workflow_node.deploy.form.volcengine_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://console.volcengine.com/cdn/homepage\" target=\"_blank\">https://console.volcengine.com/cdn/homepage</a>",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user