@@ -23,6 +23,7 @@ import AccessFormCdnflyConfig from "./AccessFormCdnflyConfig";
|
||||
import AccessFormCloudflareConfig from "./AccessFormCloudflareConfig";
|
||||
import AccessFormClouDNSConfig from "./AccessFormClouDNSConfig";
|
||||
import AccessFormCMCCCloudConfig from "./AccessFormCMCCCloudConfig";
|
||||
import AccessFormDeSECConfig from "./AccessFormDeSECConfig";
|
||||
import AccessFormDNSLAConfig from "./AccessFormDNSLAConfig";
|
||||
import AccessFormDogeCloudConfig from "./AccessFormDogeCloudConfig";
|
||||
import AccessFormDynv6Config from "./AccessFormDynv6Config";
|
||||
@@ -38,6 +39,7 @@ import AccessFormNamecheapConfig from "./AccessFormNamecheapConfig";
|
||||
import AccessFormNameDotComConfig from "./AccessFormNameDotComConfig";
|
||||
import AccessFormNameSiloConfig from "./AccessFormNameSiloConfig";
|
||||
import AccessFormNS1Config from "./AccessFormNS1Config";
|
||||
import AccessFormPorkbunConfig from "./AccessFormPorkbunConfig";
|
||||
import AccessFormPowerDNSConfig from "./AccessFormPowerDNSConfig";
|
||||
import AccessFormQiniuConfig from "./AccessFormQiniuConfig";
|
||||
import AccessFormRainYunConfig from "./AccessFormRainYunConfig";
|
||||
@@ -46,6 +48,7 @@ import AccessFormSSHConfig from "./AccessFormSSHConfig";
|
||||
import AccessFormTencentCloudConfig from "./AccessFormTencentCloudConfig";
|
||||
import AccessFormUCloudConfig from "./AccessFormUCloudConfig";
|
||||
import AccessFormUpyunConfig from "./AccessFormUpyunConfig";
|
||||
import AccessFormVercelConfig from "./AccessFormVercelConfig";
|
||||
import AccessFormVolcEngineConfig from "./AccessFormVolcEngineConfig";
|
||||
import AccessFormWebhookConfig from "./AccessFormWebhookConfig";
|
||||
import AccessFormWestcnConfig from "./AccessFormWestcnConfig";
|
||||
@@ -130,6 +133,8 @@ const AccessForm = forwardRef<AccessFormInstance, AccessFormProps>(({ className,
|
||||
return <AccessFormClouDNSConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.CMCCCLOUD:
|
||||
return <AccessFormCMCCCloudConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.DESEC:
|
||||
return <AccessFormDeSECConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.DNSLA:
|
||||
return <AccessFormDNSLAConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.DOGECLOUD:
|
||||
@@ -160,6 +165,8 @@ const AccessForm = forwardRef<AccessFormInstance, AccessFormProps>(({ className,
|
||||
return <AccessFormNameSiloConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.NS1:
|
||||
return <AccessFormNS1Config {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.PORKBUN:
|
||||
return <AccessFormPorkbunConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.POWERDNS:
|
||||
return <AccessFormPowerDNSConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.QINIU:
|
||||
@@ -176,6 +183,8 @@ const AccessForm = forwardRef<AccessFormInstance, AccessFormProps>(({ className,
|
||||
return <AccessFormUCloudConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.UPYUN:
|
||||
return <AccessFormUpyunConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.VERCEL:
|
||||
return <AccessFormVercelConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.VOLCENGINE:
|
||||
return <AccessFormVolcEngineConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.WEBHOOK:
|
||||
|
||||
61
ui/src/components/access/AccessFormDeSECConfig.tsx
Normal file
61
ui/src/components/access/AccessFormDeSECConfig.tsx
Normal file
@@ -0,0 +1,61 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import { type AccessConfigForDeSEC } from "@/domain/access";
|
||||
|
||||
type AccessFormDeSECConfigFieldValues = Nullish<AccessConfigForDeSEC>;
|
||||
|
||||
export type AccessFormDeSECConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: AccessFormDeSECConfigFieldValues;
|
||||
onValuesChange?: (values: AccessFormDeSECConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): AccessFormDeSECConfigFieldValues => {
|
||||
return {
|
||||
token: "",
|
||||
};
|
||||
};
|
||||
|
||||
const AccessFormDeSECConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: AccessFormDeSECConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
token: z
|
||||
.string()
|
||||
.min(1, t("access.form.desec_token.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.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="token"
|
||||
label={t("access.form.desec_token.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.desec_token.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.desec_token.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default AccessFormDeSECConfig;
|
||||
76
ui/src/components/access/AccessFormPorkbunConfig.tsx
Normal file
76
ui/src/components/access/AccessFormPorkbunConfig.tsx
Normal file
@@ -0,0 +1,76 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import { type AccessConfigForPorkbun } from "@/domain/access";
|
||||
|
||||
type AccessFormPorkbunConfigFieldValues = Nullish<AccessConfigForPorkbun>;
|
||||
|
||||
export type AccessFormPorkbunConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: AccessFormPorkbunConfigFieldValues;
|
||||
onValuesChange?: (values: AccessFormPorkbunConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): AccessFormPorkbunConfigFieldValues => {
|
||||
return {
|
||||
apiKey: "",
|
||||
secretApiKey: "",
|
||||
};
|
||||
};
|
||||
|
||||
const AccessFormPorkbunConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: AccessFormPorkbunConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.porkbun_api_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.trim(),
|
||||
secretApiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.porkbun_secret_api_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.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="apiKey"
|
||||
label={t("access.form.porkbun_api_key.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.porkbun_api_key.tooltip") }}></span>}
|
||||
>
|
||||
<Input autoComplete="new-password" placeholder={t("access.form.porkbun_api_key.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="secretApiKey"
|
||||
label={t("access.form.porkbun_secret_api_key.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.porkbun_secret_api_key.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.porkbun_secret_api_key.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default AccessFormPorkbunConfig;
|
||||
@@ -28,9 +28,9 @@ const AccessFormUCloudConfig = ({ form: formInst, formName, disabled, initialVal
|
||||
const formSchema = z.object({
|
||||
privateKey: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(1, t("access.form.ucloud_private_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim(),
|
||||
publicKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.ucloud_public_key.placeholder"))
|
||||
|
||||
75
ui/src/components/access/AccessFormVercelConfig.tsx
Normal file
75
ui/src/components/access/AccessFormVercelConfig.tsx
Normal file
@@ -0,0 +1,75 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import { type AccessConfigForVercel } from "@/domain/access";
|
||||
|
||||
type AccessFormVercelConfigFieldValues = Nullish<AccessConfigForVercel>;
|
||||
|
||||
export type AccessFormVercelConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: AccessFormVercelConfigFieldValues;
|
||||
onValuesChange?: (values: AccessFormVercelConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): AccessFormVercelConfigFieldValues => {
|
||||
return {
|
||||
apiAccessToken: "",
|
||||
};
|
||||
};
|
||||
|
||||
const AccessFormVercelConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: AccessFormVercelConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
apiAccessToken: z
|
||||
.string()
|
||||
.min(1, t("access.form.vercel_api_access_token.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.trim(),
|
||||
teamId: z
|
||||
.string()
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.trim()
|
||||
.nullish(),
|
||||
});
|
||||
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="apiAccessToken"
|
||||
label={t("access.form.vercel_api_access_token.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.vercel_api_access_token.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.vercel_api_access_token.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="teamId"
|
||||
label={t("access.form.vercel_team_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.vercel_team_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("access.form.vercel_team_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default AccessFormVercelConfig;
|
||||
@@ -28,9 +28,9 @@ const AccessFormVolcEngineConfig = ({ form: formInst, formName, disabled, initia
|
||||
const formSchema = z.object({
|
||||
accessKeyId: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(1, t("access.form.volcengine_access_key_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim(),
|
||||
secretAccessKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.volcengine_secret_access_key.placeholder"))
|
||||
|
||||
@@ -28,9 +28,9 @@ const AccessFormWestcnConfig = ({ form: formInst, formName, disabled, initialVal
|
||||
const formSchema = z.object({
|
||||
username: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(1, t("access.form.westcn_username.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim(),
|
||||
apiPassword: z
|
||||
.string()
|
||||
.min(1, t("access.form.westcn_api_password.placeholder"))
|
||||
|
||||
@@ -70,6 +70,7 @@ import DeployNodeConfigFormUCloudUCDNConfig from "./DeployNodeConfigFormUCloudUC
|
||||
import DeployNodeConfigFormUCloudUS3Config from "./DeployNodeConfigFormUCloudUS3Config.tsx";
|
||||
import DeployNodeConfigFormUpyunCDNConfig from "./DeployNodeConfigFormUpyunCDNConfig.tsx";
|
||||
import DeployNodeConfigFormUpyunFileConfig from "./DeployNodeConfigFormUpyunFileConfig.tsx";
|
||||
import DeployNodeConfigFormVolcEngineALBConfig from "./DeployNodeConfigFormVolcEngineALBConfig.tsx";
|
||||
import DeployNodeConfigFormVolcEngineCDNConfig from "./DeployNodeConfigFormVolcEngineCDNConfig.tsx";
|
||||
import DeployNodeConfigFormVolcEngineCLBConfig from "./DeployNodeConfigFormVolcEngineCLBConfig.tsx";
|
||||
import DeployNodeConfigFormVolcEngineDCDNConfig from "./DeployNodeConfigFormVolcEngineDCDNConfig.tsx";
|
||||
@@ -258,6 +259,8 @@ const DeployNodeConfigForm = forwardRef<DeployNodeConfigFormInstance, DeployNode
|
||||
return <DeployNodeConfigFormUpyunCDNConfig {...nestedFormProps} />;
|
||||
case DEPLOY_PROVIDERS.UPYUN_FILE:
|
||||
return <DeployNodeConfigFormUpyunFileConfig {...nestedFormProps} />;
|
||||
case DEPLOY_PROVIDERS.VOLCENGINE_ALB:
|
||||
return <DeployNodeConfigFormVolcEngineALBConfig {...nestedFormProps} />;
|
||||
case DEPLOY_PROVIDERS.VOLCENGINE_CDN:
|
||||
return <DeployNodeConfigFormVolcEngineCDNConfig {...nestedFormProps} />;
|
||||
case DEPLOY_PROVIDERS.VOLCENGINE_CLB:
|
||||
|
||||
@@ -38,7 +38,7 @@ const DeployNodeConfigFormAliyunFCConfig = ({ form: formInst, formName, disabled
|
||||
.trim(),
|
||||
domain: z
|
||||
.string({ message: t("workflow_node.deploy.form.aliyun_fc_domain.placeholder") })
|
||||
.refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")),
|
||||
.refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
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";
|
||||
import { validDomainName } from "@/utils/validators";
|
||||
|
||||
type DeployNodeConfigFormVolcEngineALBConfigFieldValues = Nullish<{
|
||||
resourceType: string;
|
||||
region: string;
|
||||
loadbalancerId?: string;
|
||||
listenerId?: string;
|
||||
domain?: string;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormVolcEngineALBConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: DeployNodeConfigFormVolcEngineALBConfigFieldValues;
|
||||
onValuesChange?: (values: DeployNodeConfigFormVolcEngineALBConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const RESOURCE_TYPE_LOADBALANCER = "loadbalancer" as const;
|
||||
const RESOURCE_TYPE_LISTENER = "listener" as const;
|
||||
|
||||
const initFormModel = (): DeployNodeConfigFormVolcEngineALBConfigFieldValues => {
|
||||
return {
|
||||
resourceType: RESOURCE_TYPE_LISTENER,
|
||||
};
|
||||
};
|
||||
|
||||
const DeployNodeConfigFormVolcEngineALBConfig = ({
|
||||
form: formInst,
|
||||
formName,
|
||||
disabled,
|
||||
initialValues,
|
||||
onValuesChange,
|
||||
}: DeployNodeConfigFormVolcEngineALBConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
resourceType: z.union([z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], {
|
||||
message: t("workflow_node.deploy.form.volcengine_alb_resource_type.placeholder"),
|
||||
}),
|
||||
region: z
|
||||
.string({ message: t("workflow_node.deploy.form.volcengine_alb_region.placeholder") })
|
||||
.nonempty(t("workflow_node.deploy.form.volcengine_alb_region.placeholder"))
|
||||
.trim(),
|
||||
loadbalancerId: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim()
|
||||
.nullish()
|
||||
.refine(
|
||||
(v) => ![RESOURCE_TYPE_LOADBALANCER].includes(fieldResourceType) || !!v?.trim(),
|
||||
t("workflow_node.deploy.form.volcengine_alb_loadbalancer_id.placeholder")
|
||||
),
|
||||
listenerId: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim()
|
||||
.nullish()
|
||||
.refine(
|
||||
(v) => ![RESOURCE_TYPE_LISTENER].includes(fieldResourceType) || !!v?.trim(),
|
||||
t("workflow_node.deploy.form.volcengine_alb_listener_id.placeholder")
|
||||
),
|
||||
domain: z
|
||||
.string()
|
||||
.nullish()
|
||||
.refine((v) => {
|
||||
if (![RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER].includes(fieldResourceType)) return true;
|
||||
return !v || validDomainName(v!, { allowWildcard: true });
|
||||
}, t("common.errmsg.domain_invalid")),
|
||||
});
|
||||
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.volcengine_alb_resource_type.label")} rules={[formRule]}>
|
||||
<Select placeholder={t("workflow_node.deploy.form.volcengine_alb_resource_type.placeholder")}>
|
||||
<Select.Option key={RESOURCE_TYPE_LOADBALANCER} value={RESOURCE_TYPE_LOADBALANCER}>
|
||||
{t("workflow_node.deploy.form.volcengine_alb_resource_type.option.loadbalancer.label")}
|
||||
</Select.Option>
|
||||
<Select.Option key={RESOURCE_TYPE_LISTENER} value={RESOURCE_TYPE_LISTENER}>
|
||||
{t("workflow_node.deploy.form.volcengine_alb_resource_type.option.listener.label")}
|
||||
</Select.Option>
|
||||
</Select>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="region"
|
||||
label={t("workflow_node.deploy.form.volcengine_alb_region.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.volcengine_alb_region.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.volcengine_alb_region.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_LOADBALANCER}>
|
||||
<Form.Item
|
||||
name="listenerId"
|
||||
label={t("workflow_node.deploy.form.volcengine_alb_loadbalancer_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.volcengine_alb_loadbalancer_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.volcengine_alb_loadbalancer_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_LISTENER}>
|
||||
<Form.Item
|
||||
name="listenerId"
|
||||
label={t("workflow_node.deploy.form.volcengine_alb_listener_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.volcengine_alb_listener_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.volcengine_alb_listener_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_LOADBALANCER || fieldResourceType === RESOURCE_TYPE_LISTENER}>
|
||||
<Form.Item
|
||||
name="domain"
|
||||
label={t("workflow_node.deploy.form.volcengine_alb_snidomain.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.volcengine_alb_snidomain.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.volcengine_alb_snidomain.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeployNodeConfigFormVolcEngineALBConfig;
|
||||
@@ -10,7 +10,6 @@ type DeployNodeConfigFormVolcEngineCLBConfigFieldValues = Nullish<{
|
||||
region: string;
|
||||
loadbalancerId?: string;
|
||||
listenerId?: string;
|
||||
domain?: string;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormVolcEngineCLBConfigProps = {
|
||||
@@ -21,6 +20,7 @@ export type DeployNodeConfigFormVolcEngineCLBConfigProps = {
|
||||
onValuesChange?: (values: DeployNodeConfigFormVolcEngineCLBConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const RESOURCE_TYPE_LOADBALANCER = "loadbalancer" as const;
|
||||
const RESOURCE_TYPE_LISTENER = "listener" as const;
|
||||
|
||||
const initFormModel = (): DeployNodeConfigFormVolcEngineCLBConfigFieldValues => {
|
||||
@@ -39,11 +39,22 @@ const DeployNodeConfigFormVolcEngineCLBConfig = ({
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
resourceType: z.literal(RESOURCE_TYPE_LISTENER, { message: t("workflow_node.deploy.form.volcengine_clb_resource_type.placeholder") }),
|
||||
resourceType: z.union([z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], {
|
||||
message: t("workflow_node.deploy.form.volcengine_clb_resource_type.placeholder"),
|
||||
}),
|
||||
region: z
|
||||
.string({ message: t("workflow_node.deploy.form.volcengine_clb_region.placeholder") })
|
||||
.nonempty(t("workflow_node.deploy.form.volcengine_clb_region.placeholder"))
|
||||
.trim(),
|
||||
loadbalancerId: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim()
|
||||
.nullish()
|
||||
.refine(
|
||||
(v) => ![RESOURCE_TYPE_LOADBALANCER].includes(fieldResourceType) || !!v?.trim(),
|
||||
t("workflow_node.deploy.form.volcengine_clb_loadbalancer_id.placeholder")
|
||||
),
|
||||
listenerId: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
@@ -73,6 +84,9 @@ const DeployNodeConfigFormVolcEngineCLBConfig = ({
|
||||
>
|
||||
<Form.Item name="resourceType" label={t("workflow_node.deploy.form.volcengine_clb_resource_type.label")} rules={[formRule]}>
|
||||
<Select placeholder={t("workflow_node.deploy.form.volcengine_clb_resource_type.placeholder")}>
|
||||
<Select.Option key={RESOURCE_TYPE_LOADBALANCER} value={RESOURCE_TYPE_LOADBALANCER}>
|
||||
{t("workflow_node.deploy.form.volcengine_clb_resource_type.option.loadbalancer.label")}
|
||||
</Select.Option>
|
||||
<Select.Option key={RESOURCE_TYPE_LISTENER} value={RESOURCE_TYPE_LISTENER}>
|
||||
{t("workflow_node.deploy.form.volcengine_clb_resource_type.option.listener.label")}
|
||||
</Select.Option>
|
||||
@@ -88,6 +102,17 @@ const DeployNodeConfigFormVolcEngineCLBConfig = ({
|
||||
<Input placeholder={t("workflow_node.deploy.form.volcengine_clb_region.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_LOADBALANCER}>
|
||||
<Form.Item
|
||||
name="listenerId"
|
||||
label={t("workflow_node.deploy.form.volcengine_clb_loadbalancer_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.volcengine_clb_loadbalancer_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.volcengine_clb_loadbalancer_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_LISTENER}>
|
||||
<Form.Item
|
||||
name="listenerId"
|
||||
|
||||
@@ -20,6 +20,7 @@ export interface AccessModel extends BaseModel {
|
||||
| AccessConfigForCloudflare
|
||||
| AccessConfigForClouDNS
|
||||
| AccessConfigForCMCCCloud
|
||||
| AccessConfigForDeSEC
|
||||
| AccessConfigForDNSLA
|
||||
| AccessConfigForDogeCloud
|
||||
| AccessConfigForDynv6
|
||||
@@ -34,6 +35,7 @@ export interface AccessModel extends BaseModel {
|
||||
| AccessConfigForNamecheap
|
||||
| AccessConfigForNameDotCom
|
||||
| AccessConfigForNameSilo
|
||||
| AccessConfigForPorkbun
|
||||
| AccessConfigForPowerDNS
|
||||
| AccessConfigForQiniu
|
||||
| AccessConfigForRainYun
|
||||
@@ -42,6 +44,7 @@ export interface AccessModel extends BaseModel {
|
||||
| AccessConfigForTencentCloud
|
||||
| AccessConfigForUCloud
|
||||
| AccessConfigForUpyun
|
||||
| AccessConfigForVercel
|
||||
| AccessConfigForVolcEngine
|
||||
| AccessConfigForWebhook
|
||||
| AccessConfigForWestcn
|
||||
@@ -123,6 +126,10 @@ export type AccessConfigForCMCCCloud = {
|
||||
accessKeySecret: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForDeSEC = {
|
||||
token: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForDNSLA = {
|
||||
apiId: string;
|
||||
apiSecret: string;
|
||||
@@ -190,6 +197,11 @@ export type AccessConfigForNS1 = {
|
||||
apiKey: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForPorkbun = {
|
||||
apiKey: string;
|
||||
secretApiKey: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForPowerDNS = {
|
||||
apiUrl: string;
|
||||
apiKey: string;
|
||||
@@ -235,6 +247,11 @@ export type AccessConfigForUpyun = {
|
||||
password: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForVercel = {
|
||||
apiAccessToken: string;
|
||||
teamId?: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForVolcEngine = {
|
||||
accessKeyId: string;
|
||||
secretAccessKey: string;
|
||||
|
||||
@@ -18,6 +18,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
|
||||
CLOUDFLARE: "cloudflare",
|
||||
CLOUDNS: "cloudns",
|
||||
CMCCCLOUD: "cmcccloud",
|
||||
DESEC: "desec",
|
||||
DNSLA: "dnsla",
|
||||
DOGECLOUD: "dogecloud",
|
||||
DYNV6: "dynv6",
|
||||
@@ -33,6 +34,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
|
||||
NAMEDOTCOM: "namedotcom",
|
||||
NAMESILO: "namesilo",
|
||||
NS1: "ns1",
|
||||
PORKBUN: "porkbun",
|
||||
POWERDNS: "powerdns",
|
||||
QINIU: "qiniu",
|
||||
RAINYUN: "rainyun",
|
||||
@@ -41,6 +43,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
|
||||
TENCENTCLOUD: "tencentcloud",
|
||||
UCLOUD: "ucloud",
|
||||
UPYUN: "upyun",
|
||||
VERCEL: "vercel",
|
||||
VOLCENGINE: "volcengine",
|
||||
WEBHOOK: "webhook",
|
||||
WESTCN: "westcn",
|
||||
@@ -97,6 +100,7 @@ export const accessProvidersMap: Map<AccessProvider["type"] | string, AccessProv
|
||||
|
||||
[ACCESS_PROVIDERS.CLOUDFLARE, "provider.cloudflare", "/imgs/providers/cloudflare.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.CLOUDNS, "provider.cloudns", "/imgs/providers/cloudns.png", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.DESEC, "provider.desec", "/imgs/providers/desec.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.DNSLA, "provider.dnsla", "/imgs/providers/dnsla.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.DYNV6, "provider.dynv6", "/imgs/providers/dynv6.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.GNAME, "provider.gname", "/imgs/providers/gname.png", [ACCESS_USAGES.APPLY]],
|
||||
@@ -105,6 +109,8 @@ export const accessProvidersMap: Map<AccessProvider["type"] | string, AccessProv
|
||||
[ACCESS_PROVIDERS.NAMEDOTCOM, "provider.namedotcom", "/imgs/providers/namedotcom.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.NAMESILO, "provider.namesilo", "/imgs/providers/namesilo.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.NS1, "provider.ns1", "/imgs/providers/ns1.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.PORKBUN, "provider.porkbun", "/imgs/providers/porkbun.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.VERCEL, "provider.vercel", "/imgs/providers/vercel.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.CMCCCLOUD, "provider.cmcccloud", "/imgs/providers/cmcccloud.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.RAINYUN, "provider.rainyun", "/imgs/providers/rainyun.svg", [ACCESS_USAGES.APPLY]],
|
||||
[ACCESS_PROVIDERS.WESTCN, "provider.westcn", "/imgs/providers/westcn.svg", [ACCESS_USAGES.APPLY]],
|
||||
@@ -140,6 +146,7 @@ export const APPLY_DNS_PROVIDERS = Object.freeze({
|
||||
CLOUDFLARE: `${ACCESS_PROVIDERS.CLOUDFLARE}`,
|
||||
CLOUDNS: `${ACCESS_PROVIDERS.CLOUDNS}`,
|
||||
CMCCCLOUD: `${ACCESS_PROVIDERS.CMCCCLOUD}`,
|
||||
DESEC: `${ACCESS_PROVIDERS.DESEC}`,
|
||||
DNSLA: `${ACCESS_PROVIDERS.DNSLA}`,
|
||||
DYNV6: `${ACCESS_PROVIDERS.DYNV6}`,
|
||||
GCORE: `${ACCESS_PROVIDERS.GCORE}`,
|
||||
@@ -153,10 +160,12 @@ export const APPLY_DNS_PROVIDERS = Object.freeze({
|
||||
NAMEDOTCOM: `${ACCESS_PROVIDERS.NAMEDOTCOM}`,
|
||||
NAMESILO: `${ACCESS_PROVIDERS.NAMESILO}`,
|
||||
NS1: `${ACCESS_PROVIDERS.NS1}`,
|
||||
PORKBUN: `${ACCESS_PROVIDERS.PORKBUN}`,
|
||||
POWERDNS: `${ACCESS_PROVIDERS.POWERDNS}`,
|
||||
RAINYUN: `${ACCESS_PROVIDERS.RAINYUN}`,
|
||||
TENCENTCLOUD: `${ACCESS_PROVIDERS.TENCENTCLOUD}`, // 兼容旧值,等同于 `TENCENTCLOUD_DNS`
|
||||
TENCENTCLOUD_DNS: `${ACCESS_PROVIDERS.TENCENTCLOUD}-dns`,
|
||||
VERCEL: `${ACCESS_PROVIDERS.VERCEL}`,
|
||||
VOLCENGINE: `${ACCESS_PROVIDERS.VOLCENGINE}`, // 兼容旧值,等同于 `VOLCENGINE_DNS`
|
||||
VOLCENGINE_DNS: `${ACCESS_PROVIDERS.VOLCENGINE}-dns`,
|
||||
WESTCN: `${ACCESS_PROVIDERS.WESTCN}`,
|
||||
@@ -187,6 +196,7 @@ export const applyDNSProvidersMap: Map<ApplyDNSProvider["type"] | string, ApplyD
|
||||
[APPLY_DNS_PROVIDERS.AZURE_DNS, "provider.azure.dns"],
|
||||
[APPLY_DNS_PROVIDERS.CLOUDFLARE, "provider.cloudflare"],
|
||||
[APPLY_DNS_PROVIDERS.CLOUDNS, "provider.cloudns"],
|
||||
[APPLY_DNS_PROVIDERS.DESEC, "provider.desec"],
|
||||
[APPLY_DNS_PROVIDERS.DNSLA, "provider.dnsla"],
|
||||
[APPLY_DNS_PROVIDERS.DYNV6, "provider.dynv6"],
|
||||
[APPLY_DNS_PROVIDERS.GCORE, "provider.gcore"],
|
||||
@@ -196,6 +206,8 @@ export const applyDNSProvidersMap: Map<ApplyDNSProvider["type"] | string, ApplyD
|
||||
[APPLY_DNS_PROVIDERS.NAMEDOTCOM, "provider.namedotcom"],
|
||||
[APPLY_DNS_PROVIDERS.NAMESILO, "provider.namesilo"],
|
||||
[APPLY_DNS_PROVIDERS.NS1, "provider.ns1"],
|
||||
[APPLY_DNS_PROVIDERS.PORKBUN, "provider.porkbun"],
|
||||
[APPLY_DNS_PROVIDERS.VERCEL, "provider.vercel"],
|
||||
[APPLY_DNS_PROVIDERS.CMCCCLOUD, "provider.cmcc"],
|
||||
[APPLY_DNS_PROVIDERS.RAINYUN, "provider.rainyun"],
|
||||
[APPLY_DNS_PROVIDERS.WESTCN, "provider.westcn"],
|
||||
@@ -276,6 +288,7 @@ export const DEPLOY_PROVIDERS = Object.freeze({
|
||||
UCLOUD_US3: `${ACCESS_PROVIDERS.UCLOUD}-us3`,
|
||||
UPYUN_CDN: `${ACCESS_PROVIDERS.UPYUN}-cdn`,
|
||||
UPYUN_FILE: `${ACCESS_PROVIDERS.UPYUN}-file`,
|
||||
VOLCENGINE_ALB: `${ACCESS_PROVIDERS.VOLCENGINE}-alb`,
|
||||
VOLCENGINE_CDN: `${ACCESS_PROVIDERS.VOLCENGINE}-cdn`,
|
||||
VOLCENGINE_CLB: `${ACCESS_PROVIDERS.VOLCENGINE}-clb`,
|
||||
VOLCENGINE_DCDN: `${ACCESS_PROVIDERS.VOLCENGINE}-dcdn`,
|
||||
@@ -351,6 +364,7 @@ export const deployProvidersMap: Map<DeployProvider["type"] | string, DeployProv
|
||||
[DEPLOY_PROVIDERS.VOLCENGINE_CDN, "provider.volcengine.cdn", DEPLOY_CATEGORIES.CDN],
|
||||
[DEPLOY_PROVIDERS.VOLCENGINE_DCDN, "provider.volcengine.dcdn", DEPLOY_CATEGORIES.CDN],
|
||||
[DEPLOY_PROVIDERS.VOLCENGINE_CLB, "provider.volcengine.clb", DEPLOY_CATEGORIES.LOADBALANCE],
|
||||
[DEPLOY_PROVIDERS.VOLCENGINE_ALB, "provider.volcengine.alb", DEPLOY_CATEGORIES.LOADBALANCE],
|
||||
[DEPLOY_PROVIDERS.VOLCENGINE_IMAGEX, "provider.volcengine.imagex", DEPLOY_CATEGORIES.STORAGE],
|
||||
[DEPLOY_PROVIDERS.VOLCENGINE_LIVE, "provider.volcengine.live", DEPLOY_CATEGORIES.AV],
|
||||
[DEPLOY_PROVIDERS.JDCLOUD_ALB, "provider.jdcloud.alb", DEPLOY_CATEGORIES.LOADBALANCE],
|
||||
|
||||
@@ -126,6 +126,9 @@
|
||||
"access.form.cmcccloud_access_key_secret.label": "CMCC ECloud AccessKeySecret",
|
||||
"access.form.cmcccloud_access_key_secret.placeholder": "Please enter CMCC ECloud AccessKeySecret",
|
||||
"access.form.cmcccloud_access_key_secret.tooltip": "For more information, see <a href=\"https://ecloud.10086.cn/op-help-center/doc/article/49739\" target=\"_blank\">https://ecloud.10086.cn/op-help-center/doc/article/49739</a>",
|
||||
"access.form.desec_token.label": "deSEC token",
|
||||
"access.form.desec_token.placeholder": "Please enter deSEC token",
|
||||
"access.form.desec_token.tooltip": "For more information, see <a href=\"https://desec.readthedocs.io/en/latest/auth/tokens.html#manage-tokens\" target=\"_blank\">https://desec.readthedocs.io/en/latest/auth/tokens.html</a>",
|
||||
"access.form.dnsla_api_id.label": "DNS.LA API ID",
|
||||
"access.form.dnsla_api_id.placeholder": "Please enter DNS.LA API ID",
|
||||
"access.form.dnsla_api_id.tooltip": "For more information, see <a href=\"https://www.dns.la/docs/ApiDoc\" target=\"_blank\">https://www.dns.la/docs/ApiDoc</a>",
|
||||
@@ -196,6 +199,12 @@
|
||||
"access.form.ns1_api_key.label": "NS1 API key",
|
||||
"access.form.ns1_api_key.placeholder": "Please enter NS1 API key",
|
||||
"access.form.ns1_api_key.tooltip": "For more information, see <a href=\"https://www.ibm.com/docs/en/ns1-connect?topic=introduction-using-api\" target=\"_blank\">https://www.ibm.com/docs/en/ns1-connect?topic=introduction-using-api</a>",
|
||||
"access.form.porkbun_api_key.label": "Porkbun API key",
|
||||
"access.form.porkbun_api_key.placeholder": "Please enter Porkbun API key",
|
||||
"access.form.porkbun_api_key.tooltip": "For more information, see <a href=\"https://porkbun.com/api/json/v3/documentation#Authentication\" target=\"_blank\">https://porkbun.com/api/json/v3/documentation</a>",
|
||||
"access.form.porkbun_secret_api_key.label": "Porkbun secret API key",
|
||||
"access.form.porkbun_secret_api_key.placeholder": "Please enter Porkbun secret API key",
|
||||
"access.form.porkbun_secret_api_key.tooltip": "For more information, see <a href=\"https://porkbun.com/api/json/v3/documentation#Authentication\" target=\"_blank\">https://porkbun.com/api/json/v3/documentation</a>",
|
||||
"access.form.powerdns_api_url.label": "PowerDNS API URL",
|
||||
"access.form.powerdns_api_url.placeholder": "Please enter PowerDNS API URL",
|
||||
"access.form.powerdns_api_url.tooltip": "For more information, see <a href=\"https://doc.powerdns.com/authoritative/http-api/index.html#endpoints-and-objects-in-the-api\" target=\"_blank\">https://doc.powerdns.com/authoritative/http-api/index.html#endpoints-and-objects-in-the-api</a>",
|
||||
@@ -252,6 +261,12 @@
|
||||
"access.form.ucloud_project_id.label": "UCloud project ID (Optional)",
|
||||
"access.form.ucloud_project_id.placeholder": "Please enter UCloud project ID",
|
||||
"access.form.ucloud_project_id.tooltip": "For more information, see <a href=\"https://console.ucloud-global.com/uaccount/iam/project_manage\" target=\"_blank\">https://console.ucloud-global.com/uaccount/iam/project_manage</a>",
|
||||
"access.form.vercel_api_access_token.label": "Vercel API access token",
|
||||
"access.form.vercel_api_access_token.placeholder": "Please enter Vercel API access token",
|
||||
"access.form.vercel_api_access_token.tooltip": "For more information, see <a href=\"https://vercel.com/guides/how-do-i-use-a-vercel-api-access-token\" target=\"_blank\">https://vercel.com/guides/how-do-i-use-a-vercel-api-access-token</a>",
|
||||
"access.form.vercel_team_id.label": "Vercel team ID (Optional)",
|
||||
"access.form.vercel_team_id.placeholder": "Please enter Vercel team ID",
|
||||
"access.form.vercel_team_id.tooltip": "For more information, see <a href=\"https://vercel.com/docs/accounts#find-your-team-id\" target=\"_blank\">https://vercel.com/docs/accounts#find-your-team-id</a>",
|
||||
"access.form.volcengine_access_key_id.label": "VolcEngine AccessKeyId",
|
||||
"access.form.volcengine_access_key_id.placeholder": "Please enter VolcEngine AccessKeyId",
|
||||
"access.form.volcengine_access_key_id.tooltip": "For more information, see <a href=\"https://www.volcengine.com/docs/6291/216571\" target=\"_blank\">https://www.volcengine.com/docs/6291/216571</a>",
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
"provider.cmcccloud": "China Mobile Cloud (ECloud)",
|
||||
"provider.ctcccloud": "China Telecom Cloud (State Cloud)",
|
||||
"provider.cucccloud": "China Unicom Cloud",
|
||||
"provider.desec": "deSEC",
|
||||
"provider.dnsla": "DNS.LA",
|
||||
"provider.dogecloud": "Doge Cloud",
|
||||
"provider.dogecloud.cdn": "Doge Cloud - CDN (Content Delivery Network)",
|
||||
@@ -75,6 +76,7 @@
|
||||
"provider.namedotcom": "Name.com",
|
||||
"provider.namesilo": "NameSilo",
|
||||
"provider.ns1": "NS1 (IBM NS1 Connect)",
|
||||
"provider.porkbun": "Porkbun",
|
||||
"provider.powerdns": "PowerDNS",
|
||||
"provider.qiniu": "Qiniu",
|
||||
"provider.qiniu.cdn": "Qiniu - CDN (Content Delivery Network)",
|
||||
@@ -102,7 +104,9 @@
|
||||
"provider.upyun": "UPYUN",
|
||||
"provider.upyun.cdn": "UPYUN - CDN (Content Delivery Network)",
|
||||
"provider.upyun.file": "UPYUN - File Storage",
|
||||
"provider.vercel": "Vercel",
|
||||
"provider.volcengine": "Volcengine",
|
||||
"provider.volcengine.alb": "Volcengine - ALB (Application Load Balancer)",
|
||||
"provider.volcengine.cdn": "Volcengine - CDN (Content Delivery Network)",
|
||||
"provider.volcengine.clb": "Volcengine - CLB (Cloud Load Balancer)",
|
||||
"provider.volcengine.dcdn": "Volcengine - DCDN (Dynamic Content Delivery Network)",
|
||||
|
||||
@@ -528,15 +528,35 @@
|
||||
"workflow_node.deploy.form.upyun_file_domain.label": "UPYUN bucket domain",
|
||||
"workflow_node.deploy.form.upyun_file_domain.placeholder": "Please enter UPYUN bucket domain name",
|
||||
"workflow_node.deploy.form.upyun_file_domain.tooltip": "For more information, see <a href=\"https://console.upyun.com/services/file/\" target=\"_blank\">https://console.upyun.com/services/file/</a>",
|
||||
"workflow_node.deploy.form.volcengine_alb_resource_type.label": "Resource type",
|
||||
"workflow_node.deploy.form.volcengine_alb_resource_type.placeholder": "Please select resource type",
|
||||
"workflow_node.deploy.form.volcengine_alb_resource_type.option.loadbalancer.label": "ALB load balancer",
|
||||
"workflow_node.deploy.form.volcengine_alb_resource_type.option.listener.label": "ALB listener",
|
||||
"workflow_node.deploy.form.volcengine_alb_region.label": "VolcEngine ALB region",
|
||||
"workflow_node.deploy.form.volcengine_alb_region.placeholder": "Please enter VolcEngine ALB region (e.g. cn-beijing)",
|
||||
"workflow_node.deploy.form.volcengine_alb_region.tooltip": "For more information, see <a href=\"https://www.volcengine.com/docs/6767/127501\" target=\"_blank\">https://www.volcengine.com/docs/6767/127501</a>",
|
||||
"workflow_node.deploy.form.volcengine_alb_loadbalancer_id.label": "VolcEngine ALB load balancer ID",
|
||||
"workflow_node.deploy.form.volcengine_alb_loadbalancer_id.placeholder": "Please enter VolcEngine ALB load balancer ID",
|
||||
"workflow_node.deploy.form.volcengine_alb_loadbalancer_id.tooltip": "For more information, see <a href=\"https://console.volcengine.com/alb\" target=\"_blank\">https://console.volcengine.com/alb</a>",
|
||||
"workflow_node.deploy.form.volcengine_alb_listener_id.label": "VolcEngine ALB listener ID",
|
||||
"workflow_node.deploy.form.volcengine_alb_listener_id.placeholder": "Please enter VolcEngine ALB listener ID",
|
||||
"workflow_node.deploy.form.volcengine_alb_listener_id.tooltip": "For more information, see <a href=\"https://console.volcengine.com/alb\" target=\"_blank\">https://console.volcengine.com/alb</a>",
|
||||
"workflow_node.deploy.form.volcengine_clb_snidomain.label": "VolcEngine CLB SNI domain (Optional)",
|
||||
"workflow_node.deploy.form.volcengine_clb_snidomain.placeholder": "Please enter VolcEngine CLB SNI domain name",
|
||||
"workflow_node.deploy.form.volcengine_clb_snidomain.tooltip": "For more information, see <a href=\"https://console.volcengine.com/alb\" target=\"_blank\">https://console.volcengine.com/alb</a>",
|
||||
"workflow_node.deploy.form.volcengine_cdn_domain.label": "VolcEngine CDN domain",
|
||||
"workflow_node.deploy.form.volcengine_cdn_domain.placeholder": "Please enter VolcEngine CDN domain name",
|
||||
"workflow_node.deploy.form.volcengine_cdn_domain.tooltip": "For more information, see <a href=\"https://console.volcengine.com/cdn/homepage\" target=\"_blank\">https://console.volcengine.com/cdn/homepage</a>",
|
||||
"workflow_node.deploy.form.volcengine_clb_resource_type.label": "Resource type",
|
||||
"workflow_node.deploy.form.volcengine_clb_resource_type.placeholder": "Please select resource type",
|
||||
"workflow_node.deploy.form.volcengine_clb_resource_type.option.loadbalancer.label": "CLB load balancer",
|
||||
"workflow_node.deploy.form.volcengine_clb_resource_type.option.listener.label": "CLB listener",
|
||||
"workflow_node.deploy.form.volcengine_clb_region.label": "VolcEngine CLB region",
|
||||
"workflow_node.deploy.form.volcengine_clb_region.placeholder": "Please enter VolcEngine CLB region (e.g. cn-beijing)",
|
||||
"workflow_node.deploy.form.volcengine_clb_region.tooltip": "For more information, see <a href=\"https://www.volcengine.com/docs/6406/74892\" target=\"_blank\">https://www.volcengine.com/docs/6406/74892</a>",
|
||||
"workflow_node.deploy.form.volcengine_clb_loadbalancer_id.label": "VolcEngine CLB load balancer ID",
|
||||
"workflow_node.deploy.form.volcengine_clb_loadbalancer_id.placeholder": "Please enter VolcEngine CLB load balancer ID",
|
||||
"workflow_node.deploy.form.volcengine_clb_loadbalancer_id.tooltip": "For more information, see <a href=\"https://console.volcengine.com/clb/LoadBalancer\" target=\"_blank\">https://console.volcengine.com/clb/LoadBalancer</a>",
|
||||
"workflow_node.deploy.form.volcengine_clb_listener_id.label": "VolcEngine CLB listener ID",
|
||||
"workflow_node.deploy.form.volcengine_clb_listener_id.placeholder": "Please enter VolcEngine CLB listener ID",
|
||||
"workflow_node.deploy.form.volcengine_clb_listener_id.tooltip": "For more information, see <a href=\"https://console.volcengine.com/clb/LoadBalancer\" target=\"_blank\">https://console.volcengine.com/clb/LoadBalancer</a>",
|
||||
|
||||
@@ -120,6 +120,9 @@
|
||||
"access.form.cmcccloud_access_key_secret.label": "移动云 AccessKeySecret",
|
||||
"access.form.cmcccloud_access_key_secret.placeholder": "请输入移动云 AccessKeySecret",
|
||||
"access.form.cmcccloud_access_key_secret.tooltip": "这是什么?请参阅 <a href=\"https://ecloud.10086.cn/op-help-center/doc/article/49739\" target=\"_blank\">https://ecloud.10086.cn/op-help-center/doc/article/49739</a>",
|
||||
"access.form.desec_token.label": "deSEC Token",
|
||||
"access.form.desec_token.placeholder": "请输入 deSEC Token",
|
||||
"access.form.desec_token.tooltip": "这是什么?请参阅 <a href=\"https://desec.readthedocs.io/en/latest/auth/tokens.html#manage-tokens\" target=\"_blank\">https://desec.readthedocs.io/en/latest/auth/tokens.html</a>",
|
||||
"access.form.dnsla_api_id.label": "DNS.LA API ID",
|
||||
"access.form.dnsla_api_id.placeholder": "请输入 DNS.LA API ID",
|
||||
"access.form.dnsla_api_id.tooltip": "这是什么?请参阅 <a href=\"https://www.dns.la/docs/ApiDoc\" target=\"_blank\">https://www.dns.la/docs/ApiDoc</a>",
|
||||
@@ -190,6 +193,12 @@
|
||||
"access.form.ns1_api_key.label": "NS1 API Key",
|
||||
"access.form.ns1_api_key.placeholder": "请输入 NS1 API Key",
|
||||
"access.form.ns1_api_key.tooltip": "这是什么?请参阅 <a href=\"https://www.ibm.com/docs/zh/ns1-connect?topic=introduction-using-api\" target=\"_blank\">https://www.ibm.com/docs/zh/ns1-connect?topic=introduction-using-api</a>",
|
||||
"access.form.porkbun_api_key.label": "Porkbun API Key",
|
||||
"access.form.porkbun_api_key.placeholder": "请输入 Porkbun API Key",
|
||||
"access.form.porkbun_api_key.tooltip": "这是什么?请参阅 <a href=\"https://porkbun.com/api/json/v3/documentation#Authentication\" target=\"_blank\">https://porkbun.com/api/json/v3/documentation</a>",
|
||||
"access.form.porkbun_secret_api_key.label": "Porkbun Secret API Key",
|
||||
"access.form.porkbun_secret_api_key.placeholder": "请输入 Porkbun Secret API Key",
|
||||
"access.form.porkbun_secret_api_key.tooltip": "这是什么?请参阅 <a href=\"https://porkbun.com/api/json/v3/documentation#Authentication\" target=\"_blank\">https://porkbun.com/api/json/v3/documentation</a>",
|
||||
"access.form.powerdns_api_url.label": "PowerDNS API URL",
|
||||
"access.form.powerdns_api_url.placeholder": "请输入 PowerDNS API URL",
|
||||
"access.form.powerdns_api_url.tooltip": "这是什么?请参阅 <a href=\"https://doc.powerdns.com/authoritative/http-api/index.html#endpoints-and-objects-in-the-api\" target=\"_blank\">https://doc.powerdns.com/authoritative/http-api/index.html#endpoints-and-objects-in-the-api</a>",
|
||||
@@ -252,6 +261,12 @@
|
||||
"access.form.upyun_password.label": "又拍云子账号密码",
|
||||
"access.form.upyun_password.placeholder": "请输入又拍云子账号密码",
|
||||
"access.form.upyun_password.tooltip": "这是什么?请参阅 <a href=\"https://console.upyun.com/account/subaccount/\" target=\"_blank\">https://console.upyun.com/account/subaccount/</a><br><br>请关闭该账号的二次登录验证。",
|
||||
"access.form.vercel_api_access_token.label": "Vercel API Access Token",
|
||||
"access.form.vercel_api_access_token.placeholder": "请输入 Vercel API Access Token",
|
||||
"access.form.vercel_api_access_token.tooltip": "这是什么?请参阅 <a href=\"https://vercel.com/guides/how-do-i-use-a-vercel-api-access-token\" target=\"_blank\">https://vercel.com/guides/how-do-i-use-a-vercel-api-access-token</a>",
|
||||
"access.form.vercel_team_id.label": "Vercel 团队 ID(可选)",
|
||||
"access.form.vercel_team_id.placeholder": "请输入 Vercel 团队 ID",
|
||||
"access.form.vercel_team_id.tooltip": "这是什么?请参阅 <a href=\"https://vercel.com/docs/accounts#find-your-team-id\" target=\"_blank\">https://vercel.com/docs/accounts#find-your-team-id</a>",
|
||||
"access.form.volcengine_access_key_id.label": "火山引擎 AccessKeyId",
|
||||
"access.form.volcengine_access_key_id.placeholder": "请输入火山引擎 AccessKeyId",
|
||||
"access.form.volcengine_access_key_id.tooltip": "这是什么?请参阅 <a href=\"https://www.volcengine.com/docs/6291/216571\" target=\"_blank\">https://www.volcengine.com/docs/6291/216571</a>",
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
"provider.cmcccloud": "移动云",
|
||||
"provider.ctcccloud": "联通云",
|
||||
"provider.cucccloud": "天翼云",
|
||||
"provider.desec": "deSEC",
|
||||
"provider.dnsla": "DNS.LA",
|
||||
"provider.dogecloud": "多吉云",
|
||||
"provider.dogecloud.cdn": "多吉云 - 内容分发网络 CDN",
|
||||
@@ -75,6 +76,7 @@
|
||||
"provider.namedotcom": "Name.com",
|
||||
"provider.namesilo": "NameSilo",
|
||||
"provider.ns1": "NS1(IBM NS1 Connect)",
|
||||
"provider.porkbun": "Porkbun",
|
||||
"provider.powerdns": "PowerDNS",
|
||||
"provider.qiniu": "七牛云",
|
||||
"provider.qiniu.cdn": "七牛云 - 内容分发网络 CDN",
|
||||
@@ -102,7 +104,9 @@
|
||||
"provider.upyun": "又拍云",
|
||||
"provider.upyun.cdn": "又拍云 - 云分发 CDN",
|
||||
"provider.upyun.file": "又拍云 - 云存储",
|
||||
"provider.vercel": "Vercel",
|
||||
"provider.volcengine": "火山引擎",
|
||||
"provider.volcengine.alb": "火山引擎 - 应用型负载均衡 ALB",
|
||||
"provider.volcengine.cdn": "火山引擎 - 内容分发网络 CDN",
|
||||
"provider.volcengine.clb": "火山引擎 - 负载均衡 CLB",
|
||||
"provider.volcengine.dcdn": "火山引擎 - 全站加速 DCDN",
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
"workflow_node.deploy.form.aliyun_fc_service_version.label": "阿里云 FC 服务版本",
|
||||
"workflow_node.deploy.form.aliyun_fc_service_version.placeholder": "请选择阿里云 FC 服务版本",
|
||||
"workflow_node.deploy.form.aliyun_fc_domain.label": "阿里云 FC 自定义域名",
|
||||
"workflow_node.deploy.form.aliyun_fc_domain.placeholder": "请输入阿里云 FC 自定义域名",
|
||||
"workflow_node.deploy.form.aliyun_fc_domain.placeholder": "请输入阿里云 FC 自定义域名(支持泛域名)",
|
||||
"workflow_node.deploy.form.aliyun_fc_domain.tooltip": "这是什么?请参阅 see <a href=\"https://fcnext.console.aliyun.com/\" target=\"_blank\">https://fcnext.console.aliyun.com/</a>",
|
||||
"workflow_node.deploy.form.aliyun_live_region.label": "阿里云视频直播服务地域",
|
||||
"workflow_node.deploy.form.aliyun_live_region.placeholder": "请输入阿里云视频直播服务地域(例如:cn-hangzhou)",
|
||||
@@ -528,15 +528,35 @@
|
||||
"workflow_node.deploy.form.upyun_file_domain.label": "又拍云云存储加速域名",
|
||||
"workflow_node.deploy.form.upyun_file_domain.placeholder": "请输入又拍云云存储加速域名",
|
||||
"workflow_node.deploy.form.upyun_file_domain.tooltip": "这是什么?请参阅 <a href=\"https://console.upyun.com/services/file/\" target=\"_blank\">https://console.upyun.com/services/file/</a>",
|
||||
"workflow_node.deploy.form.volcengine_alb_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.volcengine_alb_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.volcengine_alb_resource_type.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS 监听的证书",
|
||||
"workflow_node.deploy.form.volcengine_alb_resource_type.option.listener.label": "替换指定监听器的证书",
|
||||
"workflow_node.deploy.form.volcengine_alb_region.label": "火山引擎 ALB 服务地域",
|
||||
"workflow_node.deploy.form.volcengine_alb_region.placeholder": "请输入火山引擎 ALB 服务地域(例如:cn-beijing)",
|
||||
"workflow_node.deploy.form.volcengine_alb_region.tooltip": "这是什么?请参阅 <a href=\"https://www.volcengine.com/docs/6767/127501\" target=\"_blank\">https://www.volcengine.com/docs/6767/127501</a>",
|
||||
"workflow_node.deploy.form.volcengine_alb_loadbalancer_id.label": "火山引擎 ALB 负载均衡器 ID",
|
||||
"workflow_node.deploy.form.volcengine_alb_loadbalancer_id.placeholder": "请输入火山引擎 ALB 负载均衡器 ID",
|
||||
"workflow_node.deploy.form.volcengine_alb_loadbalancer_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.label": "火山引擎 ALB 监听器 ID",
|
||||
"workflow_node.deploy.form.volcengine_alb_listener_id.placeholder": "请输入火山引擎 ALB 监听器 ID",
|
||||
"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_clb_snidomain.label": "火山引擎 ALB 扩展域名(可选)",
|
||||
"workflow_node.deploy.form.volcengine_clb_snidomain.placeholder": "请输入火山引擎 ALB 扩展域名(支持泛域名)",
|
||||
"workflow_node.deploy.form.volcengine_clb_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.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_clb_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.volcengine_clb_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.volcengine_clb_resource_type.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS 监听的证书",
|
||||
"workflow_node.deploy.form.volcengine_clb_resource_type.option.listener.label": "替换指定监听器的证书",
|
||||
"workflow_node.deploy.form.volcengine_clb_region.label": "火山引擎 CLB 服务地域",
|
||||
"workflow_node.deploy.form.volcengine_clb_region.placeholder": "请输入火山引擎 CLB 服务地域(例如:cn-beijing)",
|
||||
"workflow_node.deploy.form.volcengine_clb_region.tooltip": "这是什么?请参阅 <a href=\"https://www.volcengine.com/docs/6406/74892\" target=\"_blank\">https://www.volcengine.com/docs/6406/74892</a>",
|
||||
"workflow_node.deploy.form.volcengine_clb_loadbalancer_id.label": "火山引擎 CLB 负载均衡器 ID",
|
||||
"workflow_node.deploy.form.volcengine_clb_loadbalancer_id.placeholder": "请输入火山引擎 CLB 负载均衡器 ID",
|
||||
"workflow_node.deploy.form.volcengine_clb_loadbalancer_id.tooltip": "这是什么?请参阅 <a href=\"https://console.volcengine.com/clb/LoadBalancer\" target=\"_blank\">https://console.volcengine.com/clb/LoadBalancer</a>",
|
||||
"workflow_node.deploy.form.volcengine_clb_listener_id.label": "火山引擎 CLB 监听器 ID",
|
||||
"workflow_node.deploy.form.volcengine_clb_listener_id.placeholder": "请输入火山引擎 CLB 监听器 ID",
|
||||
"workflow_node.deploy.form.volcengine_clb_listener_id.tooltip": "这是什么?请参阅 <a href=\"https://console.volcengine.com/clb/LoadBalancer\" target=\"_blank\">https://console.volcengine.com/clb/LoadBalancer</a>",
|
||||
|
||||
Reference in New Issue
Block a user