mirror of
https://github.com/usual2970/certimate.git
synced 2025-10-05 05:54:53 +00:00
feat: add cdnfly deployer
This commit is contained in:
BIN
ui/public/imgs/providers/cdnfly.png
Normal file
BIN
ui/public/imgs/providers/cdnfly.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
@@ -18,6 +18,7 @@ import AccessFormBaishanConfig from "./AccessFormBaishanConfig";
|
||||
import AccessFormBaotaPanelConfig from "./AccessFormBaotaPanelConfig";
|
||||
import AccessFormBytePlusConfig from "./AccessFormBytePlusConfig";
|
||||
import AccessFormCacheFlyConfig from "./AccessFormCacheFlyConfig";
|
||||
import AccessFormCdnflyConfig from "./AccessFormCdnflyConfig";
|
||||
import AccessFormCloudflareConfig from "./AccessFormCloudflareConfig";
|
||||
import AccessFormClouDNSConfig from "./AccessFormClouDNSConfig";
|
||||
import AccessFormDogeCloudConfig from "./AccessFormDogeCloudConfig";
|
||||
@@ -112,6 +113,8 @@ const AccessForm = forwardRef<AccessFormInstance, AccessFormProps>(({ className,
|
||||
return <AccessFormBytePlusConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.CACHEFLY:
|
||||
return <AccessFormCacheFlyConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.CDNFLY:
|
||||
return <AccessFormCdnflyConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.CLOUDFLARE:
|
||||
return <AccessFormCloudflareConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.CLOUDNS:
|
||||
|
87
ui/src/components/access/AccessFormCdnflyConfig.tsx
Normal file
87
ui/src/components/access/AccessFormCdnflyConfig.tsx
Normal file
@@ -0,0 +1,87 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import { type AccessConfigForCdnfly } from "@/domain/access";
|
||||
|
||||
type AccessFormCdnflyConfigFieldValues = Nullish<AccessConfigForCdnfly>;
|
||||
|
||||
export type AccessFormCdnflyConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: AccessFormCdnflyConfigFieldValues;
|
||||
onValuesChange?: (values: AccessFormCdnflyConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): AccessFormCdnflyConfigFieldValues => {
|
||||
return {
|
||||
apiUrl: "http://<your-ipaddr>:88/",
|
||||
apiKey: "",
|
||||
apiSecret: "",
|
||||
};
|
||||
};
|
||||
|
||||
const AccessFormCdnflyConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: AccessFormCdnflyConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
apiUrl: z.string().url(t("common.errmsg.url_invalid")),
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.cdnfly_api_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim(),
|
||||
apiSecret: z
|
||||
.string()
|
||||
.min(1, t("access.form.cdnfly_api_secret.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim(),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
||||
const handleFormChange = (_: unknown, values: z.infer<typeof formSchema>) => {
|
||||
onValuesChange?.(values);
|
||||
};
|
||||
|
||||
return (
|
||||
<Form
|
||||
form={formInst}
|
||||
disabled={disabled}
|
||||
initialValues={initialValues ?? initFormModel()}
|
||||
layout="vertical"
|
||||
name={formName}
|
||||
onValuesChange={handleFormChange}
|
||||
>
|
||||
<Form.Item
|
||||
name="apiUrl"
|
||||
label={t("access.form.cdnfly_api_url.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.cdnfly_api_url.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("access.form.cdnfly_api_url.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="apiKey"
|
||||
label={t("access.form.cdnfly_api_key.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.cdnfly_api_key.tooltip") }}></span>}
|
||||
>
|
||||
<Input autoComplete="new-password" placeholder={t("access.form.cdnfly_api_key.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="apiSecret"
|
||||
label={t("access.form.cdnfly_api_secret.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.cdnfly_api_secret.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.cdnfly_api_secret.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default AccessFormCdnflyConfig;
|
@@ -31,6 +31,7 @@ import DeployNodeConfigFormBaishanCDNConfig from "./DeployNodeConfigFormBaishanC
|
||||
import DeployNodeConfigFormBaotaPanelConsoleConfig from "./DeployNodeConfigFormBaotaPanelConsoleConfig";
|
||||
import DeployNodeConfigFormBaotaPanelSiteConfig from "./DeployNodeConfigFormBaotaPanelSiteConfig";
|
||||
import DeployNodeConfigFormBytePlusCDNConfig from "./DeployNodeConfigFormBytePlusCDNConfig";
|
||||
import DeployNodeConfigFormCdnflyConfig from "./DeployNodeConfigFormCdnflyConfig";
|
||||
import DeployNodeConfigFormDogeCloudCDNConfig from "./DeployNodeConfigFormDogeCloudCDNConfig";
|
||||
import DeployNodeConfigFormEdgioApplicationsConfig from "./DeployNodeConfigFormEdgioApplicationsConfig";
|
||||
import DeployNodeConfigFormGcoreCDNConfig from "./DeployNodeConfigFormGcoreCDNConfig";
|
||||
@@ -163,6 +164,8 @@ const DeployNodeConfigForm = forwardRef<DeployNodeConfigFormInstance, DeployNode
|
||||
return <DeployNodeConfigFormBaotaPanelSiteConfig {...nestedFormProps} />;
|
||||
case DEPLOY_PROVIDERS.BYTEPLUS_CDN:
|
||||
return <DeployNodeConfigFormBytePlusCDNConfig {...nestedFormProps} />;
|
||||
case DEPLOY_PROVIDERS.CDNFLY:
|
||||
return <DeployNodeConfigFormCdnflyConfig {...nestedFormProps} />;
|
||||
case DEPLOY_PROVIDERS.DOGECLOUD_CDN:
|
||||
return <DeployNodeConfigFormDogeCloudCDNConfig {...nestedFormProps} />;
|
||||
case DEPLOY_PROVIDERS.EDGIO_APPLICATIONS:
|
||||
@@ -297,7 +300,7 @@ const DeployNodeConfigForm = forwardRef<DeployNodeConfigFormInstance, DeployNode
|
||||
<Form.Item name="provider" label={t("workflow_node.deploy.form.provider.label")} rules={[formRule]}>
|
||||
<DeployProviderSelect
|
||||
allowClear
|
||||
disabled
|
||||
disabled={!!initialValues?.provider}
|
||||
placeholder={t("workflow_node.deploy.form.provider.placeholder")}
|
||||
showSearch
|
||||
onSelect={handleProviderSelect}
|
||||
|
@@ -5,7 +5,7 @@ import { z } from "zod";
|
||||
|
||||
type DeployNodeConfigFormAliyunESAConfigFieldValues = Nullish<{
|
||||
region: string;
|
||||
siteId: string;
|
||||
siteId: string | number;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormAliyunESAConfigProps = {
|
||||
@@ -34,10 +34,9 @@ const DeployNodeConfigFormAliyunESAConfig = ({
|
||||
.string({ message: t("workflow_node.deploy.form.aliyun_esa_region.placeholder") })
|
||||
.nonempty(t("workflow_node.deploy.form.aliyun_esa_region.placeholder"))
|
||||
.trim(),
|
||||
siteId: z
|
||||
.string({ message: t("workflow_node.deploy.form.aliyun_esa_site_id.placeholder") })
|
||||
.regex(/^[1-9]\d*$/, t("workflow_node.deploy.form.aliyun_esa_site_id.placeholder"))
|
||||
.trim(),
|
||||
siteId: z.union([z.string(), z.number()]).refine((v) => {
|
||||
return /^\d+$/.test(v + "") && +v > 0;
|
||||
}, t("workflow_node.deploy.form.aliyun_esa_site_id.placeholder")),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
||||
@@ -69,7 +68,7 @@ const DeployNodeConfigFormAliyunESAConfig = ({
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.aliyun_esa_site_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.aliyun_esa_site_id.placeholder")} />
|
||||
<Input type="number" placeholder={t("workflow_node.deploy.form.aliyun_esa_site_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
|
@@ -0,0 +1,89 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input, Select } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import Show from "@/components/Show";
|
||||
|
||||
type DeployNodeConfigFormCdnflyConfigFieldValues = Nullish<{
|
||||
resourceType: string;
|
||||
certificateId?: string | number;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormCdnflyConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: DeployNodeConfigFormCdnflyConfigFieldValues;
|
||||
onValuesChange?: (values: DeployNodeConfigFormCdnflyConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const RESOURCE_TYPE_SITE = "site" as const;
|
||||
const RESOURCE_TYPE_CERTIFICATE = "certificate" as const;
|
||||
|
||||
const initFormModel = (): DeployNodeConfigFormCdnflyConfigFieldValues => {
|
||||
return {
|
||||
resourceType: RESOURCE_TYPE_SITE,
|
||||
};
|
||||
};
|
||||
|
||||
const DeployNodeConfigFormCdnflyConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: DeployNodeConfigFormCdnflyConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
resourceType: z.union([z.literal(RESOURCE_TYPE_SITE), z.literal(RESOURCE_TYPE_CERTIFICATE)], {
|
||||
message: t("workflow_node.deploy.form.cdnfly_resource_type.placeholder"),
|
||||
}),
|
||||
siteId: z.union([z.string(), z.number().int()]).refine((v) => {
|
||||
if (fieldResourceType !== RESOURCE_TYPE_SITE) return true;
|
||||
return /^\d+$/.test(v + "") && +v > 0;
|
||||
}, t("workflow_node.deploy.form.cdnfly_site_id.placeholder")),
|
||||
certificateId: z.union([z.string(), z.number().int()]).refine((v) => {
|
||||
if (fieldResourceType !== RESOURCE_TYPE_CERTIFICATE) return true;
|
||||
return /^\d+$/.test(v + "") && +v > 0;
|
||||
}, t("workflow_node.deploy.form.cdnfly_certificate_id.placeholder")),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
||||
const fieldResourceType = Form.useWatch("resourceType", formInst);
|
||||
|
||||
const handleFormChange = (_: unknown, values: z.infer<typeof formSchema>) => {
|
||||
onValuesChange?.(values);
|
||||
};
|
||||
|
||||
return (
|
||||
<Form
|
||||
form={formInst}
|
||||
disabled={disabled}
|
||||
initialValues={initialValues ?? initFormModel()}
|
||||
layout="vertical"
|
||||
name={formName}
|
||||
onValuesChange={handleFormChange}
|
||||
>
|
||||
<Form.Item name="resourceType" label={t("workflow_node.deploy.form.cdnfly_resource_type.label")} rules={[formRule]}>
|
||||
<Select placeholder={t("workflow_node.deploy.form.cdnfly_resource_type.placeholder")}>
|
||||
<Select.Option key={RESOURCE_TYPE_SITE} value={RESOURCE_TYPE_SITE}>
|
||||
{t("workflow_node.deploy.form.cdnfly_resource_type.option.site.label")}
|
||||
</Select.Option>
|
||||
<Select.Option key={RESOURCE_TYPE_CERTIFICATE} value={RESOURCE_TYPE_CERTIFICATE}>
|
||||
{t("workflow_node.deploy.form.cdnfly_resource_type.option.certificate.label")}
|
||||
</Select.Option>
|
||||
</Select>
|
||||
</Form.Item>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_SITE}>
|
||||
<Form.Item name="siteId" label={t("workflow_node.deploy.form.cdnfly_site_id.label")} rules={[formRule]}>
|
||||
<Input type="number" placeholder={t("workflow_node.deploy.form.cdnfly_site_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_CERTIFICATE}>
|
||||
<Form.Item name="certificateId" label={t("workflow_node.deploy.form.cdnfly_certificate_id.label")} rules={[formRule]}>
|
||||
<Input type="number" placeholder={t("workflow_node.deploy.form.cdnfly_certificate_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeployNodeConfigFormCdnflyConfig;
|
@@ -4,7 +4,7 @@ import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
type DeployNodeConfigFormGcoreCDNConfigFieldValues = Nullish<{
|
||||
resourceId?: string;
|
||||
resourceId?: string | number;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormGcoreCDNConfigProps = {
|
||||
@@ -25,9 +25,9 @@ const DeployNodeConfigFormGcoreCDNConfig = ({ form: formInst, formName, disabled
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
resourceId: z
|
||||
.string({ message: t("workflow_node.deploy.form.gcore_cdn_certificate_id.placeholder") })
|
||||
.regex(/^\d+$/, t("workflow_node.deploy.form.gcore_cdn_certificate_id.placeholder")),
|
||||
resourceId: z.union([z.string(), z.number()]).refine((v) => {
|
||||
return /^\d+$/.test(v + "") && +v > 0;
|
||||
}, t("workflow_node.deploy.form.gcore_cdn_certificate_id.placeholder")),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
||||
@@ -50,7 +50,7 @@ const DeployNodeConfigFormGcoreCDNConfig = ({ form: formInst, formName, disabled
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.gcore_cdn_resource_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.gcore_cdn_resource_id.placeholder")} />
|
||||
<Input type="number" placeholder={t("workflow_node.deploy.form.gcore_cdn_resource_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
|
@@ -7,7 +7,7 @@ import Show from "@/components/Show";
|
||||
|
||||
type DeployNodeConfigFormSafeLineConfigFieldValues = Nullish<{
|
||||
resourceType: string;
|
||||
certificateId?: string;
|
||||
certificateId?: string | number;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormSafeLineConfigProps = {
|
||||
@@ -34,19 +34,10 @@ const DeployNodeConfigFormSafeLineConfig = ({ form: formInst, formName, disabled
|
||||
resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, {
|
||||
message: t("workflow_node.deploy.form.safeline_resource_type.placeholder"),
|
||||
}),
|
||||
region: z
|
||||
.string({ message: t("workflow_node.deploy.form.safeline_region.placeholder") })
|
||||
.nonempty(t("workflow_node.deploy.form.safeline_region.placeholder"))
|
||||
.trim(),
|
||||
certificateId: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim()
|
||||
.nullish()
|
||||
.refine((v) => {
|
||||
if (fieldResourceType !== RESOURCE_TYPE_CERTIFICATE) return true;
|
||||
return /^\d+$/.test(v!);
|
||||
}, t("workflow_node.deploy.form.safeline_certificate_id.placeholder")),
|
||||
certificateId: z.union([z.string(), z.number().int()]).refine((v) => {
|
||||
if (fieldResourceType !== RESOURCE_TYPE_CERTIFICATE) return true;
|
||||
return /^\d+$/.test(v + "") && +v > 0;
|
||||
}, t("workflow_node.deploy.form.safeline_certificate_id.placeholder")),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
||||
@@ -75,7 +66,7 @@ const DeployNodeConfigFormSafeLineConfig = ({ form: formInst, formName, disabled
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_CERTIFICATE}>
|
||||
<Form.Item name="certificateId" label={t("workflow_node.deploy.form.safeline_certificate_id.label")} rules={[formRule]}>
|
||||
<Input placeholder={t("workflow_node.deploy.form.safeline_certificate_id.placeholder")} />
|
||||
<Input type="number" placeholder={t("workflow_node.deploy.form.safeline_certificate_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
|
@@ -15,6 +15,7 @@ export interface AccessModel extends BaseModel {
|
||||
| AccessConfigForBaotaPanel
|
||||
| AccessConfigForBytePlus
|
||||
| AccessConfigForCacheFly
|
||||
| AccessConfigForCdnfly
|
||||
| AccessConfigForCloudflare
|
||||
| AccessConfigForClouDNS
|
||||
| AccessConfigForDogeCloud
|
||||
@@ -88,6 +89,12 @@ export type AccessConfigForCacheFly = {
|
||||
apiToken: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForCdnfly = {
|
||||
apiUrl: string;
|
||||
apiKey: string;
|
||||
apiSecret: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForCloudflare = {
|
||||
dnsApiToken: string;
|
||||
};
|
||||
|
@@ -13,6 +13,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
|
||||
BAOTAPANEL: "baotapanel",
|
||||
BYTEPLUS: "byteplus",
|
||||
CACHEFLY: "cachefly",
|
||||
CDNFLY: "cdnfly",
|
||||
CLOUDFLARE: "cloudflare",
|
||||
CLOUDNS: "cloudns",
|
||||
DOGECLOUD: "dogecloud",
|
||||
@@ -79,6 +80,7 @@ export const accessProvidersMap: Map<AccessProvider["type"] | string, AccessProv
|
||||
[ACCESS_PROVIDERS.SAFELINE, "provider.safeline", "/imgs/providers/safeline.svg", [ACCESS_USAGES.DEPLOY]],
|
||||
[ACCESS_PROVIDERS.BAOTAPANEL, "provider.baotapanel", "/imgs/providers/baotapanel.svg", [ACCESS_USAGES.DEPLOY]],
|
||||
[ACCESS_PROVIDERS.CACHEFLY, "provider.cachefly", "/imgs/providers/cachefly.png", [ACCESS_USAGES.DEPLOY]],
|
||||
[ACCESS_PROVIDERS.CDNFLY, "provider.cdnfly", "/imgs/providers/cdnfly.png", [ACCESS_USAGES.DEPLOY]],
|
||||
[ACCESS_PROVIDERS.EDGIO, "provider.edgio", "/imgs/providers/edgio.svg", [ACCESS_USAGES.DEPLOY]],
|
||||
[ACCESS_PROVIDERS.AZURE, "provider.azure", "/imgs/providers/azure.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.CLOUDFLARE, "provider.cloudflare", "/imgs/providers/cloudflare.svg", [ACCESS_USAGES.APPLY]],
|
||||
@@ -203,6 +205,7 @@ export const DEPLOY_PROVIDERS = Object.freeze({
|
||||
BAOTAPANEL_SITE: `${ACCESS_PROVIDERS.BAOTAPANEL}-site`,
|
||||
BYTEPLUS_CDN: `${ACCESS_PROVIDERS.BYTEPLUS}-cdn`,
|
||||
CACHEFLY: `${ACCESS_PROVIDERS.CACHEFLY}`,
|
||||
CDNFLY: `${ACCESS_PROVIDERS.CDNFLY}`,
|
||||
DOGECLOUD_CDN: `${ACCESS_PROVIDERS.DOGECLOUD}-cdn`,
|
||||
EDGIO_APPLICATIONS: `${ACCESS_PROVIDERS.EDGIO}-applications`,
|
||||
GCORE_CDN: `${ACCESS_PROVIDERS.GCORE}-cdn`,
|
||||
@@ -304,6 +307,7 @@ export const deployProvidersMap: Map<DeployProvider["type"] | string, DeployProv
|
||||
[DEPLOY_PROVIDERS.UCLOUD_UCDN, "provider.ucloud.ucdn", DEPLOY_CATEGORIES.CDN],
|
||||
[DEPLOY_PROVIDERS.AWS_CLOUDFRONT, "provider.aws.cloudfront", DEPLOY_CATEGORIES.CDN],
|
||||
[DEPLOY_PROVIDERS.CACHEFLY, "provider.cachefly", DEPLOY_CATEGORIES.CDN],
|
||||
[DEPLOY_PROVIDERS.CDNFLY, "provider.cdnfly", DEPLOY_CATEGORIES.CDN],
|
||||
[DEPLOY_PROVIDERS.EDGIO_APPLICATIONS, "provider.edgio.applications", DEPLOY_CATEGORIES.WEBSITE],
|
||||
[DEPLOY_PROVIDERS.GCORE_CDN, "provider.gcore.cdn", DEPLOY_CATEGORIES.CDN],
|
||||
[DEPLOY_PROVIDERS.BAOTAPANEL_SITE, "provider.baotapanel.site", DEPLOY_CATEGORIES.WEBSITE],
|
||||
|
@@ -82,6 +82,15 @@
|
||||
"access.form.cachefly_api_token.label": "CacheFly API token",
|
||||
"access.form.cachefly_api_token.placeholder": "Please enter CacheFly API token",
|
||||
"access.form.cachefly_api_token.tooltip": "For more information, see <a href=\"https://kb.cachefly.com/kb/guide/en/generating-tokens-and-keys-Oll9Irt5TI/Steps/2460228\" target=\"_blank\">https://kb.cachefly.com/kb/guide/en/generating-tokens-and-keys-Oll9Irt5TI/Steps/2460228</a>",
|
||||
"access.form.cdnfly_api_url.label": "Cdnfly API URL",
|
||||
"access.form.cdnfly_api_url.placeholder": "Please enter Cdnfly API URL",
|
||||
"access.form.cdnfly_api_url.tooltip": "For more information, see <a href=\"https://doc.cdnfly.cn/anzhuangshuoming.html\" target=\"_blank\">https://doc.cdnfly.cn/anzhuangshuoming.html</a>",
|
||||
"access.form.cdnfly_api_key.label": "Cdnfly user API key",
|
||||
"access.form.cdnfly_api_key.placeholder": "Please enter Cdnfly user API key",
|
||||
"access.form.cdnfly_api_key.tooltip": "For more information, see <a href=\"https://doc.cdnfly.cn/shiyongjieshao.html\" target=\"_blank\">https://doc.cdnfly.cn/shiyongjieshao.html</a>",
|
||||
"access.form.cdnfly_api_secret.label": "Cdnfly user API secret",
|
||||
"access.form.cdnfly_api_secret.placeholder": "Please enter Cdnfly user API secret",
|
||||
"access.form.cdnfly_api_secret.tooltip": "For more information, see <a href=\"https://doc.cdnfly.cn/shiyongjieshao.html\" target=\"_blank\">https://doc.cdnfly.cn/shiyongjieshao.html</a>",
|
||||
"access.form.cloudflare_dns_api_token.label": "Cloudflare API token",
|
||||
"access.form.cloudflare_dns_api_token.placeholder": "Please enter Cloudflare API token",
|
||||
"access.form.cloudflare_dns_api_token.tooltip": "For more information, see <a href=\"https://developers.cloudflare.com/fundamentals/api/get-started/create-token/\" target=\"_blank\">https://developers.cloudflare.com/fundamentals/api/get-started/create-token/</a>",
|
||||
|
@@ -200,6 +200,14 @@
|
||||
"workflow_node.deploy.form.byteplus_cdn_domain.label": "BytePlus CDN domain",
|
||||
"workflow_node.deploy.form.byteplus_cdn_domain.placeholder": "Please enter BytePlus CDN domain name",
|
||||
"workflow_node.deploy.form.byteplus_cdn_domain.tooltip": "For more information, see <a href=\"https://console.byteplus.com/cdn\" target=\"_blank\">https://console.byteplus.com/cdn</a>",
|
||||
"workflow_node.deploy.form.cdnfly_resource_type.label": "Resource type",
|
||||
"workflow_node.deploy.form.cdnfly_resource_type.placeholder": "Please select resource type",
|
||||
"workflow_node.deploy.form.cdnfly_resource_type.option.site.label": "Site",
|
||||
"workflow_node.deploy.form.cdnfly_resource_type.option.certificate.label": "Certificate",
|
||||
"workflow_node.deploy.form.cdnfly_site_id.label": "Cdnfly site ID",
|
||||
"workflow_node.deploy.form.cdnfly_site_id.placeholder": "Please enter Cdnfly site ID",
|
||||
"workflow_node.deploy.form.cdnfly_certificate_id.label": "Cdnfly certificate ID",
|
||||
"workflow_node.deploy.form.cdnfly_certificate_id.placeholder": "Please enter Cdnfly certificate ID",
|
||||
"workflow_node.deploy.form.dogecloud_cdn_domain.label": "Doge Cloud CDN domain",
|
||||
"workflow_node.deploy.form.dogecloud_cdn_domain.placeholder": "Please enter Doge Cloud CDN domain name",
|
||||
"workflow_node.deploy.form.dogecloud_cdn_domain.tooltip": "For more information, see <a href=\"https://console.dogecloud.com/\" target=\"_blank\">https://console.dogecloud.com/</a>",
|
||||
|
@@ -82,6 +82,15 @@
|
||||
"access.form.cachefly_api_token.label": "CacheFly API Token",
|
||||
"access.form.cachefly_api_token.placeholder": "请输入 CacheFly API Token",
|
||||
"access.form.cachefly_api_token.tooltip": "这是什么?请参阅 <a href=\"https://kb.cachefly.com/kb/guide/en/generating-tokens-and-keys-Oll9Irt5TI/Steps/2460228\" target=\"_blank\">https://kb.cachefly.com/kb/guide/en/generating-tokens-and-keys-Oll9Irt5TI/Steps/2460228</a>",
|
||||
"access.form.cdnfly_api_url.label": "Cdnfly API URL",
|
||||
"access.form.cdnfly_api_url.placeholder": "请输入 Cdnfly API URL",
|
||||
"access.form.cdnfly_api_url.tooltip": "这是什么?请参阅 <a href=\"https://doc.cdnfly.cn/anzhuangshuoming.html\" target=\"_blank\">https://doc.cdnfly.cn/anzhuangshuoming.html</a>",
|
||||
"access.form.cdnfly_api_key.label": "Cdnfly 用户端 API Key",
|
||||
"access.form.cdnfly_api_key.placeholder": "请输入 Cdnfly 用户端 API Key",
|
||||
"access.form.cdnfly_api_key.tooltip": "这是什么?请参阅 <a href=\"https://doc.cdnfly.cn/shiyongjieshao.html\" target=\"_blank\">https://doc.cdnfly.cn/shiyongjieshao.html</a>",
|
||||
"access.form.cdnfly_api_secret.label": "Cdnfly 用户端 API Secret",
|
||||
"access.form.cdnfly_api_secret.placeholder": "请输入 Cdnfly 用户端 API Secret",
|
||||
"access.form.cdnfly_api_secret.tooltip": "这是什么?请参阅 <a href=\"https://doc.cdnfly.cn/shiyongjieshao.html\" target=\"_blank\">https://doc.cdnfly.cn/shiyongjieshao.html</a>",
|
||||
"access.form.cloudflare_dns_api_token.label": "Cloudflare API Token",
|
||||
"access.form.cloudflare_dns_api_token.placeholder": "请输入 Cloudflare API Token",
|
||||
"access.form.cloudflare_dns_api_token.tooltip": "这是什么?请参阅 <a href=\"https://developers.cloudflare.com/fundamentals/api/get-started/create-token/\" target=\"_blank\">https://developers.cloudflare.com/fundamentals/api/get-started/create-token/</a>",
|
||||
|
@@ -200,6 +200,14 @@
|
||||
"workflow_node.deploy.form.byteplus_cdn_domain.label": "BytePlus CDN 域名(支持泛域名)",
|
||||
"workflow_node.deploy.form.byteplus_cdn_domain.placeholder": "请输入 BytePlus CDN 域名",
|
||||
"workflow_node.deploy.form.byteplus_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://console.byteplus.com/cdn\" target=\"_blank\">https://console.byteplus.com/cdn</a>",
|
||||
"workflow_node.deploy.form.cdnfly_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.cdnfly_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.cdnfly_resource_type.option.site.label": "替换指定网站的证书",
|
||||
"workflow_node.deploy.form.cdnfly_resource_type.option.certificate.label": "替换指定证书",
|
||||
"workflow_node.deploy.form.cdnfly_site_id.label": "Cdnfly 网站 ID",
|
||||
"workflow_node.deploy.form.cdnfly_site_id.placeholder": "请输入 Cdnfly 网站 ID",
|
||||
"workflow_node.deploy.form.cdnfly_certificate_id.label": "Cdnfly 证书 ID",
|
||||
"workflow_node.deploy.form.cdnfly_certificate_id.placeholder": "请输入 Cdnfly 证书 ID",
|
||||
"workflow_node.deploy.form.dogecloud_cdn_domain.label": "多吉云 CDN 加速域名",
|
||||
"workflow_node.deploy.form.dogecloud_cdn_domain.placeholder": "请输入多吉云 CDN 加速域名",
|
||||
"workflow_node.deploy.form.dogecloud_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://console.dogecloud.com\" target=\"_blank\">https://console.dogecloud.com</a>",
|
||||
|
Reference in New Issue
Block a user