mirror of
https://github.com/usual2970/certimate.git
synced 2025-10-04 21:44:54 +00:00
Merge branch 'main' into feat-ssh-jumpserver
This commit is contained in:
1
ui/public/imgs/providers/acmeca.svg
Normal file
1
ui/public/imgs/providers/acmeca.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M642.56 946.176h-261.12c-167.936 0-303.616-136.192-303.616-303.616v-261.12c0-167.936 136.192-303.616 303.616-303.616h261.12c167.936 0 303.616 136.192 303.616 303.616v261.12c0 167.424-136.192 303.616-303.616 303.616z" fill="#F2F9FF"></path><path d="M512 808.448l-6.144-2.56c-201.728-78.336-224.768-180.736-224.768-250.88V287.232l17.92 0.512c140.288 4.608 199.68-58.88 200.192-59.392l12.8-14.336 12.8 14.336c0.512 0.512 56.832 59.392 185.344 59.392 5.12 0 9.728 0 14.848-0.512l17.92-0.512v267.776c0 70.144-23.552 172.544-224.768 250.88l-6.144 3.072zM315.904 323.072v232.448c0 37.888 0 137.216 196.096 215.552 196.096-78.336 196.096-178.176 196.096-215.552V323.072c-108.544-0.512-171.008-39.424-196.096-59.392-25.088 19.968-87.552 58.88-196.096 59.392z m0 0" fill="#04AE7F"></path><path d="M674.304 566.272h-78.336v-133.12h28.16v110.08h49.664v23.04z m-114.176-7.68c-9.216 6.656-22.016 10.24-38.4 10.24-15.36 0-27.648-2.56-37.376-7.168v-28.672c10.24 8.704 23.04 13.312 36.352 13.312 7.68 0 13.312-1.536 17.408-4.096 4.096-2.56 5.632-6.144 5.632-10.24 0-3.584-1.536-7.168-4.608-10.24-3.072-3.072-11.264-7.68-24.576-13.312-20.992-8.704-31.232-21.504-31.232-38.4 0-12.288 4.608-22.016 14.336-28.672 9.216-6.656 22.016-10.24 37.376-10.24 12.8 0 24.064 1.536 32.768 5.12v26.624c-8.704-6.144-19.456-9.216-31.232-9.216-7.168 0-12.8 1.024-16.896 3.584-4.096 2.56-6.144 6.144-6.144 10.24 0 3.584 1.536 6.656 4.096 9.728 3.072 3.072 9.728 6.656 20.992 11.776 13.312 5.632 22.528 11.776 27.136 17.92 5.12 6.144 7.68 13.824 7.68 22.528 0.512 12.8-4.096 22.528-13.312 29.184z m-105.472 0c-9.216 6.656-22.016 10.24-38.4 10.24-15.36 0-27.648-2.56-37.376-7.168v-28.672c10.752 8.704 23.04 13.312 36.352 13.312 7.68 0 13.312-1.536 17.408-4.096 4.096-2.56 5.632-6.144 5.632-10.24 0-3.584-1.536-7.168-4.608-10.24-3.072-3.072-11.264-7.68-24.576-13.312-20.992-8.704-31.232-21.504-31.232-38.4 0-12.288 4.608-22.016 14.336-28.672 9.216-6.656 22.016-10.24 37.376-10.24 12.8 0 24.064 1.536 32.768 5.12v26.624c-8.704-6.144-19.456-9.216-31.232-9.216-7.168 0-12.8 1.024-16.896 3.584-4.096 2.56-6.144 6.144-6.144 10.24 0 3.584 1.536 6.656 4.096 9.728 3.072 3.072 9.728 6.656 20.992 11.776 13.312 5.632 22.528 11.776 27.136 17.92 5.12 6.656 7.68 14.336 7.68 22.528 0 12.8-4.608 22.528-13.312 29.184z m332.288-190.464C696.32 386.56 604.16 395.776 512 395.776s-184.32-9.216-274.944-27.648c22.528 61.44 33.792 109.056 33.792 142.848 0 33.792-11.264 81.92-33.792 142.848 121.344-20.992 213.504-31.744 274.944-31.744s153.6 10.752 274.944 31.744c-29.696-61.952-44.544-109.568-44.544-142.848s15.36-80.896 44.544-142.848z m0 0" fill="#04AE7F"></path></svg>
|
After Width: | Height: | Size: 2.7 KiB |
1
ui/public/imgs/providers/baotawaf.svg
Normal file
1
ui/public/imgs/providers/baotawaf.svg
Normal file
File diff suppressed because one or more lines are too long
BIN
ui/public/imgs/providers/flexcdn.png
Normal file
BIN
ui/public/imgs/providers/flexcdn.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
1
ui/public/imgs/providers/lecdn.svg
Normal file
1
ui/public/imgs/providers/lecdn.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg"><text x="50%" y="50%" font-size="48" fill="#a2a9b6" font-family="system-ui, sans-serif" text-anchor="middle" dominant-baseline="middle">LeCDN</text></svg>
|
After Width: | Height: | Size: 219 B |
BIN
ui/public/imgs/providers/ratpanel.png
Normal file
BIN
ui/public/imgs/providers/ratpanel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.1 KiB |
@@ -12,6 +12,7 @@ import { ACCESS_PROVIDERS, ACCESS_USAGES, type AccessProvider } from "@/domain/p
|
||||
import { useAntdForm, useAntdFormName } from "@/hooks";
|
||||
|
||||
import AccessForm1PanelConfig from "./AccessForm1PanelConfig";
|
||||
import AccessFormACMECAConfig from "./AccessFormACMECAConfig";
|
||||
import AccessFormACMEHttpReqConfig from "./AccessFormACMEHttpReqConfig";
|
||||
import AccessFormAliyunConfig from "./AccessFormAliyunConfig";
|
||||
import AccessFormAWSConfig from "./AccessFormAWSConfig";
|
||||
@@ -19,6 +20,7 @@ import AccessFormAzureConfig from "./AccessFormAzureConfig";
|
||||
import AccessFormBaiduCloudConfig from "./AccessFormBaiduCloudConfig";
|
||||
import AccessFormBaishanConfig from "./AccessFormBaishanConfig";
|
||||
import AccessFormBaotaPanelConfig from "./AccessFormBaotaPanelConfig";
|
||||
import AccessFormBaotaWAFConfig from "./AccessFormBaotaWAFConfig";
|
||||
import AccessFormBunnyConfig from "./AccessFormBunnyConfig";
|
||||
import AccessFormBytePlusConfig from "./AccessFormBytePlusConfig";
|
||||
import AccessFormCacheFlyConfig from "./AccessFormCacheFlyConfig";
|
||||
@@ -33,6 +35,7 @@ import AccessFormDogeCloudConfig from "./AccessFormDogeCloudConfig";
|
||||
import AccessFormDynv6Config from "./AccessFormDynv6Config";
|
||||
import AccessFormEdgioConfig from "./AccessFormEdgioConfig";
|
||||
import AccessFormEmailConfig from "./AccessFormEmailConfig";
|
||||
import AccessFormFlexCDNConfig from "./AccessFormFlexCDNConfig";
|
||||
import AccessFormGcoreConfig from "./AccessFormGcoreConfig";
|
||||
import AccessFormGnameConfig from "./AccessFormGnameConfig";
|
||||
import AccessFormGoDaddyConfig from "./AccessFormGoDaddyConfig";
|
||||
@@ -42,6 +45,7 @@ import AccessFormHuaweiCloudConfig from "./AccessFormHuaweiCloudConfig";
|
||||
import AccessFormJDCloudConfig from "./AccessFormJDCloudConfig";
|
||||
import AccessFormKubernetesConfig from "./AccessFormKubernetesConfig";
|
||||
import AccessFormLarkBotConfig from "./AccessFormLarkBotConfig";
|
||||
import AccessFormLeCDNConfig from "./AccessFormLeCDNConfig";
|
||||
import AccessFormMattermostConfig from "./AccessFormMattermostConfig";
|
||||
import AccessFormNamecheapConfig from "./AccessFormNamecheapConfig";
|
||||
import AccessFormNameDotComConfig from "./AccessFormNameDotComConfig";
|
||||
@@ -54,6 +58,7 @@ import AccessFormPowerDNSConfig from "./AccessFormPowerDNSConfig";
|
||||
import AccessFormProxmoxVEConfig from "./AccessFormProxmoxVEConfig";
|
||||
import AccessFormQiniuConfig from "./AccessFormQiniuConfig";
|
||||
import AccessFormRainYunConfig from "./AccessFormRainYunConfig";
|
||||
import AccessFormRatPanelConfig from "./AccessFormRatPanelConfig";
|
||||
import AccessFormSafeLineConfig from "./AccessFormSafeLineConfig";
|
||||
import AccessFormSSHConfig from "./AccessFormSSHConfig";
|
||||
import AccessFormSSLComConfig from "./AccessFormSSLComConfig";
|
||||
@@ -176,6 +181,8 @@ const AccessForm = forwardRef<AccessFormInstance, AccessFormProps>(({ className,
|
||||
switch (fieldProvider) {
|
||||
case ACCESS_PROVIDERS["1PANEL"]:
|
||||
return <AccessForm1PanelConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.ACMECA:
|
||||
return <AccessFormACMECAConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.ACMEHTTPREQ:
|
||||
return <AccessFormACMEHttpReqConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.ALIYUN:
|
||||
@@ -190,6 +197,8 @@ const AccessForm = forwardRef<AccessFormInstance, AccessFormProps>(({ className,
|
||||
return <AccessFormBaishanConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.BAOTAPANEL:
|
||||
return <AccessFormBaotaPanelConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.BAOTAWAF:
|
||||
return <AccessFormBaotaWAFConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.BUNNY:
|
||||
return <AccessFormBunnyConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.BYTEPLUS:
|
||||
@@ -214,6 +223,12 @@ const AccessForm = forwardRef<AccessFormInstance, AccessFormProps>(({ className,
|
||||
return <AccessFormDogeCloudConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.DYNV6:
|
||||
return <AccessFormDynv6Config {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.EDGIO:
|
||||
return <AccessFormEdgioConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.EMAIL:
|
||||
return <AccessFormEmailConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.FLEXCDN:
|
||||
return <AccessFormFlexCDNConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.GCORE:
|
||||
return <AccessFormGcoreConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.GNAME:
|
||||
@@ -224,10 +239,6 @@ const AccessForm = forwardRef<AccessFormInstance, AccessFormProps>(({ className,
|
||||
return <AccessFormGoEdgeConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.GOOGLETRUSTSERVICES:
|
||||
return <AccessFormGoogleTrustServicesConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.EDGIO:
|
||||
return <AccessFormEdgioConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.EMAIL:
|
||||
return <AccessFormEmailConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.HUAWEICLOUD:
|
||||
return <AccessFormHuaweiCloudConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.JDCLOUD:
|
||||
@@ -236,6 +247,8 @@ const AccessForm = forwardRef<AccessFormInstance, AccessFormProps>(({ className,
|
||||
return <AccessFormKubernetesConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.LARKBOT:
|
||||
return <AccessFormLarkBotConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.LECDN:
|
||||
return <AccessFormLeCDNConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.MATTERMOST:
|
||||
return <AccessFormMattermostConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.NAMECHEAP:
|
||||
@@ -260,6 +273,8 @@ const AccessForm = forwardRef<AccessFormInstance, AccessFormProps>(({ className,
|
||||
return <AccessFormQiniuConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.RAINYUN:
|
||||
return <AccessFormRainYunConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.RATPANEL:
|
||||
return <AccessFormRatPanelConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.SAFELINE:
|
||||
return <AccessFormSafeLineConfig {...nestedFormProps} />;
|
||||
case ACCESS_PROVIDERS.SSH:
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input, Switch } from "antd";
|
||||
import { Form, type FormInstance, Input, Select, Switch } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
@@ -18,6 +18,7 @@ export type AccessForm1PanelConfigProps = {
|
||||
const initFormModel = (): AccessForm1PanelConfigFieldValues => {
|
||||
return {
|
||||
apiUrl: "http://<your-host-addr>:20410/",
|
||||
apiVersion: "v1",
|
||||
apiKey: "",
|
||||
};
|
||||
};
|
||||
@@ -27,6 +28,7 @@ const AccessForm1PanelConfig = ({ form: formInst, formName, disabled, initialVal
|
||||
|
||||
const formSchema = z.object({
|
||||
apiUrl: z.string().url(t("common.errmsg.url_invalid")),
|
||||
apiVersion: z.string().nonempty(t("access.form.1panel_api_version.placeholder")),
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.1panel_api_key.placeholder"))
|
||||
@@ -53,6 +55,10 @@ const AccessForm1PanelConfig = ({ form: formInst, formName, disabled, initialVal
|
||||
<Input placeholder={t("access.form.1panel_api_url.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="apiVersion" label={t("access.form.1panel_api_version.label")} rules={[formRule]}>
|
||||
<Select options={["v1", "v2"].map((s) => ({ label: s, value: s }))} placeholder={t("access.form.1panel_api_version.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="apiKey"
|
||||
label={t("access.form.1panel_api_key.label")}
|
||||
|
77
ui/src/components/access/AccessFormACMECAConfig.tsx
Normal file
77
ui/src/components/access/AccessFormACMECAConfig.tsx
Normal file
@@ -0,0 +1,77 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import { type AccessConfigForACMECA } from "@/domain/access";
|
||||
|
||||
type AccessFormACMECAConfigFieldValues = Nullish<AccessConfigForACMECA>;
|
||||
|
||||
export type AccessFormACMECAConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: AccessFormACMECAConfigFieldValues;
|
||||
onValuesChange?: (values: AccessFormACMECAConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): AccessFormACMECAConfigFieldValues => {
|
||||
return {
|
||||
endpoint: "https://example.com/acme/directory",
|
||||
};
|
||||
};
|
||||
|
||||
const AccessFormACMECAConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: AccessFormACMECAConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
endpoint: z.string().url(t("common.errmsg.url_invalid")),
|
||||
eabKid: z.string().trim().nullish(),
|
||||
eabHmacKey: z.string().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="endpoint"
|
||||
label={t("access.form.acmeca_endpoint.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.acmeca_endpoint.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("access.form.acmeca_endpoint.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="eabKid"
|
||||
label={t("access.form.acmeca_eab_kid.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.acmeca_eab_kid.tooltip") }}></span>}
|
||||
>
|
||||
<Input allowClear autoComplete="new-password" placeholder={t("access.form.acmeca_eab_kid.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="eabHmacKey"
|
||||
label={t("access.form.acmeca_eab_hmac_key.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.acmeca_eab_hmac_key.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password allowClear autoComplete="new-password" placeholder={t("access.form.acmeca_eab_hmac_key.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default AccessFormACMECAConfig;
|
@@ -84,7 +84,7 @@ const AccessFormACMEHttpReqConfig = ({ form: formInst, formName, disabled, initi
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.acmehttpreq_username.tooltip") }}></span>}
|
||||
>
|
||||
<Input autoComplete="new-password" placeholder={t("access.form.acmehttpreq_username.placeholder")} />
|
||||
<Input allowClear autoComplete="new-password" placeholder={t("access.form.acmehttpreq_username.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
@@ -93,7 +93,7 @@ const AccessFormACMEHttpReqConfig = ({ form: formInst, formName, disabled, initi
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.acmehttpreq_password.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.acmehttpreq_password.placeholder")} />
|
||||
<Input.Password allowClear autoComplete="new-password" placeholder={t("access.form.acmehttpreq_password.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
|
@@ -27,11 +27,7 @@ const AccessFormBaotaPanelConfig = ({ form: formInst, formName, disabled, initia
|
||||
|
||||
const formSchema = z.object({
|
||||
apiUrl: z.string().url(t("common.errmsg.url_invalid")),
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.baotapanel_api_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim(),
|
||||
apiKey: z.string().nonempty(t("access.form.baotapanel_api_key.placeholder")).trim(),
|
||||
allowInsecureConnections: z.boolean().nullish(),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
71
ui/src/components/access/AccessFormBaotaWAFConfig.tsx
Normal file
71
ui/src/components/access/AccessFormBaotaWAFConfig.tsx
Normal file
@@ -0,0 +1,71 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input, Switch } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import { type AccessConfigForBaotaWAF } from "@/domain/access";
|
||||
|
||||
type AccessFormBaotaWAFConfigFieldValues = Nullish<AccessConfigForBaotaWAF>;
|
||||
|
||||
export type AccessFormBaotaWAFConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: AccessFormBaotaWAFConfigFieldValues;
|
||||
onValuesChange?: (values: AccessFormBaotaWAFConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): AccessFormBaotaWAFConfigFieldValues => {
|
||||
return {
|
||||
apiUrl: "http://<your-host-addr>:8379/",
|
||||
apiKey: "",
|
||||
};
|
||||
};
|
||||
|
||||
const AccessFormBaotaWAFConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: AccessFormBaotaWAFConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
apiUrl: z.string().url(t("common.errmsg.url_invalid")),
|
||||
apiKey: z.string().nonempty(t("access.form.baotawaf_api_key.placeholder")).trim(),
|
||||
allowInsecureConnections: z.boolean().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="apiUrl" label={t("access.form.baotawaf_api_url.label")} rules={[formRule]}>
|
||||
<Input placeholder={t("access.form.baotawaf_api_url.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="apiKey"
|
||||
label={t("access.form.baotawaf_api_key.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.baotawaf_api_key.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.baotawaf_api_key.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="allowInsecureConnections" label={t("access.form.baotawaf_allow_insecure_conns.label")} rules={[formRule]}>
|
||||
<Switch
|
||||
checkedChildren={t("access.form.baotawaf_allow_insecure_conns.switch.on")}
|
||||
unCheckedChildren={t("access.form.baotawaf_allow_insecure_conns.switch.off")}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default AccessFormBaotaWAFConfig;
|
@@ -66,7 +66,7 @@ const AccessFormCloudflareConfig = ({ form: formInst, formName, disabled, initia
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.cloudflare_zone_api_token.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.cloudflare_zone_api_token.placeholder")} />
|
||||
<Input.Password allowClear autoComplete="new-password" placeholder={t("access.form.cloudflare_zone_api_token.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
|
90
ui/src/components/access/AccessFormFlexCDNConfig.tsx
Normal file
90
ui/src/components/access/AccessFormFlexCDNConfig.tsx
Normal file
@@ -0,0 +1,90 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input, Radio, Switch } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import { type AccessConfigForFlexCDN } from "@/domain/access";
|
||||
|
||||
type AccessFormFlexCDNConfigFieldValues = Nullish<AccessConfigForFlexCDN>;
|
||||
|
||||
export type AccessFormFlexCDNConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: AccessFormFlexCDNConfigFieldValues;
|
||||
onValuesChange?: (values: AccessFormFlexCDNConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): AccessFormFlexCDNConfigFieldValues => {
|
||||
return {
|
||||
apiUrl: "http://<your-host-addr>:8000/",
|
||||
apiRole: "user",
|
||||
accessKeyId: "",
|
||||
accessKey: "",
|
||||
};
|
||||
};
|
||||
|
||||
const AccessFormFlexCDNConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: AccessFormFlexCDNConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
apiUrl: z.string().url(t("common.errmsg.url_invalid")),
|
||||
role: z.union([z.literal("user"), z.literal("admin")], {
|
||||
message: t("access.form.flexcdn_api_role.placeholder"),
|
||||
}),
|
||||
accessKeyId: z.string().nonempty(t("access.form.flexcdn_access_key_id.placeholder")).trim(),
|
||||
accessKey: z.string().nonempty(t("access.form.flexcdn_access_key.placeholder")).trim(),
|
||||
allowInsecureConnections: z.boolean().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="apiUrl" label={t("access.form.flexcdn_api_url.label")} rules={[formRule]}>
|
||||
<Input placeholder={t("access.form.flexcdn_api_url.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="apiRole" label={t("access.form.flexcdn_api_role.label")} rules={[formRule]}>
|
||||
<Radio.Group options={["user", "admin"].map((s) => ({ label: t(`access.form.flexcdn_api_role.option.${s}.label`), value: s }))} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="accessKeyId"
|
||||
label={t("access.form.flexcdn_access_key_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.flexcdn_access_key_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input autoComplete="new-password" placeholder={t("access.form.flexcdn_access_key_id.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="accessKey"
|
||||
label={t("access.form.flexcdn_access_key.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.flexcdn_access_key.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.flexcdn_access_key.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="allowInsecureConnections" label={t("access.form.flexcdn_allow_insecure_conns.label")} rules={[formRule]}>
|
||||
<Switch
|
||||
checkedChildren={t("access.form.flexcdn_allow_insecure_conns.switch.on")}
|
||||
unCheckedChildren={t("access.form.flexcdn_allow_insecure_conns.switch.off")}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default AccessFormFlexCDNConfig;
|
@@ -32,16 +32,8 @@ const AccessFormGoEdgeConfig = ({ form: formInst, formName, disabled, initialVal
|
||||
role: z.union([z.literal("user"), z.literal("admin")], {
|
||||
message: t("access.form.goedge_api_role.placeholder"),
|
||||
}),
|
||||
accessKeyId: z
|
||||
.string()
|
||||
.min(1, t("access.form.goedge_access_key_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim(),
|
||||
accessKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.goedge_access_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim(),
|
||||
accessKeyId: z.string().nonempty(t("access.form.goedge_access_key_id.placeholder")).trim(),
|
||||
accessKey: z.string().nonempty(t("access.form.goedge_access_key.placeholder")).trim(),
|
||||
allowInsecureConnections: z.boolean().nullish(),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
85
ui/src/components/access/AccessFormLeCDNConfig.tsx
Normal file
85
ui/src/components/access/AccessFormLeCDNConfig.tsx
Normal file
@@ -0,0 +1,85 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input, Radio, Select, Switch } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import { type AccessConfigForLeCDN } from "@/domain/access";
|
||||
|
||||
type AccessFormLeCDNConfigFieldValues = Nullish<AccessConfigForLeCDN>;
|
||||
|
||||
export type AccessFormLeCDNConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: AccessFormLeCDNConfigFieldValues;
|
||||
onValuesChange?: (values: AccessFormLeCDNConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): AccessFormLeCDNConfigFieldValues => {
|
||||
return {
|
||||
apiUrl: "http://<your-host-addr>:5090/",
|
||||
apiVersion: "v3",
|
||||
apiRole: "user",
|
||||
username: "",
|
||||
password: "",
|
||||
};
|
||||
};
|
||||
|
||||
const AccessFormLeCDNConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: AccessFormLeCDNConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
apiUrl: z.string().url(t("common.errmsg.url_invalid")),
|
||||
role: z.union([z.literal("client"), z.literal("master")], {
|
||||
message: t("access.form.lecdn_api_role.placeholder"),
|
||||
}),
|
||||
username: z.string().nonempty(t("access.form.lecdn_username.placeholder")).trim(),
|
||||
password: z.string().nonempty(t("access.form.lecdn_password.placeholder")).trim(),
|
||||
allowInsecureConnections: z.boolean().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="apiUrl" label={t("access.form.lecdn_api_url.label")} rules={[formRule]}>
|
||||
<Input placeholder={t("access.form.lecdn_api_url.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="apiVersion" label={t("access.form.lecdn_api_version.label")} rules={[formRule]}>
|
||||
<Select options={["v3"].map((s) => ({ label: s, value: s }))} placeholder={t("access.form.lecdn_api_version.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="apiRole" label={t("access.form.lecdn_api_role.label")} rules={[formRule]}>
|
||||
<Radio.Group options={["user", "master"].map((s) => ({ label: t(`access.form.lecdn_api_role.option.${s}.label`), value: s }))} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="username" label={t("access.form.lecdn_username.label")} rules={[formRule]}>
|
||||
<Input autoComplete="new-password" placeholder={t("access.form.lecdn_username.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="password" label={t("access.form.lecdn_password.label")} rules={[formRule]}>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.lecdn_password.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="allowInsecureConnections" label={t("access.form.lecdn_allow_insecure_conns.label")} rules={[formRule]}>
|
||||
<Switch
|
||||
checkedChildren={t("access.form.lecdn_allow_insecure_conns.switch.on")}
|
||||
unCheckedChildren={t("access.form.lecdn_allow_insecure_conns.switch.off")}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default AccessFormLeCDNConfig;
|
@@ -65,7 +65,7 @@ const AccessFormProxmoxVEConfig = ({ form: formInst, formName, disabled, initial
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.proxmoxve_api_token_secret.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.proxmoxve_api_token_secret.placeholder")} />
|
||||
<Input.Password allowClear autoComplete="new-password" placeholder={t("access.form.proxmoxve_api_token_secret.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="allowInsecureConnections" label={t("access.form.proxmoxve_allow_insecure_conns.label")} rules={[formRule]}>
|
||||
|
82
ui/src/components/access/AccessFormRatPanelConfig.tsx
Normal file
82
ui/src/components/access/AccessFormRatPanelConfig.tsx
Normal file
@@ -0,0 +1,82 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input, Switch } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import { type AccessConfigForRatPanel } from "@/domain/access";
|
||||
|
||||
type AccessFormRatPanelConfigFieldValues = Nullish<AccessConfigForRatPanel>;
|
||||
|
||||
export type AccessFormRatPanelConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: AccessFormRatPanelConfigFieldValues;
|
||||
onValuesChange?: (values: AccessFormRatPanelConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): AccessFormRatPanelConfigFieldValues => {
|
||||
return {
|
||||
apiUrl: "http://<your-host-addr>:8888/",
|
||||
accessTokenId: 1,
|
||||
accessToken: "",
|
||||
};
|
||||
};
|
||||
|
||||
const AccessFormRatPanelConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: AccessFormRatPanelConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
apiUrl: z.string().url(t("common.errmsg.url_invalid")),
|
||||
accessTokenId: z.preprocess((v) => Number(v), z.number().positive(t("access.form.ratpanel_access_token_id.placeholder"))),
|
||||
accessToken: z.string().nonempty(t("access.form.ratpanel_access_token.placeholder")).trim(),
|
||||
allowInsecureConnections: z.boolean().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="apiUrl" label={t("access.form.ratpanel_api_url.label")} rules={[formRule]}>
|
||||
<Input placeholder={t("access.form.ratpanel_api_url.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="accessTokenId"
|
||||
label={t("access.form.ratpanel_access_token_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.ratpanel_access_token_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input type="number" placeholder={t("access.form.ratpanel_access_token_id.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="accessToken"
|
||||
label={t("access.form.ratpanel_access_token.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.ratpanel_access_token.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.ratpanel_access_token.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="allowInsecureConnections" label={t("access.form.ratpanel_allow_insecure_conns.label")} rules={[formRule]}>
|
||||
<Switch
|
||||
checkedChildren={t("access.form.ratpanel_allow_insecure_conns.switch.on")}
|
||||
unCheckedChildren={t("access.form.ratpanel_allow_insecure_conns.switch.off")}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default AccessFormRatPanelConfig;
|
@@ -81,7 +81,7 @@ const AccessFormUCloudConfig = ({ form: formInst, formName, disabled, initialVal
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.ucloud_project_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input autoComplete="new-password" placeholder={t("access.form.ucloud_project_id.placeholder")} />
|
||||
<Input allowClear autoComplete="new-password" placeholder={t("access.form.ucloud_project_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
|
@@ -66,7 +66,7 @@ const AccessFormVercelConfig = ({ form: formInst, formName, disabled, initialVal
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.vercel_team_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("access.form.vercel_team_id.placeholder")} />
|
||||
<Input allowClear placeholder={t("access.form.vercel_team_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
|
@@ -67,7 +67,6 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa
|
||||
}
|
||||
return true;
|
||||
}, t("access.form.webhook_headers.errmsg.invalid")),
|
||||
allowInsecureConnections: z.boolean().nullish(),
|
||||
defaultDataForDeployment: z
|
||||
.string()
|
||||
.nullish()
|
||||
@@ -96,11 +95,12 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa
|
||||
return false;
|
||||
}
|
||||
}, t("access.form.webhook_default_data.errmsg.json_invalid")),
|
||||
allowInsecureConnections: z.boolean().nullish(),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
||||
const handleWebhookHeadersBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {
|
||||
let value = e.target.value;
|
||||
const handleWebhookHeadersBlur = () => {
|
||||
let value = formInst.getFieldValue("headers");
|
||||
value = value.trim();
|
||||
value = value.replace(/(?<!\r)\n/g, "\r\n");
|
||||
formInst.setFieldValue("headers", value);
|
||||
@@ -279,7 +279,13 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.webhook_headers.tooltip") }}></span>}
|
||||
>
|
||||
<Input.TextArea autoSize={{ minRows: 3, maxRows: 10 }} placeholder={t("access.form.webhook_headers.placeholder")} onBlur={handleWebhookHeadersBlur} />
|
||||
<CodeInput
|
||||
height="auto"
|
||||
minHeight="64px"
|
||||
maxHeight="256px"
|
||||
placeholder={t("access.form.webhook_headers.placeholder")}
|
||||
onBlur={handleWebhookHeadersBlur}
|
||||
/>
|
||||
</Form.Item>
|
||||
|
||||
<Show when={!usage || usage === "deployment"}>
|
||||
|
@@ -42,7 +42,7 @@ const CertificateDetail = ({ data, ...props }: CertificateDetailProps) => {
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item label={t("certificate.props.issuer")}>
|
||||
<Input value={data.issuer} variant="filled" placeholder="" />
|
||||
<Input value={data.issuerOrg} variant="filled" placeholder="" />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item label={t("certificate.props.validity")}>
|
||||
|
@@ -72,8 +72,10 @@ const DeploymentProviderPicker = ({ className, style, autoFocus, filter, placeho
|
||||
DEPLOYMENT_CATEGORIES.LOADBALANCE,
|
||||
DEPLOYMENT_CATEGORIES.FIREWALL,
|
||||
DEPLOYMENT_CATEGORIES.AV,
|
||||
DEPLOYMENT_CATEGORIES.APIGATEWAY,
|
||||
DEPLOYMENT_CATEGORIES.SERVERLESS,
|
||||
DEPLOYMENT_CATEGORIES.WEBSITE,
|
||||
DEPLOYMENT_CATEGORIES.SSL,
|
||||
DEPLOYMENT_CATEGORIES.NAS,
|
||||
DEPLOYMENT_CATEGORIES.OTHER,
|
||||
].map((key) => ({
|
||||
|
@@ -27,6 +27,7 @@ import DeployNodeConfigFormAliyunDCDNConfig from "./DeployNodeConfigFormAliyunDC
|
||||
import DeployNodeConfigFormAliyunDDoSConfig from "./DeployNodeConfigFormAliyunDDoSConfig";
|
||||
import DeployNodeConfigFormAliyunESAConfig from "./DeployNodeConfigFormAliyunESAConfig";
|
||||
import DeployNodeConfigFormAliyunFCConfig from "./DeployNodeConfigFormAliyunFCConfig";
|
||||
import DeployNodeConfigFormAliyunGAConfig from "./DeployNodeConfigFormAliyunGAConfig";
|
||||
import DeployNodeConfigFormAliyunLiveConfig from "./DeployNodeConfigFormAliyunLiveConfig";
|
||||
import DeployNodeConfigFormAliyunNLBConfig from "./DeployNodeConfigFormAliyunNLBConfig";
|
||||
import DeployNodeConfigFormAliyunOSSConfig from "./DeployNodeConfigFormAliyunOSSConfig";
|
||||
@@ -41,11 +42,13 @@ import DeployNodeConfigFormBaiduCloudCDNConfig from "./DeployNodeConfigFormBaidu
|
||||
import DeployNodeConfigFormBaishanCDNConfig from "./DeployNodeConfigFormBaishanCDNConfig";
|
||||
import DeployNodeConfigFormBaotaPanelConsoleConfig from "./DeployNodeConfigFormBaotaPanelConsoleConfig";
|
||||
import DeployNodeConfigFormBaotaPanelSiteConfig from "./DeployNodeConfigFormBaotaPanelSiteConfig";
|
||||
import DeployNodeConfigFormBaotaWAFSiteConfig from "./DeployNodeConfigFormBaotaWAFSiteConfig";
|
||||
import DeployNodeConfigFormBunnyCDNConfig from "./DeployNodeConfigFormBunnyCDNConfig.tsx";
|
||||
import DeployNodeConfigFormBytePlusCDNConfig from "./DeployNodeConfigFormBytePlusCDNConfig";
|
||||
import DeployNodeConfigFormCdnflyConfig from "./DeployNodeConfigFormCdnflyConfig";
|
||||
import DeployNodeConfigFormDogeCloudCDNConfig from "./DeployNodeConfigFormDogeCloudCDNConfig";
|
||||
import DeployNodeConfigFormEdgioApplicationsConfig from "./DeployNodeConfigFormEdgioApplicationsConfig";
|
||||
import DeployNodeConfigFormFlexCDNConfig from "./DeployNodeConfigFormFlexCDNConfig";
|
||||
import DeployNodeConfigFormGcoreCDNConfig from "./DeployNodeConfigFormGcoreCDNConfig";
|
||||
import DeployNodeConfigFormGoEdgeConfig from "./DeployNodeConfigFormGoEdgeConfig";
|
||||
import DeployNodeConfigFormHuaweiCloudCDNConfig from "./DeployNodeConfigFormHuaweiCloudCDNConfig";
|
||||
@@ -56,6 +59,7 @@ import DeployNodeConfigFormJDCloudCDNConfig from "./DeployNodeConfigFormJDCloudC
|
||||
import DeployNodeConfigFormJDCloudLiveConfig from "./DeployNodeConfigFormJDCloudLiveConfig";
|
||||
import DeployNodeConfigFormJDCloudVODConfig from "./DeployNodeConfigFormJDCloudVODConfig";
|
||||
import DeployNodeConfigFormKubernetesSecretConfig from "./DeployNodeConfigFormKubernetesSecretConfig";
|
||||
import DeployNodeConfigFormLeCDNConfig from "./DeployNodeConfigFormLeCDNConfig";
|
||||
import DeployNodeConfigFormLocalConfig from "./DeployNodeConfigFormLocalConfig";
|
||||
import DeployNodeConfigFormNetlifySiteConfig from "./DeployNodeConfigFormNetlifySiteConfig";
|
||||
import DeployNodeConfigFormProxmoxVEConfig from "./DeployNodeConfigFormProxmoxVEConfig";
|
||||
@@ -63,6 +67,7 @@ import DeployNodeConfigFormQiniuCDNConfig from "./DeployNodeConfigFormQiniuCDNCo
|
||||
import DeployNodeConfigFormQiniuKodoConfig from "./DeployNodeConfigFormQiniuKodoConfig";
|
||||
import DeployNodeConfigFormQiniuPiliConfig from "./DeployNodeConfigFormQiniuPiliConfig";
|
||||
import DeployNodeConfigFormRainYunRCDNConfig from "./DeployNodeConfigFormRainYunRCDNConfig";
|
||||
import DeployNodeConfigFormRatPanelSiteConfig from "./DeployNodeConfigFormRatPanelSiteConfig";
|
||||
import DeployNodeConfigFormSafeLineConfig from "./DeployNodeConfigFormSafeLineConfig";
|
||||
import DeployNodeConfigFormSSHConfig from "./DeployNodeConfigFormSSHConfig.tsx";
|
||||
import DeployNodeConfigFormTencentCloudCDNConfig from "./DeployNodeConfigFormTencentCloudCDNConfig.tsx";
|
||||
@@ -87,7 +92,9 @@ import DeployNodeConfigFormVolcEngineDCDNConfig from "./DeployNodeConfigFormVolc
|
||||
import DeployNodeConfigFormVolcEngineImageXConfig from "./DeployNodeConfigFormVolcEngineImageXConfig.tsx";
|
||||
import DeployNodeConfigFormVolcEngineLiveConfig from "./DeployNodeConfigFormVolcEngineLiveConfig.tsx";
|
||||
import DeployNodeConfigFormVolcEngineTOSConfig from "./DeployNodeConfigFormVolcEngineTOSConfig.tsx";
|
||||
import DeployNodeConfigFormWangsuCDNConfig from "./DeployNodeConfigFormWangsuCDNConfig.tsx";
|
||||
import DeployNodeConfigFormWangsuCDNProConfig from "./DeployNodeConfigFormWangsuCDNProConfig.tsx";
|
||||
import DeployNodeConfigFormWangsuCertificateConfig from "./DeployNodeConfigFormWangsuCertificateConfig.tsx";
|
||||
import DeployNodeConfigFormWebhookConfig from "./DeployNodeConfigFormWebhookConfig.tsx";
|
||||
|
||||
type DeployNodeConfigFormFieldValues = Partial<WorkflowNodeConfigForDeploy>;
|
||||
@@ -201,6 +208,8 @@ const DeployNodeConfigForm = forwardRef<DeployNodeConfigFormInstance, DeployNode
|
||||
return <DeployNodeConfigFormAliyunESAConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_FC:
|
||||
return <DeployNodeConfigFormAliyunFCConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_GA:
|
||||
return <DeployNodeConfigFormAliyunGAConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_LIVE:
|
||||
return <DeployNodeConfigFormAliyunLiveConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_NLB:
|
||||
@@ -229,6 +238,8 @@ const DeployNodeConfigForm = forwardRef<DeployNodeConfigFormInstance, DeployNode
|
||||
return <DeployNodeConfigFormBaotaPanelConsoleConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.BAOTAPANEL_SITE:
|
||||
return <DeployNodeConfigFormBaotaPanelSiteConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.BAOTAWAF_SITE:
|
||||
return <DeployNodeConfigFormBaotaWAFSiteConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.BUNNY_CDN:
|
||||
return <DeployNodeConfigFormBunnyCDNConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.BYTEPLUS_CDN:
|
||||
@@ -239,6 +250,8 @@ const DeployNodeConfigForm = forwardRef<DeployNodeConfigFormInstance, DeployNode
|
||||
return <DeployNodeConfigFormDogeCloudCDNConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.EDGIO_APPLICATIONS:
|
||||
return <DeployNodeConfigFormEdgioApplicationsConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.FLEXCDN:
|
||||
return <DeployNodeConfigFormFlexCDNConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.GCORE_CDN:
|
||||
return <DeployNodeConfigFormGcoreCDNConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.GOEDGE:
|
||||
@@ -259,6 +272,8 @@ const DeployNodeConfigForm = forwardRef<DeployNodeConfigFormInstance, DeployNode
|
||||
return <DeployNodeConfigFormJDCloudVODConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.KUBERNETES_SECRET:
|
||||
return <DeployNodeConfigFormKubernetesSecretConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.LECDN:
|
||||
return <DeployNodeConfigFormLeCDNConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.LOCAL:
|
||||
return <DeployNodeConfigFormLocalConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.NETLIFY_SITE:
|
||||
@@ -273,6 +288,8 @@ const DeployNodeConfigForm = forwardRef<DeployNodeConfigFormInstance, DeployNode
|
||||
return <DeployNodeConfigFormQiniuPiliConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.RAINYUN_RCDN:
|
||||
return <DeployNodeConfigFormRainYunRCDNConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.RATPANEL_SITE:
|
||||
return <DeployNodeConfigFormRatPanelSiteConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.SAFELINE:
|
||||
return <DeployNodeConfigFormSafeLineConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.SSH:
|
||||
@@ -321,8 +338,12 @@ const DeployNodeConfigForm = forwardRef<DeployNodeConfigFormInstance, DeployNode
|
||||
return <DeployNodeConfigFormVolcEngineLiveConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.VOLCENGINE_TOS:
|
||||
return <DeployNodeConfigFormVolcEngineTOSConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.WANGSU_CDN:
|
||||
return <DeployNodeConfigFormWangsuCDNConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.WANGSU_CDNPRO:
|
||||
return <DeployNodeConfigFormWangsuCDNProConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.WANGSU_CERTIFICATE:
|
||||
return <DeployNodeConfigFormWangsuCertificateConfig {...nestedFormProps} />;
|
||||
case DEPLOYMENT_PROVIDERS.WEBHOOK:
|
||||
return <DeployNodeConfigFormWebhookConfig {...nestedFormProps} />;
|
||||
}
|
||||
|
@@ -28,7 +28,7 @@ const DeployNodeConfigFormAWSACMConfig = ({ form: formInst, formName, disabled,
|
||||
.string({ message: t("workflow_node.deploy.form.aws_acm_region.placeholder") })
|
||||
.nonempty(t("workflow_node.deploy.form.aws_acm_region.placeholder"))
|
||||
.trim(),
|
||||
certificateArn: z.string({ message: t("workflow_node.deploy.form.aws_acm_certificate_arn.placeholder") }).nullish(),
|
||||
certificateArn: z.string().nullish(),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
||||
@@ -60,7 +60,7 @@ const DeployNodeConfigFormAWSACMConfig = ({ form: formInst, formName, disabled,
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.aws_acm_certificate_arn.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.aws_acm_certificate_arn.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.aws_acm_certificate_arn.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
|
@@ -132,7 +132,7 @@ const DeployNodeConfigFormAliyunALBConfig = ({
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.aliyun_alb_snidomain.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.aliyun_alb_snidomain.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.aliyun_alb_snidomain.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
|
@@ -132,7 +132,7 @@ const DeployNodeConfigFormAliyunCLBConfig = ({
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.aliyun_clb_snidomain.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.aliyun_clb_snidomain.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.aliyun_clb_snidomain.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
|
@@ -0,0 +1,118 @@
|
||||
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 DeployNodeConfigFormAliyunGAConfigFieldValues = Nullish<{
|
||||
resourceType: string;
|
||||
acceleratorId?: string;
|
||||
listenerId?: string;
|
||||
domain?: string;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormAliyunGAConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: DeployNodeConfigFormAliyunGAConfigFieldValues;
|
||||
onValuesChange?: (values: DeployNodeConfigFormAliyunGAConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const RESOURCE_TYPE_ACCELERATOR = "accelerator" as const;
|
||||
const RESOURCE_TYPE_LISTENER = "listener" as const;
|
||||
|
||||
const initFormModel = (): DeployNodeConfigFormAliyunGAConfigFieldValues => {
|
||||
return {};
|
||||
};
|
||||
|
||||
const DeployNodeConfigFormAliyunGAConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: DeployNodeConfigFormAliyunGAConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
resourceType: z.union([z.literal(RESOURCE_TYPE_ACCELERATOR), z.literal(RESOURCE_TYPE_LISTENER)], {
|
||||
message: t("workflow_node.deploy.form.aliyun_ga_resource_type.placeholder"),
|
||||
}),
|
||||
acceleratorId: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim(),
|
||||
listenerId: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.trim()
|
||||
.nullish()
|
||||
.refine((v) => fieldResourceType !== RESOURCE_TYPE_LISTENER || !!v?.trim(), t("workflow_node.deploy.form.aliyun_ga_listener_id.placeholder")),
|
||||
domain: z
|
||||
.string()
|
||||
.nullish()
|
||||
.refine((v) => {
|
||||
if (![RESOURCE_TYPE_ACCELERATOR, RESOURCE_TYPE_LISTENER].includes(fieldResourceType)) return true;
|
||||
return !v || validDomainName(v!);
|
||||
}, 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.aliyun_ga_resource_type.label")} rules={[formRule]}>
|
||||
<Select placeholder={t("workflow_node.deploy.form.aliyun_ga_resource_type.placeholder")}>
|
||||
<Select.Option key={RESOURCE_TYPE_ACCELERATOR} value={RESOURCE_TYPE_ACCELERATOR}>
|
||||
{t("workflow_node.deploy.form.aliyun_ga_resource_type.option.accelerator.label")}
|
||||
</Select.Option>
|
||||
<Select.Option key={RESOURCE_TYPE_LISTENER} value={RESOURCE_TYPE_LISTENER}>
|
||||
{t("workflow_node.deploy.form.aliyun_ga_resource_type.option.listener.label")}
|
||||
</Select.Option>
|
||||
</Select>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="acceleratorId"
|
||||
label={t("workflow_node.deploy.form.aliyun_ga_accelerator_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.aliyun_ga_accelerator_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.aliyun_ga_accelerator_id.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_LISTENER}>
|
||||
<Form.Item
|
||||
name="listenerId"
|
||||
label={t("workflow_node.deploy.form.aliyun_ga_listener_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.aliyun_ga_listener_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.aliyun_ga_listener_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_ACCELERATOR || fieldResourceType === RESOURCE_TYPE_LISTENER}>
|
||||
<Form.Item
|
||||
name="domain"
|
||||
label={t("workflow_node.deploy.form.aliyun_ga_snidomain.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.aliyun_ga_snidomain.tooltip") }}></span>}
|
||||
>
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.aliyun_ga_snidomain.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeployNodeConfigFormAliyunGAConfig;
|
@@ -102,7 +102,7 @@ const DeployNodeConfigFormAliyunWAFConfig = ({
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.aliyun_waf_domain.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.aliyun_waf_domain.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.aliyun_waf_domain.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
|
@@ -35,7 +35,7 @@ const DeployNodeConfigFormAzureKeyVaultConfig = ({
|
||||
.nonempty(t("workflow_node.deploy.form.azure_keyvault_name.placeholder"))
|
||||
.trim(),
|
||||
certificateName: z
|
||||
.string({ message: t("workflow_node.deploy.form.azure_keyvault_certificate_name.placeholder") })
|
||||
.string()
|
||||
.nullish()
|
||||
.refine((v) => {
|
||||
if (!v) return true;
|
||||
|
@@ -135,7 +135,7 @@ const DeployNodeConfigFormBaiduCloudAppBLBConfig = ({
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.baiducloud_appblb_snidomain.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.baiducloud_appblb_snidomain.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.baiducloud_appblb_snidomain.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
|
@@ -135,7 +135,7 @@ const DeployNodeConfigFormBaiduCloudBLBConfig = ({
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.baiducloud_blb_snidomain.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.baiducloud_blb_snidomain.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.baiducloud_blb_snidomain.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
|
@@ -73,7 +73,7 @@ const DeployNodeConfigFormBaishanCDNConfig = ({
|
||||
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")} />
|
||||
<Input allowClear type="number" placeholder={t("workflow_node.deploy.form.baishan_cdn_certificate_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
|
@@ -0,0 +1,78 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input, InputNumber } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import { validPortNumber } from "@/utils/validators";
|
||||
|
||||
type DeployNodeConfigFormBaotaWAFSiteConfigFieldValues = Nullish<{
|
||||
siteName: string;
|
||||
sitePort: number;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormBaotaWAFSiteConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: DeployNodeConfigFormBaotaWAFSiteConfigFieldValues;
|
||||
onValuesChange?: (values: DeployNodeConfigFormBaotaWAFSiteConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): DeployNodeConfigFormBaotaWAFSiteConfigFieldValues => {
|
||||
return {
|
||||
siteName: "",
|
||||
sitePort: 443,
|
||||
};
|
||||
};
|
||||
|
||||
const DeployNodeConfigFormBaotaWAFSiteConfig = ({
|
||||
form: formInst,
|
||||
formName,
|
||||
disabled,
|
||||
initialValues,
|
||||
onValuesChange,
|
||||
}: DeployNodeConfigFormBaotaWAFSiteConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
siteName: z.string().nonempty(t("workflow_node.deploy.form.baotawaf_site_name.placeholder")).trim(),
|
||||
sitePort: z.preprocess(
|
||||
(v) => Number(v),
|
||||
z
|
||||
.number()
|
||||
.int(t("workflow_node.deploy.form.baotawaf_site_port.placeholder"))
|
||||
.refine((v) => validPortNumber(v), t("common.errmsg.port_invalid"))
|
||||
),
|
||||
});
|
||||
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="siteName"
|
||||
label={t("workflow_node.deploy.form.baotawaf_site_name.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.baotawaf_site_name.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.baotawaf_site_name.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="sitePort" label={t("workflow_node.deploy.form.baotawaf_site_port.label")} rules={[formRule]}>
|
||||
<InputNumber className="w-full" placeholder={t("access.form.ssh_port.placeholder")} min={1} max={65535} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeployNodeConfigFormBaotaWAFSiteConfig;
|
@@ -79,13 +79,23 @@ const DeployNodeConfigFormCdnflyConfig = ({ form: formInst, formName, disabled,
|
||||
</Form.Item>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_SITE}>
|
||||
<Form.Item name="siteId" label={t("workflow_node.deploy.form.cdnfly_site_id.label")} rules={[formRule]}>
|
||||
<Form.Item
|
||||
name="siteId"
|
||||
label={t("workflow_node.deploy.form.cdnfly_site_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.cdnfly_site_id.tooltip") }}></span>}
|
||||
>
|
||||
<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]}>
|
||||
<Form.Item
|
||||
name="certificateId"
|
||||
label={t("workflow_node.deploy.form.cdnfly_certificate_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.cdnfly_certificate_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input type="number" placeholder={t("workflow_node.deploy.form.cdnfly_certificate_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
|
@@ -0,0 +1,84 @@
|
||||
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 DeployNodeConfigFormFlexCDNConfigFieldValues = Nullish<{
|
||||
resourceType: string;
|
||||
certificateId?: string | number;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormFlexCDNConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: DeployNodeConfigFormFlexCDNConfigFieldValues;
|
||||
onValuesChange?: (values: DeployNodeConfigFormFlexCDNConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const RESOURCE_TYPE_CERTIFICATE = "certificate" as const;
|
||||
|
||||
const initFormModel = (): DeployNodeConfigFormFlexCDNConfigFieldValues => {
|
||||
return {
|
||||
resourceType: RESOURCE_TYPE_CERTIFICATE,
|
||||
certificateId: "",
|
||||
};
|
||||
};
|
||||
|
||||
const DeployNodeConfigFormFlexCDNConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: DeployNodeConfigFormFlexCDNConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, {
|
||||
message: t("workflow_node.deploy.form.flexcdn_resource_type.placeholder"),
|
||||
}),
|
||||
certificateId: z
|
||||
.union([z.string(), z.number().int()])
|
||||
.nullish()
|
||||
.refine((v) => {
|
||||
if (fieldResourceType !== RESOURCE_TYPE_CERTIFICATE) return true;
|
||||
return /^\d+$/.test(v + "") && +v! > 0;
|
||||
}, t("workflow_node.deploy.form.flexcdn_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.flexcdn_resource_type.label")} rules={[formRule]}>
|
||||
<Select placeholder={t("workflow_node.deploy.form.flexcdn_resource_type.placeholder")}>
|
||||
<Select.Option key={RESOURCE_TYPE_CERTIFICATE} value={RESOURCE_TYPE_CERTIFICATE}>
|
||||
{t("workflow_node.deploy.form.flexcdn_resource_type.option.certificate.label")}
|
||||
</Select.Option>
|
||||
</Select>
|
||||
</Form.Item>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_CERTIFICATE}>
|
||||
<Form.Item
|
||||
name="certificateId"
|
||||
label={t("workflow_node.deploy.form.flexcdn_certificate_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.flexcdn_certificate_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input type="number" placeholder={t("workflow_node.deploy.form.flexcdn_certificate_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeployNodeConfigFormFlexCDNConfig;
|
@@ -67,7 +67,7 @@ const DeployNodeConfigFormGcoreCDNConfig = ({ form: formInst, formName, disabled
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.gcore_cdn_certificate_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input type="number" placeholder={t("workflow_node.deploy.form.gcore_cdn_certificate_id.placeholder")} />
|
||||
<Input allowClear type="number" placeholder={t("workflow_node.deploy.form.gcore_cdn_certificate_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
|
@@ -68,7 +68,12 @@ const DeployNodeConfigFormGoEdgeConfig = ({ form: formInst, formName, disabled,
|
||||
</Form.Item>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_CERTIFICATE}>
|
||||
<Form.Item name="certificateId" label={t("workflow_node.deploy.form.goedge_certificate_id.label")} rules={[formRule]}>
|
||||
<Form.Item
|
||||
name="certificateId"
|
||||
label={t("workflow_node.deploy.form.goedge_certificate_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.goedge_certificate_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input type="number" placeholder={t("workflow_node.deploy.form.goedge_certificate_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
|
@@ -132,7 +132,7 @@ const DeployNodeConfigFormJDCloudALBConfig = ({
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.jdcloud_alb_snidomain.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.jdcloud_alb_snidomain.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.jdcloud_alb_snidomain.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
|
@@ -0,0 +1,103 @@
|
||||
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 DeployNodeConfigFormLeCDNConfigFieldValues = Nullish<{
|
||||
resourceType: string;
|
||||
certificateId?: string | number;
|
||||
clientId?: string | number;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormLeCDNConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: DeployNodeConfigFormLeCDNConfigFieldValues;
|
||||
onValuesChange?: (values: DeployNodeConfigFormLeCDNConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const RESOURCE_TYPE_CERTIFICATE = "certificate" as const;
|
||||
|
||||
const initFormModel = (): DeployNodeConfigFormLeCDNConfigFieldValues => {
|
||||
return {
|
||||
resourceType: RESOURCE_TYPE_CERTIFICATE,
|
||||
certificateId: "",
|
||||
clientId: "",
|
||||
};
|
||||
};
|
||||
|
||||
const DeployNodeConfigFormLeCDNConfig = ({ form: formInst, formName, disabled, initialValues, onValuesChange }: DeployNodeConfigFormLeCDNConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, {
|
||||
message: t("workflow_node.deploy.form.lecdn_resource_type.placeholder"),
|
||||
}),
|
||||
certificateId: z
|
||||
.union([z.string(), z.number().int()])
|
||||
.nullish()
|
||||
.refine((v) => {
|
||||
if (fieldResourceType !== RESOURCE_TYPE_CERTIFICATE) return true;
|
||||
return /^\d+$/.test(v + "") && +v! > 0;
|
||||
}, t("workflow_node.deploy.form.lecdn_certificate_id.placeholder")),
|
||||
clientId: z
|
||||
.union([z.string(), z.number().int()])
|
||||
.nullish()
|
||||
.refine((v) => {
|
||||
if (fieldResourceType !== RESOURCE_TYPE_CERTIFICATE) return true;
|
||||
if (v == null || v === "") return true;
|
||||
return /^\d+$/.test(v + "") && +v! > 0;
|
||||
}, t("workflow_node.deploy.form.lecdn_client_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.lecdn_resource_type.label")} rules={[formRule]}>
|
||||
<Select placeholder={t("workflow_node.deploy.form.lecdn_resource_type.placeholder")}>
|
||||
<Select.Option key={RESOURCE_TYPE_CERTIFICATE} value={RESOURCE_TYPE_CERTIFICATE}>
|
||||
{t("workflow_node.deploy.form.lecdn_resource_type.option.certificate.label")}
|
||||
</Select.Option>
|
||||
</Select>
|
||||
</Form.Item>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_CERTIFICATE}>
|
||||
<Form.Item
|
||||
name="certificateId"
|
||||
label={t("workflow_node.deploy.form.lecdn_certificate_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.lecdn_certificate_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input type="number" placeholder={t("workflow_node.deploy.form.lecdn_certificate_id.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="clientId"
|
||||
label={t("workflow_node.deploy.form.lecdn_client_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.lecdn_client_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input type="number" allowClear placeholder={t("workflow_node.deploy.form.lecdn_client_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeployNodeConfigFormLeCDNConfig;
|
@@ -351,7 +351,7 @@ const DeployNodeConfigFormLocalConfig = ({ form: formInst, formName, disabled, i
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.local_servercert_path.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.local_servercert_path.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.local_servercert_path.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
@@ -360,7 +360,7 @@ const DeployNodeConfigFormLocalConfig = ({ form: formInst, formName, disabled, i
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.local_intermediacert_path.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.local_intermediacert_path.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.local_intermediacert_path.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
|
||||
|
@@ -0,0 +1,63 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
type DeployNodeConfigFormRatPanelSiteConfigFieldValues = Nullish<{
|
||||
siteName: string;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormRatPanelSiteConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: DeployNodeConfigFormRatPanelSiteConfigFieldValues;
|
||||
onValuesChange?: (values: DeployNodeConfigFormRatPanelSiteConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): DeployNodeConfigFormRatPanelSiteConfigFieldValues => {
|
||||
return {
|
||||
siteName: "",
|
||||
};
|
||||
};
|
||||
|
||||
const DeployNodeConfigFormRatPanelSiteConfig = ({
|
||||
form: formInst,
|
||||
formName,
|
||||
disabled,
|
||||
initialValues,
|
||||
onValuesChange,
|
||||
}: DeployNodeConfigFormRatPanelSiteConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
siteName: z.string().nonempty(t("workflow_node.deploy.form.ratpanel_site_name.placeholder")),
|
||||
});
|
||||
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="siteName"
|
||||
label={t("workflow_node.deploy.form.ratpanel_site_name.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.ratpanel_site_name.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.ratpanel_site_name.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeployNodeConfigFormRatPanelSiteConfig;
|
@@ -363,7 +363,7 @@ const DeployNodeConfigFormSSHConfig = ({ form: formInst, formName, disabled, ini
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.ssh_servercert_path.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.ssh_servercert_path.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.ssh_servercert_path.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
@@ -372,7 +372,7 @@ const DeployNodeConfigFormSSHConfig = ({ form: formInst, formName, disabled, ini
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.ssh_intermediacert_path.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.ssh_intermediacert_path.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.ssh_intermediacert_path.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
|
||||
|
@@ -68,7 +68,12 @@ const DeployNodeConfigFormSafeLineConfig = ({ form: formInst, formName, disabled
|
||||
</Form.Item>
|
||||
|
||||
<Show when={fieldResourceType === RESOURCE_TYPE_CERTIFICATE}>
|
||||
<Form.Item name="certificateId" label={t("workflow_node.deploy.form.safeline_certificate_id.label")} rules={[formRule]}>
|
||||
<Form.Item
|
||||
name="certificateId"
|
||||
label={t("workflow_node.deploy.form.safeline_certificate_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.safeline_certificate_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input type="number" placeholder={t("workflow_node.deploy.form.safeline_certificate_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
|
@@ -144,7 +144,7 @@ const DeployNodeConfigFormTencentCloudCLBConfig = ({
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.tencentcloud_clb_snidomain.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.tencentcloud_clb_snidomain.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.tencentcloud_clb_snidomain.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
|
||||
|
@@ -140,7 +140,7 @@ const DeployNodeConfigFormVolcEngineALBConfig = ({
|
||||
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")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.volcengine_alb_snidomain.placeholder")} />
|
||||
</Form.Item>
|
||||
</Show>
|
||||
</Form>
|
||||
|
@@ -0,0 +1,146 @@
|
||||
import { memo } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { FormOutlined as FormOutlinedIcon } from "@ant-design/icons";
|
||||
import { Button, Form, type FormInstance, Input, Space } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import ModalForm from "@/components/ModalForm";
|
||||
import MultipleInput from "@/components/MultipleInput";
|
||||
import { useAntdForm } from "@/hooks";
|
||||
import { validDomainName } from "@/utils/validators";
|
||||
|
||||
type DeployNodeConfigFormWangsuCDNConfigFieldValues = Nullish<{
|
||||
domains: string;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormWangsuCDNConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: DeployNodeConfigFormWangsuCDNConfigFieldValues;
|
||||
onValuesChange?: (values: DeployNodeConfigFormWangsuCDNConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const MULTIPLE_INPUT_DELIMITER = ";";
|
||||
|
||||
const initFormModel = (): DeployNodeConfigFormWangsuCDNConfigFieldValues => {
|
||||
return {
|
||||
domains: "",
|
||||
};
|
||||
};
|
||||
|
||||
const DeployNodeConfigFormWangsuCDNConfig = ({
|
||||
form: formInst,
|
||||
formName,
|
||||
disabled,
|
||||
initialValues,
|
||||
onValuesChange,
|
||||
}: DeployNodeConfigFormWangsuCDNConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
domains: z
|
||||
.string()
|
||||
.nullish()
|
||||
.refine((v) => {
|
||||
if (!v) return false;
|
||||
return String(v)
|
||||
.split(MULTIPLE_INPUT_DELIMITER)
|
||||
.every((e) => validDomainName(e));
|
||||
}, t("workflow_node.deploy.form.wangsu_cdn_domains.placeholder")),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
||||
const fieldDomains = Form.useWatch<string>("domains", 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
|
||||
label={t("workflow_node.deploy.form.wangsu_cdn_domains.label")}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.wangsu_cdn_domains.tooltip") }}></span>}
|
||||
>
|
||||
<Space.Compact style={{ width: "100%" }}>
|
||||
<Form.Item name="domains" noStyle rules={[formRule]}>
|
||||
<Input
|
||||
allowClear
|
||||
disabled={disabled}
|
||||
value={fieldDomains}
|
||||
placeholder={t("workflow_node.deploy.form.wangsu_cdn_domains.placeholder")}
|
||||
onChange={(e) => {
|
||||
formInst.setFieldValue("domains", e.target.value);
|
||||
}}
|
||||
onClear={() => {
|
||||
formInst.setFieldValue("domains", "");
|
||||
}}
|
||||
/>
|
||||
</Form.Item>
|
||||
<SiteNamesModalInput
|
||||
value={fieldDomains}
|
||||
trigger={
|
||||
<Button disabled={disabled}>
|
||||
<FormOutlinedIcon />
|
||||
</Button>
|
||||
}
|
||||
onChange={(value) => {
|
||||
formInst.setFieldValue("domains", value);
|
||||
}}
|
||||
/>
|
||||
</Space.Compact>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
const SiteNamesModalInput = memo(({ value, trigger, onChange }: { value?: string; trigger?: React.ReactNode; onChange?: (value: string) => void }) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
domains: z.array(z.string()).refine((v) => {
|
||||
return v.every((e) => validDomainName(e));
|
||||
}, t("workflow_node.deploy.form.wangsu_cdn_domains.errmsg.invalid")),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
const { form: formInst, formProps } = useAntdForm({
|
||||
name: "workflowNodeDeployConfigFormWangsuCDNNamesModalInput",
|
||||
initialValues: { domains: value?.split(MULTIPLE_INPUT_DELIMITER) },
|
||||
onSubmit: (values) => {
|
||||
onChange?.(
|
||||
values.domains
|
||||
.map((e) => e.trim())
|
||||
.filter((e) => !!e)
|
||||
.join(MULTIPLE_INPUT_DELIMITER)
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
return (
|
||||
<ModalForm
|
||||
{...formProps}
|
||||
layout="vertical"
|
||||
form={formInst}
|
||||
modalProps={{ destroyOnHidden: true }}
|
||||
title={t("workflow_node.deploy.form.wangsu_cdn_domains.multiple_input_modal.title")}
|
||||
trigger={trigger}
|
||||
validateTrigger="onSubmit"
|
||||
width={480}
|
||||
>
|
||||
<Form.Item name="domains" rules={[formRule]}>
|
||||
<MultipleInput placeholder={t("workflow_node.deploy.form.wangsu_cdn_domains.multiple_input_modal.placeholder")} />
|
||||
</Form.Item>
|
||||
</ModalForm>
|
||||
);
|
||||
});
|
||||
|
||||
export default DeployNodeConfigFormWangsuCDNConfig;
|
@@ -5,37 +5,37 @@ import { z } from "zod";
|
||||
|
||||
import { validDomainName } from "@/utils/validators";
|
||||
|
||||
type DeployNodeConfigFormBaishanCDNConfigFieldValues = Nullish<{
|
||||
type DeployNodeConfigFormWangsuCDNProConfigFieldValues = Nullish<{
|
||||
environment: string;
|
||||
domain: string;
|
||||
certificateId?: string;
|
||||
webhookId?: string;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormBaishanCDNConfigProps = {
|
||||
export type DeployNodeConfigFormWangsuCDNProConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: DeployNodeConfigFormBaishanCDNConfigFieldValues;
|
||||
onValuesChange?: (values: DeployNodeConfigFormBaishanCDNConfigFieldValues) => void;
|
||||
initialValues?: DeployNodeConfigFormWangsuCDNProConfigFieldValues;
|
||||
onValuesChange?: (values: DeployNodeConfigFormWangsuCDNProConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const ENVIRONMENT_PRODUCTION = "production" as const;
|
||||
const ENVIRONMENT_STAGING = "stating" as const;
|
||||
|
||||
const initFormModel = (): DeployNodeConfigFormBaishanCDNConfigFieldValues => {
|
||||
const initFormModel = (): DeployNodeConfigFormWangsuCDNProConfigFieldValues => {
|
||||
return {
|
||||
environment: ENVIRONMENT_PRODUCTION,
|
||||
};
|
||||
};
|
||||
|
||||
const DeployNodeConfigFormBaishanCDNConfig = ({
|
||||
const DeployNodeConfigFormWangsuCDNProConfig = ({
|
||||
form: formInst,
|
||||
formName,
|
||||
disabled,
|
||||
initialValues,
|
||||
onValuesChange,
|
||||
}: DeployNodeConfigFormBaishanCDNConfigProps) => {
|
||||
}: DeployNodeConfigFormWangsuCDNProConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
@@ -89,7 +89,7 @@ const DeployNodeConfigFormBaishanCDNConfig = ({
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.wangsu_cdnpro_certificate_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.wangsu_cdnpro_certificate_id.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.wangsu_cdnpro_certificate_id.placeholder")} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
@@ -98,10 +98,10 @@ const DeployNodeConfigFormBaishanCDNConfig = ({
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.wangsu_cdnpro_webhook_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input placeholder={t("workflow_node.deploy.form.wangsu_cdnpro_webhook_id.placeholder")} />
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.wangsu_cdnpro_webhook_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeployNodeConfigFormBaishanCDNConfig;
|
||||
export default DeployNodeConfigFormWangsuCDNProConfig;
|
||||
|
@@ -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";
|
||||
|
||||
type DeployNodeConfigFormWangsuCertificateConfigFieldValues = Nullish<{
|
||||
certificateId?: string;
|
||||
}>;
|
||||
|
||||
export type DeployNodeConfigFormWangsuCertificateConfigProps = {
|
||||
form: FormInstance;
|
||||
formName: string;
|
||||
disabled?: boolean;
|
||||
initialValues?: DeployNodeConfigFormWangsuCertificateConfigFieldValues;
|
||||
onValuesChange?: (values: DeployNodeConfigFormWangsuCertificateConfigFieldValues) => void;
|
||||
};
|
||||
|
||||
const initFormModel = (): DeployNodeConfigFormWangsuCertificateConfigFieldValues => {
|
||||
return {};
|
||||
};
|
||||
|
||||
const DeployNodeConfigFormWangsuCertificateConfig = ({
|
||||
form: formInst,
|
||||
formName,
|
||||
disabled,
|
||||
initialValues,
|
||||
onValuesChange,
|
||||
}: DeployNodeConfigFormWangsuCertificateConfigProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const formSchema = z.object({
|
||||
certificateId: z.string().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="certificateId"
|
||||
label={t("workflow_node.deploy.form.wangsu_certificate_id.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("workflow_node.deploy.form.wangsu_certificate_id.tooltip") }}></span>}
|
||||
>
|
||||
<Input allowClear placeholder={t("workflow_node.deploy.form.wangsu_certificate_id.placeholder")} />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeployNodeConfigFormWangsuCertificateConfig;
|
@@ -7,6 +7,7 @@ export interface AccessModel extends BaseModel {
|
||||
*/ Record<string, unknown> &
|
||||
(
|
||||
| AccessConfigFor1Panel
|
||||
| AccessConfigForACMECA
|
||||
| AccessConfigForACMEHttpReq
|
||||
| AccessConfigForAliyun
|
||||
| AccessConfigForAWS
|
||||
@@ -14,6 +15,7 @@ export interface AccessModel extends BaseModel {
|
||||
| AccessConfigForBaiduCloud
|
||||
| AccessConfigForBaishan
|
||||
| AccessConfigForBaotaPanel
|
||||
| AccessConfigForBaotaWAF
|
||||
| AccessConfigForBunny
|
||||
| AccessConfigForBytePlus
|
||||
| AccessConfigForCacheFly
|
||||
@@ -28,6 +30,7 @@ export interface AccessModel extends BaseModel {
|
||||
| AccessConfigForDynv6
|
||||
| AccessConfigForEdgio
|
||||
| AccessConfigForEmail
|
||||
| AccessConfigForFlexCDN
|
||||
| AccessConfigForGcore
|
||||
| AccessConfigForGname
|
||||
| AccessConfigForGoDaddy
|
||||
@@ -37,6 +40,7 @@ export interface AccessModel extends BaseModel {
|
||||
| AccessConfigForJDCloud
|
||||
| AccessConfigForKubernetes
|
||||
| AccessConfigForLarkBot
|
||||
| AccessConfigForLeCDN
|
||||
| AccessConfigForMattermost
|
||||
| AccessConfigForNamecheap
|
||||
| AccessConfigForNameDotCom
|
||||
@@ -48,6 +52,7 @@ export interface AccessModel extends BaseModel {
|
||||
| AccessConfigForProxmoxVE
|
||||
| AccessConfigForQiniu
|
||||
| AccessConfigForRainYun
|
||||
| AccessConfigForRatPanel
|
||||
| AccessConfigForSafeLine
|
||||
| AccessConfigForSSH
|
||||
| AccessConfigForSSLCom
|
||||
@@ -69,10 +74,17 @@ export interface AccessModel extends BaseModel {
|
||||
// #region AccessConfig
|
||||
export type AccessConfigFor1Panel = {
|
||||
apiUrl: string;
|
||||
apiVersion: string;
|
||||
apiKey: string;
|
||||
allowInsecureConnections?: boolean;
|
||||
};
|
||||
|
||||
export type AccessConfigForACMECA = {
|
||||
endpoint: string;
|
||||
eabKid?: string;
|
||||
eabHmacKey?: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForACMEHttpReq = {
|
||||
endpoint: string;
|
||||
mode?: string;
|
||||
@@ -112,6 +124,12 @@ export type AccessConfigForBaotaPanel = {
|
||||
allowInsecureConnections?: boolean;
|
||||
};
|
||||
|
||||
export type AccessConfigForBaotaWAF = {
|
||||
apiUrl: string;
|
||||
apiKey: string;
|
||||
allowInsecureConnections?: boolean;
|
||||
};
|
||||
|
||||
export type AccessConfigForBunny = {
|
||||
apiKey: string;
|
||||
};
|
||||
@@ -185,6 +203,14 @@ export type AccessConfigForEmail = {
|
||||
defaultReceiverAddress?: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForFlexCDN = {
|
||||
apiUrl: string;
|
||||
apiRole: string;
|
||||
accessKeyId: string;
|
||||
accessKey: string;
|
||||
allowInsecureConnections?: boolean;
|
||||
};
|
||||
|
||||
export type AccessConfigForGcore = {
|
||||
apiToken: string;
|
||||
};
|
||||
@@ -230,6 +256,15 @@ export type AccessConfigForLarkBot = {
|
||||
webhookUrl: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForLeCDN = {
|
||||
apiUrl: string;
|
||||
apiVersion: string;
|
||||
apiRole: string;
|
||||
username: string;
|
||||
password: string;
|
||||
allowInsecureConnections?: boolean;
|
||||
};
|
||||
|
||||
export type AccessConfigForMattermost = {
|
||||
serverUrl: string;
|
||||
username: string;
|
||||
@@ -292,6 +327,13 @@ export type AccessConfigForRainYun = {
|
||||
apiKey: string;
|
||||
};
|
||||
|
||||
export type AccessConfigForRatPanel = {
|
||||
apiUrl: string;
|
||||
accessTokenId: number;
|
||||
accessToken: string;
|
||||
allowInsecureConnections?: boolean;
|
||||
};
|
||||
|
||||
export type AccessConfigForSafeLine = {
|
||||
apiUrl: string;
|
||||
apiToken: string;
|
||||
|
@@ -6,7 +6,7 @@ export interface CertificateModel extends BaseModel {
|
||||
serialNumber: string;
|
||||
certificate: string;
|
||||
privateKey: string;
|
||||
issuer: string;
|
||||
issuerOrg: string;
|
||||
keyAlgorithm: string;
|
||||
effectAt: ISO8601String;
|
||||
expireAt: ISO8601String;
|
||||
|
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
export const ACCESS_PROVIDERS = Object.freeze({
|
||||
["1PANEL"]: "1panel",
|
||||
ACMECA: "acmeca",
|
||||
ACMEHTTPREQ: "acmehttpreq",
|
||||
ALIYUN: "aliyun",
|
||||
AWS: "aws",
|
||||
@@ -12,6 +13,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
|
||||
BAIDUCLOUD: "baiducloud",
|
||||
BAISHAN: "baishan",
|
||||
BAOTAPANEL: "baotapanel",
|
||||
BAOTAWAF: "baotawaf",
|
||||
BUNNY: "bunny",
|
||||
BYTEPLUS: "byteplus",
|
||||
BUYPASS: "buypass",
|
||||
@@ -27,6 +29,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
|
||||
DYNV6: "dynv6",
|
||||
EDGIO: "edgio",
|
||||
EMAIL: "email",
|
||||
FLEXCDN: "flexcdn",
|
||||
GCORE: "gcore",
|
||||
GNAME: "gname",
|
||||
GODADDY: "godaddy",
|
||||
@@ -36,6 +39,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
|
||||
JDCLOUD: "jdcloud",
|
||||
KUBERNETES: "k8s",
|
||||
LARKBOT: "larkbot",
|
||||
LECDN: "lecdn",
|
||||
LETSENCRYPT: "letsencrypt",
|
||||
LETSENCRYPTSTAGING: "letsencryptstaging",
|
||||
LOCAL: "local",
|
||||
@@ -51,6 +55,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
|
||||
PROXMOXVE: "proxmoxve",
|
||||
QINIU: "qiniu",
|
||||
RAINYUN: "rainyun",
|
||||
RATPANEL: "ratpanel",
|
||||
SAFELINE: "safeline",
|
||||
SSH: "ssh",
|
||||
SSLCOM: "sslcom",
|
||||
@@ -120,10 +125,14 @@ export const accessProvidersMap: Map<AccessProvider["type"] | string, AccessProv
|
||||
[ACCESS_PROVIDERS.SAFELINE, "provider.safeline", "/imgs/providers/safeline.svg", [ACCESS_USAGES.HOSTING]],
|
||||
[ACCESS_PROVIDERS["1PANEL"], "provider.1panel", "/imgs/providers/1panel.svg", [ACCESS_USAGES.HOSTING]],
|
||||
[ACCESS_PROVIDERS.BAOTAPANEL, "provider.baotapanel", "/imgs/providers/baotapanel.svg", [ACCESS_USAGES.HOSTING]],
|
||||
[ACCESS_PROVIDERS.BAOTAWAF, "provider.baotawaf", "/imgs/providers/baotawaf.svg", [ACCESS_USAGES.HOSTING]],
|
||||
[ACCESS_PROVIDERS.RATPANEL, "provider.ratpanel", "/imgs/providers/ratpanel.png", [ACCESS_USAGES.HOSTING]],
|
||||
[ACCESS_PROVIDERS.CACHEFLY, "provider.cachefly", "/imgs/providers/cachefly.png", [ACCESS_USAGES.HOSTING]],
|
||||
[ACCESS_PROVIDERS.CDNFLY, "provider.cdnfly", "/imgs/providers/cdnfly.png", [ACCESS_USAGES.HOSTING]],
|
||||
[ACCESS_PROVIDERS.EDGIO, "provider.edgio", "/imgs/providers/edgio.svg", [ACCESS_USAGES.HOSTING]],
|
||||
[ACCESS_PROVIDERS.FLEXCDN, "provider.flexcdn", "/imgs/providers/flexcdn.png", [ACCESS_USAGES.HOSTING]],
|
||||
[ACCESS_PROVIDERS.GOEDGE, "provider.goedge", "/imgs/providers/goedge.png", [ACCESS_USAGES.HOSTING]],
|
||||
[ACCESS_PROVIDERS.LECDN, "provider.lecdn", "/imgs/providers/lecdn.svg", [ACCESS_USAGES.HOSTING]],
|
||||
[ACCESS_PROVIDERS.PROXMOXVE, "provider.proxmoxve", "/imgs/providers/proxmoxve.svg", [ACCESS_USAGES.HOSTING]],
|
||||
|
||||
[ACCESS_PROVIDERS.CLOUDFLARE, "provider.cloudflare", "/imgs/providers/cloudflare.svg", [ACCESS_USAGES.DNS]],
|
||||
@@ -151,6 +160,7 @@ export const accessProvidersMap: Map<AccessProvider["type"] | string, AccessProv
|
||||
[ACCESS_PROVIDERS.GOOGLETRUSTSERVICES, "provider.googletrustservices", "/imgs/providers/google.svg", [ACCESS_USAGES.CA]],
|
||||
[ACCESS_PROVIDERS.SSLCOM, "provider.sslcom", "/imgs/providers/sslcom.svg", [ACCESS_USAGES.CA]],
|
||||
[ACCESS_PROVIDERS.ZEROSSL, "provider.zerossl", "/imgs/providers/zerossl.svg", [ACCESS_USAGES.CA]],
|
||||
[ACCESS_PROVIDERS.ACMECA, "provider.acmeca", "/imgs/providers/acmeca.svg", [ACCESS_USAGES.CA]],
|
||||
|
||||
[ACCESS_PROVIDERS.EMAIL, "provider.email", "/imgs/providers/email.svg", [ACCESS_USAGES.NOTIFICATION]],
|
||||
[ACCESS_PROVIDERS.DINGTALKBOT, "provider.dingtalkbot", "/imgs/providers/dingtalk.svg", [ACCESS_USAGES.NOTIFICATION]],
|
||||
@@ -177,6 +187,7 @@ export const accessProvidersMap: Map<AccessProvider["type"] | string, AccessProv
|
||||
NOTICE: If you add new constant, please keep ASCII order.
|
||||
*/
|
||||
export const CA_PROVIDERS = Object.freeze({
|
||||
ACMECA: `${ACCESS_PROVIDERS.ACMECA}`,
|
||||
BUYPASS: `${ACCESS_PROVIDERS.BUYPASS}`,
|
||||
GOOGLETRUSTSERVICES: `${ACCESS_PROVIDERS.GOOGLETRUSTSERVICES}`,
|
||||
LETSENCRYPT: `${ACCESS_PROVIDERS.LETSENCRYPT}`,
|
||||
@@ -207,6 +218,7 @@ export const caProvidersMap: Map<CAProvider["type"] | string, CAProvider> = new
|
||||
[CA_PROVIDERS.GOOGLETRUSTSERVICES],
|
||||
[CA_PROVIDERS.SSLCOM],
|
||||
[CA_PROVIDERS.ZEROSSL],
|
||||
[CA_PROVIDERS.ACMECA],
|
||||
].map(([type, builtin]) => [
|
||||
type,
|
||||
{
|
||||
@@ -345,6 +357,7 @@ export const DEPLOYMENT_PROVIDERS = Object.freeze({
|
||||
ALIYUN_DDOS: `${ACCESS_PROVIDERS.ALIYUN}-ddospro`,
|
||||
ALIYUN_ESA: `${ACCESS_PROVIDERS.ALIYUN}-esa`,
|
||||
ALIYUN_FC: `${ACCESS_PROVIDERS.ALIYUN}-fc`,
|
||||
ALIYUN_GA: `${ACCESS_PROVIDERS.ALIYUN}-ga`,
|
||||
ALIYUN_LIVE: `${ACCESS_PROVIDERS.ALIYUN}-live`,
|
||||
ALIYUN_NLB: `${ACCESS_PROVIDERS.ALIYUN}-nlb`,
|
||||
ALIYUN_OSS: `${ACCESS_PROVIDERS.ALIYUN}-oss`,
|
||||
@@ -360,12 +373,15 @@ export const DEPLOYMENT_PROVIDERS = Object.freeze({
|
||||
BAISHAN_CDN: `${ACCESS_PROVIDERS.BAISHAN}-cdn`,
|
||||
BAOTAPANEL_CONSOLE: `${ACCESS_PROVIDERS.BAOTAPANEL}-console`,
|
||||
BAOTAPANEL_SITE: `${ACCESS_PROVIDERS.BAOTAPANEL}-site`,
|
||||
BAOTAWAF_CONSOLE: `${ACCESS_PROVIDERS.BAOTAWAF}-console`,
|
||||
BAOTAWAF_SITE: `${ACCESS_PROVIDERS.BAOTAWAF}-site`,
|
||||
BUNNY_CDN: `${ACCESS_PROVIDERS.BUNNY}-cdn`,
|
||||
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`,
|
||||
FLEXCDN: `${ACCESS_PROVIDERS.FLEXCDN}`,
|
||||
GCORE_CDN: `${ACCESS_PROVIDERS.GCORE}-cdn`,
|
||||
GOEDGE: `${ACCESS_PROVIDERS.GOEDGE}`,
|
||||
HUAWEICLOUD_CDN: `${ACCESS_PROVIDERS.HUAWEICLOUD}-cdn`,
|
||||
@@ -377,6 +393,7 @@ export const DEPLOYMENT_PROVIDERS = Object.freeze({
|
||||
JDCLOUD_LIVE: `${ACCESS_PROVIDERS.JDCLOUD}-live`,
|
||||
JDCLOUD_VOD: `${ACCESS_PROVIDERS.JDCLOUD}-vod`,
|
||||
KUBERNETES_SECRET: `${ACCESS_PROVIDERS.KUBERNETES}-secret`,
|
||||
LECDN: `${ACCESS_PROVIDERS.LECDN}`,
|
||||
LOCAL: `${ACCESS_PROVIDERS.LOCAL}`,
|
||||
NETLIFY_SITE: `${ACCESS_PROVIDERS.NETLIFY}-site`,
|
||||
PROXMOXVE: `${ACCESS_PROVIDERS.PROXMOXVE}`,
|
||||
@@ -384,6 +401,8 @@ export const DEPLOYMENT_PROVIDERS = Object.freeze({
|
||||
QINIU_KODO: `${ACCESS_PROVIDERS.QINIU}-kodo`,
|
||||
QINIU_PILI: `${ACCESS_PROVIDERS.QINIU}-pili`,
|
||||
RAINYUN_RCDN: `${ACCESS_PROVIDERS.RAINYUN}-rcdn`,
|
||||
RATPANEL_CONSOLE: `${ACCESS_PROVIDERS.RATPANEL}-console`,
|
||||
RATPANEL_SITE: `${ACCESS_PROVIDERS.RATPANEL}-site`,
|
||||
SAFELINE: `${ACCESS_PROVIDERS.SAFELINE}`,
|
||||
SSH: `${ACCESS_PROVIDERS.SSH}`,
|
||||
TENCENTCLOUD_CDN: `${ACCESS_PROVIDERS.TENCENTCLOUD}-cdn`,
|
||||
@@ -409,7 +428,9 @@ export const DEPLOYMENT_PROVIDERS = Object.freeze({
|
||||
VOLCENGINE_IMAGEX: `${ACCESS_PROVIDERS.VOLCENGINE}-imagex`,
|
||||
VOLCENGINE_LIVE: `${ACCESS_PROVIDERS.VOLCENGINE}-live`,
|
||||
VOLCENGINE_TOS: `${ACCESS_PROVIDERS.VOLCENGINE}-tos`,
|
||||
WANGSU_CDN: `${ACCESS_PROVIDERS.WANGSU}-cdn`,
|
||||
WANGSU_CDNPRO: `${ACCESS_PROVIDERS.WANGSU}-cdnpro`,
|
||||
WANGSU_CERTIFICATE: `${ACCESS_PROVIDERS.WANGSU}-certificate`,
|
||||
WEBHOOK: `${ACCESS_PROVIDERS.WEBHOOK}`,
|
||||
} as const);
|
||||
|
||||
@@ -422,8 +443,10 @@ export const DEPLOYMENT_CATEGORIES = Object.freeze({
|
||||
LOADBALANCE: "loadbalance",
|
||||
FIREWALL: "firewall",
|
||||
AV: "av",
|
||||
APIGATEWAY: "apigw",
|
||||
SERVERLESS: "serverless",
|
||||
WEBSITE: "website",
|
||||
SSL: "ssl",
|
||||
NAS: "nas",
|
||||
OTHER: "other",
|
||||
} as const);
|
||||
@@ -461,9 +484,10 @@ export const deploymentProvidersMap: Map<DeploymentProvider["type"] | string, De
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_LIVE, "provider.aliyun.live", DEPLOYMENT_CATEGORIES.AV],
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_VOD, "provider.aliyun.vod", DEPLOYMENT_CATEGORIES.AV],
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_FC, "provider.aliyun.fc", DEPLOYMENT_CATEGORIES.SERVERLESS],
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_APIGW, "provider.aliyun.apigw", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_CAS, "provider.aliyun.cas_upload", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_CAS_DEPLOY, "provider.aliyun.cas_deploy", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_APIGW, "provider.aliyun.apigw", DEPLOYMENT_CATEGORIES.APIGATEWAY],
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_GA, "provider.aliyun.ga", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_CAS, "provider.aliyun.cas_upload", DEPLOYMENT_CATEGORIES.SSL],
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_CAS_DEPLOY, "provider.aliyun.cas_deploy", DEPLOYMENT_CATEGORIES.SSL],
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_COS, "provider.tencentcloud.cos", DEPLOYMENT_CATEGORIES.STORAGE],
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_CDN, "provider.tencentcloud.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_ECDN, "provider.tencentcloud.ecdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
@@ -473,16 +497,16 @@ export const deploymentProvidersMap: Map<DeploymentProvider["type"] | string, De
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_CSS, "provider.tencentcloud.css", DEPLOYMENT_CATEGORIES.AV],
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_VOD, "provider.tencentcloud.vod", DEPLOYMENT_CATEGORIES.AV],
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SCF, "provider.tencentcloud.scf", DEPLOYMENT_CATEGORIES.SERVERLESS],
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SSL, "provider.tencentcloud.ssl_upload", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SSL_DEPLOY, "provider.tencentcloud.ssl_deploy", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SSL, "provider.tencentcloud.ssl_upload", DEPLOYMENT_CATEGORIES.SSL],
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SSL_DEPLOY, "provider.tencentcloud.ssl_deploy", DEPLOYMENT_CATEGORIES.SSL],
|
||||
[DEPLOYMENT_PROVIDERS.BAIDUCLOUD_CDN, "provider.baiducloud.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.BAIDUCLOUD_BLB, "provider.baiducloud.blb", DEPLOYMENT_CATEGORIES.LOADBALANCE],
|
||||
[DEPLOYMENT_PROVIDERS.BAIDUCLOUD_APPBLB, "provider.baiducloud.appblb", DEPLOYMENT_CATEGORIES.LOADBALANCE],
|
||||
[DEPLOYMENT_PROVIDERS.BAIDUCLOUD_CERT, "provider.baiducloud.cert_upload", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.BAIDUCLOUD_CERT, "provider.baiducloud.cert_upload", DEPLOYMENT_CATEGORIES.SSL],
|
||||
[DEPLOYMENT_PROVIDERS.HUAWEICLOUD_CDN, "provider.huaweicloud.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.HUAWEICLOUD_ELB, "provider.huaweicloud.elb", DEPLOYMENT_CATEGORIES.LOADBALANCE],
|
||||
[DEPLOYMENT_PROVIDERS.HUAWEICLOUD_WAF, "provider.huaweicloud.waf", DEPLOYMENT_CATEGORIES.FIREWALL],
|
||||
[DEPLOYMENT_PROVIDERS.HUAWEICLOUD_SCM, "provider.huaweicloud.scm_upload", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.HUAWEICLOUD_SCM, "provider.huaweicloud.scm_upload", DEPLOYMENT_CATEGORIES.SSL],
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_TOS, "provider.volcengine.tos", DEPLOYMENT_CATEGORIES.STORAGE],
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_CDN, "provider.volcengine.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_DCDN, "provider.volcengine.dcdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
@@ -490,7 +514,7 @@ export const deploymentProvidersMap: Map<DeploymentProvider["type"] | string, De
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_ALB, "provider.volcengine.alb", DEPLOYMENT_CATEGORIES.LOADBALANCE],
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_IMAGEX, "provider.volcengine.imagex", DEPLOYMENT_CATEGORIES.STORAGE],
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_LIVE, "provider.volcengine.live", DEPLOYMENT_CATEGORIES.AV],
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_CERTCENTER, "provider.volcengine.certcenter_upload", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_CERTCENTER, "provider.volcengine.certcenter_upload", DEPLOYMENT_CATEGORIES.SSL],
|
||||
[DEPLOYMENT_PROVIDERS.JDCLOUD_ALB, "provider.jdcloud.alb", DEPLOYMENT_CATEGORIES.LOADBALANCE],
|
||||
[DEPLOYMENT_PROVIDERS.JDCLOUD_CDN, "provider.jdcloud.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.JDCLOUD_LIVE, "provider.jdcloud.live", DEPLOYMENT_CATEGORIES.AV],
|
||||
@@ -501,26 +525,34 @@ export const deploymentProvidersMap: Map<DeploymentProvider["type"] | string, De
|
||||
[DEPLOYMENT_PROVIDERS.UPYUN_FILE, "provider.upyun.file", DEPLOYMENT_CATEGORIES.STORAGE],
|
||||
[DEPLOYMENT_PROVIDERS.UPYUN_CDN, "provider.upyun.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.BAISHAN_CDN, "provider.baishan.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.WANGSU_CDN, "provider.wangsu.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.WANGSU_CDNPRO, "provider.wangsu.cdnpro", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.WANGSU_CERTIFICATE, "provider.wangsu.certificate_upload", DEPLOYMENT_CATEGORIES.SSL],
|
||||
[DEPLOYMENT_PROVIDERS.DOGECLOUD_CDN, "provider.dogecloud.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.BYTEPLUS_CDN, "provider.byteplus.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.UCLOUD_US3, "provider.ucloud.us3", DEPLOYMENT_CATEGORIES.STORAGE],
|
||||
[DEPLOYMENT_PROVIDERS.UCLOUD_UCDN, "provider.ucloud.ucdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.RAINYUN_RCDN, "provider.rainyun.rcdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.AWS_CLOUDFRONT, "provider.aws.cloudfront", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.AWS_ACM, "provider.aws.acm", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.AZURE_KEYVAULT, "provider.azure.keyvault", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.AWS_ACM, "provider.aws.acm", DEPLOYMENT_CATEGORIES.SSL],
|
||||
[DEPLOYMENT_PROVIDERS.AZURE_KEYVAULT, "provider.azure.keyvault", DEPLOYMENT_CATEGORIES.SSL],
|
||||
[DEPLOYMENT_PROVIDERS.BUNNY_CDN, "provider.bunny.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.CACHEFLY, "provider.cachefly", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.CDNFLY, "provider.cdnfly", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.EDGIO_APPLICATIONS, "provider.edgio.applications", DEPLOYMENT_CATEGORIES.WEBSITE],
|
||||
[DEPLOYMENT_PROVIDERS.NETLIFY_SITE, "provider.netlify.site", DEPLOYMENT_CATEGORIES.WEBSITE],
|
||||
[DEPLOYMENT_PROVIDERS.FLEXCDN, "provider.flexcdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.GCORE_CDN, "provider.gcore.cdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.GOEDGE, "provider.goedge", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.LECDN, "provider.lecdn", DEPLOYMENT_CATEGORIES.CDN],
|
||||
[DEPLOYMENT_PROVIDERS.EDGIO_APPLICATIONS, "provider.edgio.applications", DEPLOYMENT_CATEGORIES.WEBSITE],
|
||||
[DEPLOYMENT_PROVIDERS.NETLIFY_SITE, "provider.netlify.site", DEPLOYMENT_CATEGORIES.WEBSITE],
|
||||
[DEPLOYMENT_PROVIDERS["1PANEL_SITE"], "provider.1panel.site", DEPLOYMENT_CATEGORIES.WEBSITE],
|
||||
[DEPLOYMENT_PROVIDERS["1PANEL_CONSOLE"], "provider.1panel.console", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.BAOTAPANEL_SITE, "provider.baotapanel.site", DEPLOYMENT_CATEGORIES.WEBSITE],
|
||||
[DEPLOYMENT_PROVIDERS.BAOTAPANEL_CONSOLE, "provider.baotapanel.console", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.RATPANEL_SITE, "provider.ratpanel.site", DEPLOYMENT_CATEGORIES.WEBSITE],
|
||||
[DEPLOYMENT_PROVIDERS.RATPANEL_CONSOLE, "provider.ratpanel.console", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.BAOTAWAF_SITE, "provider.baotawaf.site", DEPLOYMENT_CATEGORIES.FIREWALL],
|
||||
[DEPLOYMENT_PROVIDERS.BAOTAWAF_CONSOLE, "provider.baotawaf.console", DEPLOYMENT_CATEGORIES.OTHER],
|
||||
[DEPLOYMENT_PROVIDERS.SAFELINE, "provider.safeline", DEPLOYMENT_CATEGORIES.FIREWALL],
|
||||
[DEPLOYMENT_PROVIDERS.PROXMOXVE, "provider.proxmoxve", DEPLOYMENT_CATEGORIES.NAS],
|
||||
].map(([type, name, category, builtin]) => [
|
||||
|
@@ -36,12 +36,21 @@
|
||||
"access.form.notification_channel.placeholder": "Please select a notification channel",
|
||||
"access.form.1panel_api_url.label": "1Panel URL",
|
||||
"access.form.1panel_api_url.placeholder": "Please enter 1Panel URL",
|
||||
"access.form.1panel_api_version.label": "1Panel version",
|
||||
"access.form.1panel_api_version.placeholder": "Please select 1Panel version",
|
||||
"access.form.1panel_api_key.label": "1Panel API key",
|
||||
"access.form.1panel_api_key.placeholder": "Please enter 1Panel API key",
|
||||
"access.form.1panel_api_key.tooltip": "For more information, see <a href=\"https://docs.1panel.pro/dev_manual/api_manual/\" target=\"_blank\">https://docs.1panel.pro/dev_manual/api_manual/</a>",
|
||||
"access.form.1panel_allow_insecure_conns.label": "Insecure SSL/TLS connections",
|
||||
"access.form.1panel_allow_insecure_conns.switch.on": "Allow",
|
||||
"access.form.1panel_allow_insecure_conns.switch.off": "Disallow",
|
||||
"access.form.acmeca_endpoint.label": "Endpoint",
|
||||
"access.form.acmeca_endpoint.placeholder": "Please enter endpoint",
|
||||
"access.form.acmeca_endpoint.tooltip": "For more information, see <a href=\"https://datatracker.ietf.org/doc/html/rfc8555#section-7.1.1\" target=\"_blank\">https://datatracker.ietf.org/doc/html/rfc8555#section-7.1.1</a>",
|
||||
"access.form.acmeca_eab_kid.label": "ACME EAB KID (Optional)",
|
||||
"access.form.acmeca_eab_kid.placeholder": "Please enter ACME EAB KID",
|
||||
"access.form.acmeca_eab_hmac_key.label": "ACME EAB HMAC key (Optional)",
|
||||
"access.form.acmeca_eab_hmac_key.placeholder": "Please enter ACME EAB HMAC key",
|
||||
"access.form.acmehttpreq_endpoint.label": "Endpoint",
|
||||
"access.form.acmehttpreq_endpoint.placeholder": "Please enter endpoint",
|
||||
"access.form.acmehttpreq_endpoint.tooltip": "For more information, see <a href=\"https://go-acme.github.io/lego/dns/httpreq/\" target=\"_blank\">https://go-acme.github.io/lego/dns/httpreq/</a>",
|
||||
@@ -103,6 +112,14 @@
|
||||
"access.form.baotapanel_allow_insecure_conns.label": "Insecure SSL/TLS connections",
|
||||
"access.form.baotapanel_allow_insecure_conns.switch.on": "Allow",
|
||||
"access.form.baotapanel_allow_insecure_conns.switch.off": "Disallow",
|
||||
"access.form.baotawaf_api_url.label": "aaWAF URL",
|
||||
"access.form.baotawaf_api_url.placeholder": "Please enter aaWAF URL",
|
||||
"access.form.baotawaf_api_key.label": "aaWAF API key",
|
||||
"access.form.baotawaf_api_key.placeholder": "Please enter aaWAF API key",
|
||||
"access.form.baotawaf_api_key.tooltip": "For more information, see <a href=\"https://github.com/aaPanel/aaWAF/blob/main/API.md\" target=\"_blank\">https://github.com/aaPanel/aaWAF/blob/main/API.md</a>",
|
||||
"access.form.baotawaf_allow_insecure_conns.label": "Insecure SSL/TLS connections",
|
||||
"access.form.baotawaf_allow_insecure_conns.switch.on": "Allow",
|
||||
"access.form.baotawaf_allow_insecure_conns.switch.off": "Disallow",
|
||||
"access.form.byteplus_access_key.label": "BytePlus AccessKey",
|
||||
"access.form.byteplus_access_key.placeholder": "Please enter BytePlus AccessKey",
|
||||
"access.form.byteplus_access_key.tooltip": "For more information, see <a href=\"https://docs.byteplus.com/en/docs/byteplus-platform/docs-managing-keys\" target=\"_blank\">https://docs.byteplus.com/en/docs/byteplus-platform/docs-managing-keys</a>",
|
||||
@@ -112,8 +129,8 @@
|
||||
"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.label": "Cdnfly URL",
|
||||
"access.form.cdnfly_api_url.placeholder": "Please enter Cdnfly URL",
|
||||
"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>",
|
||||
@@ -184,6 +201,21 @@
|
||||
"access.form.email_default_sender_address.placeholder": "Please enter default sender email address",
|
||||
"access.form.email_default_receiver_address.label": "Default receiver email address (Optional)",
|
||||
"access.form.email_default_receiver_address.placeholder": "Please enter default receiver email address",
|
||||
"access.form.flexcdn_api_url.label": "FlexCDN URL",
|
||||
"access.form.flexcdn_api_url.placeholder": "Please enter FlexCDN URL",
|
||||
"access.form.flexcdn_api_role.label": "FlexCDN user role",
|
||||
"access.form.flexcdn_api_role.placeholder": "Please select FlexCDN user role",
|
||||
"access.form.flexcdn_api_role.option.user.label": "Platform user",
|
||||
"access.form.flexcdn_api_role.option.admin.label": "Administrator user",
|
||||
"access.form.flexcdn_access_key_id.label": "FlexCDN AccessKeyId",
|
||||
"access.form.flexcdn_access_key_id.placeholder": "Please enter FlexCDN AccessKeyId",
|
||||
"access.form.flexcdn_access_key_id.tooltip": "For more information, see <a href=\"https://flexcdn.cn/docs/api/auth\" target=\"_blank\">https://flexcdn.cn/docs/api/auth</a>",
|
||||
"access.form.flexcdn_access_key.label": "FlexCDN AccessKey",
|
||||
"access.form.flexcdn_access_key.placeholder": "Please enter FlexCDN AccessKey",
|
||||
"access.form.flexcdn_access_key.tooltip": "For more information, see <a href=\"https://flexcdn.cn/docs/api/auth\" target=\"_blank\">https://flexcdn.cn/docs/api/auth</a>",
|
||||
"access.form.flexcdn_allow_insecure_conns.label": "Insecure SSL/TLS connections",
|
||||
"access.form.flexcdn_allow_insecure_conns.switch.on": "Allow",
|
||||
"access.form.flexcdn_allow_insecure_conns.switch.off": "Disallow",
|
||||
"access.form.gcore_api_token.label": "Gcore API token",
|
||||
"access.form.gcore_api_token.placeholder": "Please enter Gcore API token",
|
||||
"access.form.gcore_api_token.tooltip": "For more information, see <a href=\"https://api.gcore.com/docs/iam#section/Authentication\" target=\"_blank\">https://api.gcore.com/docs/iam#section/Authentication</a>",
|
||||
@@ -199,8 +231,8 @@
|
||||
"access.form.godaddy_api_secret.label": "GoDaddy API secret",
|
||||
"access.form.godaddy_api_secret.placeholder": "Please enter GoDaddy API secret",
|
||||
"access.form.godaddy_api_secret.tooltip": "For more information, see <a href=\"https://developer.godaddy.com/\" target=\"_blank\">https://developer.godaddy.com/</a>",
|
||||
"access.form.goedge_api_url.label": "GoEdge API URL",
|
||||
"access.form.goedge_api_url.placeholder": "Please enter GoEdge API URL",
|
||||
"access.form.goedge_api_url.label": "GoEdge URL",
|
||||
"access.form.goedge_api_url.placeholder": "Please enter GoEdge URL",
|
||||
"access.form.goedge_api_role.label": "GoEdge user role",
|
||||
"access.form.goedge_api_role.placeholder": "Please select GoEdge user role",
|
||||
"access.form.goedge_api_role.option.user.label": "Platform user",
|
||||
@@ -238,6 +270,21 @@
|
||||
"access.form.larkbot_webhook_url.label": "Lark bot Webhook URL",
|
||||
"access.form.larkbot_webhook_url.placeholder": "Please enter Lark bot Webhook URL",
|
||||
"access.form.larkbot_webhook_url.tooltip": "For more information, see <a href=\"https://www.feishu.cn/hc/en-US/articles/807992406756\" target=\"_blank\">https://www.feishu.cn/hc/en-US/articles/807992406756</a>",
|
||||
"access.form.lecdn_api_url.label": "LeCDN URL",
|
||||
"access.form.lecdn_api_url.placeholder": "Please enter LeCDN URL",
|
||||
"access.form.lecdn_api_version.label": "LeCDN version",
|
||||
"access.form.lecdn_api_version.placeholder": "Please select LeCDN version",
|
||||
"access.form.lecdn_api_role.label": "LeCDN user role",
|
||||
"access.form.lecdn_api_role.placeholder": "Please select LeCDN user role",
|
||||
"access.form.lecdn_api_role.option.client.label": "Client",
|
||||
"access.form.lecdn_api_role.option.master.label": "Master",
|
||||
"access.form.lecdn_username.label": "LeCDN username",
|
||||
"access.form.lecdn_username.placeholder": "Please enter LeCDN username",
|
||||
"access.form.lecdn_password.label": "LeCDN password",
|
||||
"access.form.lecdn_password.placeholder": "Please enter GoEdge password",
|
||||
"access.form.lecdn_allow_insecure_conns.label": "Insecure SSL/TLS connections",
|
||||
"access.form.lecdn_allow_insecure_conns.switch.on": "Allow",
|
||||
"access.form.lecdn_allow_insecure_conns.switch.off": "Disallow",
|
||||
"access.form.mattermost_server_url.label": "Mattermost server URL",
|
||||
"access.form.mattermost_server_url.placeholder": "Please enter Mattermost server URL",
|
||||
"access.form.mattermost_username.label": "Mattermost username",
|
||||
@@ -262,8 +309,8 @@
|
||||
"access.form.namesilo_api_key.label": "NameSilo API key",
|
||||
"access.form.namesilo_api_key.placeholder": "Please enter NameSilo API key",
|
||||
"access.form.namesilo_api_key.tooltip": "For more information, see <a href=\"https://www.namesilo.com/support/v2/articles/account-options/api-manager\" target=\"_blank\">https://www.namesilo.com/support/v2/articles/account-options/api-manager</a>",
|
||||
"access.form.netlify_api_token.label": "netlify API token",
|
||||
"access.form.netlify_api_token.placeholder": "Please enter netlify API token",
|
||||
"access.form.netlify_api_token.label": "Netlify API token",
|
||||
"access.form.netlify_api_token.placeholder": "Please enter Netlify API token",
|
||||
"access.form.netlify_api_token.tooltip": "For more information, see <a href=\"https://docs.netlify.com/api/get-started/#authentication\" target=\"_blank\">https://docs.netlify.com/api/get-started/#authentication</a>",
|
||||
"access.form.netcup_customer_number.label": "netcup customer number",
|
||||
"access.form.netcup_customer_number.placeholder": "Please enter netcup customer number",
|
||||
@@ -283,8 +330,8 @@
|
||||
"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.label": "PowerDNS URL",
|
||||
"access.form.powerdns_api_url.placeholder": "Please enter PowerDNS URL",
|
||||
"access.form.powerdns_api_key.label": "PowerDNS API key",
|
||||
"access.form.powerdns_api_key.placeholder": "Please enter PowerDNS API key",
|
||||
"access.form.powerdns_api_key.tooltip": "For more information, see <a href=\"https://doc.powerdns.com/authoritative/http-api/index.html#enabling-the-api\" target=\"_blank\">https://doc.powerdns.com/authoritative/http-api/index.html#enabling-the-api</a>",
|
||||
@@ -311,6 +358,17 @@
|
||||
"access.form.rainyun_api_key.label": "Rain Yun API key",
|
||||
"access.form.rainyun_api_key.placeholder": "Please enter Rain Yun API key",
|
||||
"access.form.rainyun_api_key.tooltip": "For more information, see <a href=\"https://app.rainyun.com/account/settings/api-key\" target=\"_blank\">https://app.rainyun.com/account/settings/api-key</a>",
|
||||
"access.form.ratpanel_api_url.label": "RatPanel URL",
|
||||
"access.form.ratpanel_api_url.placeholder": "Please enter RatPanel URL",
|
||||
"access.form.ratpanel_access_token_id.label": "RatPanel access token ID",
|
||||
"access.form.ratpanel_access_token_id.placeholder": "Please enter RatPanel access token ID",
|
||||
"access.form.ratpanel_access_token_id.tooltip": "For more information, see <a href=\"https://ratpanel.github.io/advanced/api.html\" target=\"_blank\">https://ratpanel.github.io/advanced/api.html</a>",
|
||||
"access.form.ratpanel_access_token.label": "RatPanel access token",
|
||||
"access.form.ratpanel_access_token.placeholder": "Please enter RatPanel access token",
|
||||
"access.form.ratpanel_access_token.tooltip": "For more information, see <a href=\"https://ratpanel.github.io/advanced/api.html\" target=\"_blank\">https://ratpanel.github.io/advanced/api.html</a>",
|
||||
"access.form.ratpanel_allow_insecure_conns.label": "Insecure SSL/TLS connections",
|
||||
"access.form.ratpanel_allow_insecure_conns.switch.on": "Allow",
|
||||
"access.form.ratpanel_allow_insecure_conns.switch.off": "Disallow",
|
||||
"access.form.safeline_api_url.label": "SafeLine URL",
|
||||
"access.form.safeline_api_url.placeholder": "Please enter SafeLine URL",
|
||||
"access.form.safeline_api_token.label": "SafeLine API token",
|
||||
|
@@ -2,7 +2,8 @@
|
||||
"provider.1panel": "1Panel",
|
||||
"provider.1panel.console": "1Panel - Console",
|
||||
"provider.1panel.site": "1Panel - Website",
|
||||
"provider.acmehttpreq": "Http Request (ACME Proxy)",
|
||||
"provider.acmeca": "ACME Custom CA Endpoint",
|
||||
"provider.acmehttpreq": "ACME Custom HTTP Endpoint",
|
||||
"provider.aliyun": "Alibaba Cloud",
|
||||
"provider.aliyun.alb": "Alibaba Cloud - ALB (Application Load Balancer)",
|
||||
"provider.aliyun.apigw": "Alibaba Cloud - API Gateway",
|
||||
@@ -15,6 +16,7 @@
|
||||
"provider.aliyun.dns": "Alibaba Cloud - DNS (Domain Name Service)",
|
||||
"provider.aliyun.esa": "Alibaba Cloud - ESA (Edge Security Acceleration)",
|
||||
"provider.aliyun.fc": "Alibaba Cloud - FC (Function Compute)",
|
||||
"provider.aliyun.ga": "Alibaba Cloud - GA (Global Accelerator)",
|
||||
"provider.aliyun.live": "Alibaba Cloud - ApsaraVideo Live",
|
||||
"provider.aliyun.nlb": "Alibaba Cloud - NLB (Network Load Balancer)",
|
||||
"provider.aliyun.oss": "Alibaba Cloud - OSS (Object Storage Service)",
|
||||
@@ -40,6 +42,9 @@
|
||||
"provider.baotapanel": "aaPanel (aka BaoTaPanel)",
|
||||
"provider.baotapanel.console": "aaPanel (aka BaoTaPanel) - Console",
|
||||
"provider.baotapanel.site": "aaPanel (aka BaoTaPanel) - Website",
|
||||
"provider.baotawaf": "aaWAF (aka BaotaWAF)",
|
||||
"provider.baotawaf.console": "aaWAF (aka BaotaWAF) - Console",
|
||||
"provider.baotawaf.site": "aaWAF (aka BaotaWAF) - Website",
|
||||
"provider.bunny": "Bunny",
|
||||
"provider.bunny.cdn": "Bunny - CDN (Content Delivery Network)",
|
||||
"provider.byteplus": "BytePlus",
|
||||
@@ -62,6 +67,7 @@
|
||||
"provider.edgio.applications": "Edgio - Applications",
|
||||
"provider.email": "Email",
|
||||
"provider.fastly": "Fastly",
|
||||
"provider.flexcdn": "FlexCDN",
|
||||
"provider.gcore": "Gcore",
|
||||
"provider.gcore.cdn": "Gcore - CDN (Content Delivery Network)",
|
||||
"provider.gname": "GNAME",
|
||||
@@ -83,6 +89,7 @@
|
||||
"provider.kubernetes": "Kubernetes",
|
||||
"provider.kubernetes.secret": "Kubernetes - Secret",
|
||||
"provider.larkbot": "Lark Bot",
|
||||
"provider.lecdn": "LeCDN",
|
||||
"provider.letsencrypt": "Let's Encrypt",
|
||||
"provider.letsencryptstaging": "Let's Encrypt Staging Environment",
|
||||
"provider.local": "Local deployment",
|
||||
@@ -91,8 +98,8 @@
|
||||
"provider.namedotcom": "Name.com",
|
||||
"provider.namesilo": "NameSilo",
|
||||
"provider.netcup": "netcup",
|
||||
"provider.netlify": "netlify",
|
||||
"provider.netlify.site": "netlify - Site",
|
||||
"provider.netlify": "Netlify",
|
||||
"provider.netlify.site": "Netlify - Site",
|
||||
"provider.ns1": "NS1 (IBM NS1 Connect)",
|
||||
"provider.porkbun": "Porkbun",
|
||||
"provider.powerdns": "PowerDNS",
|
||||
@@ -103,6 +110,9 @@
|
||||
"provider.qiniu.pili": "Qiniu - Pili",
|
||||
"provider.rainyun": "Rain Yun",
|
||||
"provider.rainyun.rcdn": "Rain Yun - RCDN (Rain Content Delivery Network)",
|
||||
"provider.ratpanel": "RatPanel",
|
||||
"provider.ratpanel.console": "RatPanel - Console",
|
||||
"provider.ratpanel.site": "RatPanel - Website",
|
||||
"provider.safeline": "SafeLine",
|
||||
"provider.ssh": "SSH deployment",
|
||||
"provider.sslcom": "SSL.com",
|
||||
@@ -138,7 +148,9 @@
|
||||
"provider.volcengine.live": "Volcengine - Live",
|
||||
"provider.volcengine.tos": "Volcengine - TOS (Tinder Object Storage)",
|
||||
"provider.wangsu": "Wangsu Cloud",
|
||||
"provider.wangsu.cdnpro": "Wangsu Cloud - CDN Pro",
|
||||
"provider.wangsu.cdn": "Wangsu Cloud - CDN (Content Delivery Network)",
|
||||
"provider.wangsu.cdnpro": "Wangsu Cloud - CDN Pro (CDN 360)",
|
||||
"provider.wangsu.certificate_upload": "Wangsu Cloud - Upload to Certificate Management",
|
||||
"provider.webhook": "Webhook",
|
||||
"provider.wecombot": "WeCom Bot",
|
||||
"provider.westcn": "West.cn",
|
||||
@@ -150,8 +162,10 @@
|
||||
"provider.category.loadbalance": "Loadbalance",
|
||||
"provider.category.firewall": "Firewall",
|
||||
"provider.category.av": "Audio/Video",
|
||||
"provider.category.apigw": "API Gateway",
|
||||
"provider.category.serverless": "Serverless",
|
||||
"provider.category.website": "Website",
|
||||
"provider.category.ssl": "SSL",
|
||||
"provider.category.nas": "NAS",
|
||||
"provider.category.other": "Other",
|
||||
|
||||
|
@@ -213,6 +213,19 @@
|
||||
"workflow_node.deploy.form.aliyun_fc_domain.label": "Alibaba Cloud FC domain",
|
||||
"workflow_node.deploy.form.aliyun_fc_domain.placeholder": "Please enter Alibaba Cloud FC domain name",
|
||||
"workflow_node.deploy.form.aliyun_fc_domain.tooltip": "For more information, see <a href=\"https://fcnext.console.aliyun.com\" target=\"_blank\">https://fcnext.console.aliyun.com</a>",
|
||||
"workflow_node.deploy.form.aliyun_ga_resource_type.label": "Resource type",
|
||||
"workflow_node.deploy.form.aliyun_ga_resource_type.placeholder": "Please select resource type",
|
||||
"workflow_node.deploy.form.aliyun_ga_resource_type.option.accelerator.label": "GA accelerator",
|
||||
"workflow_node.deploy.form.aliyun_ga_resource_type.option.listener.label": "GA listener",
|
||||
"workflow_node.deploy.form.aliyun_ga_accelerator_id.label": "Alibaba Cloud GA accelerator ID",
|
||||
"workflow_node.deploy.form.aliyun_ga_accelerator_id.placeholder": "Please enter Alibaba Cloud GA accelerator ID",
|
||||
"workflow_node.deploy.form.aliyun_ga_accelerator_id.tooltip": "For more information, <a href=\"https://ga.console.aliyun.com\" target=\"_blank\">https://ga.console.aliyun.com</a>",
|
||||
"workflow_node.deploy.form.aliyun_ga_listener_id.label": "Alibaba Cloud GA listener ID",
|
||||
"workflow_node.deploy.form.aliyun_ga_listener_id.placeholder": "Please enter Alibaba Cloud GA listener ID",
|
||||
"workflow_node.deploy.form.aliyun_ga_listener_id.tooltip": "For more information, <a href=\"https://ga.console.aliyun.com\" target=\"_blank\">https://ga.console.aliyun.com</a>",
|
||||
"workflow_node.deploy.form.aliyun_ga_snidomain.label": "Alibaba Cloud GA SNI domain (Optional)",
|
||||
"workflow_node.deploy.form.aliyun_ga_snidomain.placeholder": "Please enter Alibaba Cloud GA SNI domain name",
|
||||
"workflow_node.deploy.form.aliyun_ga_snidomain.tooltip": "For more information, <a href=\"https://ga.console.aliyun.com\" target=\"_blank\">https://ga.console.aliyun.com</a>",
|
||||
"workflow_node.deploy.form.aliyun_live_region.label": "Alibaba Cloud Live region",
|
||||
"workflow_node.deploy.form.aliyun_live_region.placeholder": "Please enter Alibaba Cloud Live region (e.g. cn-hangzhou)",
|
||||
"workflow_node.deploy.form.aliyun_live_region.tooltip": "For more information, see <a href=\"https://www.alibabacloud.com/help/en/live/product-overview/supported-regions\" target=\"_blank\">https://www.alibabacloud.com/help/en/live/product-overview/supported-regions</a>",
|
||||
@@ -325,13 +338,18 @@
|
||||
"workflow_node.deploy.form.baotapanel_site_type.option.other.label": "Other sites",
|
||||
"workflow_node.deploy.form.baotapanel_site_name.label": "aaPanel site name",
|
||||
"workflow_node.deploy.form.baotapanel_site_name.placeholder": "Please enter aaPanel site name",
|
||||
"workflow_node.deploy.form.baotapanel_site_name.tooltip": "Usually equal to the website domain name.",
|
||||
"workflow_node.deploy.form.baotapanel_site_name.tooltip": "You can find it on aaPanel WebUI.",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.label": "aaPanel site names",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.placeholder": "Please enter aaPanel site names (separated by semicolons)",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.errmsg.invalid": "Please enter a valid aaPanel site name",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.tooltip": "Usually equal to the websites domain name.",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.tooltip": "You can find it on aaPanel WebUI.",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.multiple_input_modal.title": "Change aaPanel site names",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.multiple_input_modal.placeholder": "Please enter aaPanel site name",
|
||||
"workflow_node.deploy.form.baotawaf_site_name.label": "aaWAF site name",
|
||||
"workflow_node.deploy.form.baotawaf_site_name.placeholder": "Please enter aaWAF site name",
|
||||
"workflow_node.deploy.form.baotawaf_site_name.tooltip": "You can find it on aaWAF WebUI.",
|
||||
"workflow_node.deploy.form.baotawaf_site_port.label": "aaWAF site SSL port",
|
||||
"workflow_node.deploy.form.baotawaf_site_port.placeholder": "Please enter aaWAF SSL port",
|
||||
"workflow_node.deploy.form.bunny_cdn_pull_zone_id.label": "Bunny CDN pull zone ID",
|
||||
"workflow_node.deploy.form.bunny_cdn_pull_zone_id.placeholder": "Please enter Bunny CDN pull zone ID",
|
||||
"workflow_node.deploy.form.bunny_cdn_pull_zone_id.tooltip": "What is this? See <a href=\"https://dash.bunny.net/cdn\" target=\"_blank\">https://dash.bunny.net/cdn</a>",
|
||||
@@ -347,14 +365,22 @@
|
||||
"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_site_id.tooltip": "You can find it on Cdnfly WebUI.",
|
||||
"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.cdnfly_certificate_id.tooltip": "You can find it on Cdnfly WebUI.",
|
||||
"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>",
|
||||
"workflow_node.deploy.form.edgio_applications_environment_id.label": "Edgio Applications environment ID",
|
||||
"workflow_node.deploy.form.edgio_applications_environment_id.placeholder": "Please enter Edgio Applications environment ID",
|
||||
"workflow_node.deploy.form.edgio_applications_environment_id.tooltip": "For more information, see <a href=\"https://edgio.app/\" target=\"_blank\">https://edgio.app/</a>",
|
||||
"workflow_node.deploy.form.flexcdn_resource_type.label": "Resource type",
|
||||
"workflow_node.deploy.form.flexcdn_resource_type.placeholder": "Please select resource type",
|
||||
"workflow_node.deploy.form.flexcdn_resource_type.option.certificate.label": "Certificate",
|
||||
"workflow_node.deploy.form.flexcdn_certificate_id.label": "FlexCDN certificate ID",
|
||||
"workflow_node.deploy.form.flexcdn_certificate_id.placeholder": "Please enter FlexCDN certificate ID",
|
||||
"workflow_node.deploy.form.flexcdn_certificate_id.tooltip": "You can find it on FlexCDN WebUI.",
|
||||
"workflow_node.deploy.form.gcore_cdn_resource_id.label": "Gcore CDN resource ID",
|
||||
"workflow_node.deploy.form.gcore_cdn_resource_id.placeholder": "Please enter Gcore CDN resource ID",
|
||||
"workflow_node.deploy.form.gcore_cdn_resource_id.tooltip": "For more information, see <a href=\"https://cdn.gcore.com/resources/list\" target=\"_blank\">https://cdn.gcore.com/resources/list</a>",
|
||||
@@ -366,6 +392,7 @@
|
||||
"workflow_node.deploy.form.goedge_resource_type.option.certificate.label": "Certificate",
|
||||
"workflow_node.deploy.form.goedge_certificate_id.label": "GoEdge certificate ID",
|
||||
"workflow_node.deploy.form.goedge_certificate_id.placeholder": "Please enter GoEdge certificate ID",
|
||||
"workflow_node.deploy.form.goedge_certificate_id.tooltip": "You can find it on GoEdge WebUI.",
|
||||
"workflow_node.deploy.form.huaweicloud_cdn_region.label": "Huawei Cloud CDN region",
|
||||
"workflow_node.deploy.form.huaweicloud_cdn_region.placeholder": "Please enter Huawei Cloud CDN region (e.g. cn-north-1)",
|
||||
"workflow_node.deploy.form.huaweicloud_cdn_region.tooltip": "For more information, see <a href=\"https://console-intl.huaweicloud.com/apiexplorer/#/endpoint?locale=en-us\" target=\"_blank\">https://console-intl.huaweicloud.com/apiexplorer/#/endpoint</a>",
|
||||
@@ -443,6 +470,15 @@
|
||||
"workflow_node.deploy.form.k8s_secret_data_key_for_key.label": "Kubernetes Secret data key for private key",
|
||||
"workflow_node.deploy.form.k8s_secret_data_key_for_key.placeholder": "Please enter Kubernetes Secret data key for private key",
|
||||
"workflow_node.deploy.form.k8s_secret_data_key_for_key.tooltip": "For more information, see <a href=\"https://kubernetes.io/docs/concepts/configuration/secret/\" target=\"_blank\">https://kubernetes.io/docs/concepts/configuration/secret/</a>",
|
||||
"workflow_node.deploy.form.lecdn_resource_type.label": "Resource type",
|
||||
"workflow_node.deploy.form.lecdn_resource_type.placeholder": "Please select resource type",
|
||||
"workflow_node.deploy.form.lecdn_resource_type.option.certificate.label": "Certificate",
|
||||
"workflow_node.deploy.form.lecdn_certificate_id.label": "LeCDN certificate ID",
|
||||
"workflow_node.deploy.form.lecdn_certificate_id.placeholder": "Please enter LeCDN certificate ID",
|
||||
"workflow_node.deploy.form.lecdn_certificate_id.tooltip": "You can find it on LeCDN WebUI.",
|
||||
"workflow_node.deploy.form.lecdn_client_id.label": "LeCDN user ID (Optional)",
|
||||
"workflow_node.deploy.form.lecdn_client_id.placeholder": "Please enter LeCDN user ID",
|
||||
"workflow_node.deploy.form.lecdn_client_id.tooltip": "You can find it on LeCDN WebUI. <br><br>Required when using administrator's authorization. It Must be the same as the user to which the certificate belongs.",
|
||||
"workflow_node.deploy.form.local.guide": "Tips: If you are running Certimate in Docker, the \"Local\" refers to the container rather than the host.",
|
||||
"workflow_node.deploy.form.local_format.label": "File format",
|
||||
"workflow_node.deploy.form.local_format.placeholder": "Please select file format",
|
||||
@@ -489,8 +525,8 @@
|
||||
"workflow_node.deploy.form.local_preset_scripts.option.ps_binding_iis.label": "PowerShell - Binding IIS",
|
||||
"workflow_node.deploy.form.local_preset_scripts.option.ps_binding_netsh.label": "PowerShell - Binding netsh",
|
||||
"workflow_node.deploy.form.local_preset_scripts.option.ps_.label": "PowerShell - Binding RDP",
|
||||
"workflow_node.deploy.form.netlify_site_id.label": "netlify site ID",
|
||||
"workflow_node.deploy.form.netlify_site_id.placeholder": "Please enter netlify site ID",
|
||||
"workflow_node.deploy.form.netlify_site_id.label": "Netlify site ID",
|
||||
"workflow_node.deploy.form.netlify_site_id.placeholder": "Please enter Netlify site ID",
|
||||
"workflow_node.deploy.form.netlify_site_id.tooltip": "For more information, see <a href=\"https://docs.netlify.com/api/get-started/#get-site\" target=\"_blank\">https://docs.netlify.com/api/get-started/#get-site</a>",
|
||||
"workflow_node.deploy.form.proxmoxve_node_name.label": "Proxmox VE cluster node name",
|
||||
"workflow_node.deploy.form.proxmoxve_node_name.placeholder": "Please enter Proxmox VE cluster node name",
|
||||
@@ -513,11 +549,15 @@
|
||||
"workflow_node.deploy.form.rainyun_rcdn_domain.label": "Rain Yun RCDN domain",
|
||||
"workflow_node.deploy.form.rainyun_rcdn_domain.placeholder": "Please enter Rain Yun RCDN domain name",
|
||||
"workflow_node.deploy.form.rainyun_rcdn_domain.tooltip": "For more information, see <a href=\"https://app.rainyun.com/apps/rcdn/list\" target=\"_blank\">https://app.rainyun.com/apps/rcdn/list</a>",
|
||||
"workflow_node.deploy.form.ratpanel_site_name.label": "RatPanel site name",
|
||||
"workflow_node.deploy.form.ratpanel_site_name.placeholder": "Please enter RatPanel site name",
|
||||
"workflow_node.deploy.form.ratpanel_site_name.tooltip": "You can find it on RatPanel WebUI.",
|
||||
"workflow_node.deploy.form.safeline_resource_type.label": "Resource type",
|
||||
"workflow_node.deploy.form.safeline_resource_type.placeholder": "Please select resource type",
|
||||
"workflow_node.deploy.form.safeline_resource_type.option.certificate.label": "Certificate",
|
||||
"workflow_node.deploy.form.safeline_certificate_id.label": "SafeLine certificate ID",
|
||||
"workflow_node.deploy.form.safeline_certificate_id.placeholder": "Please enter SafeLine certificate ID",
|
||||
"workflow_node.deploy.form.safeline_certificate_id.tooltip": "You can find it on SafeLine WebUI.",
|
||||
"workflow_node.deploy.form.ssh_format.label": "File format",
|
||||
"workflow_node.deploy.form.ssh_format.placeholder": "Please select file format",
|
||||
"workflow_node.deploy.form.ssh_format.option.pem.label": "PEM (*.pem, *.crt, *.key)",
|
||||
@@ -720,6 +760,11 @@
|
||||
"workflow_node.deploy.form.volcengine_tos_domain.label": "VolcEngine TOS domain",
|
||||
"workflow_node.deploy.form.volcengine_tos_domain.placeholder": "Please enter VolcEngine TOS domain name",
|
||||
"workflow_node.deploy.form.volcengine_tos_domain.tooltip": "For more information, see <a href=\"https://console.volcengine.com/tos\" target=\"_blank\">https://console.volcengine.com/tos</a>",
|
||||
"workflow_node.deploy.form.wangsu_cdn_domains.label": "Wangsu Cloud CDN domains",
|
||||
"workflow_node.deploy.form.wangsu_cdn_domains.placeholder": "Please enter Wangsu Cloud CDN domain names (separated by semicolons)",
|
||||
"workflow_node.deploy.form.wangsu_cdn_domains.tooltip": "For more information, see <a href=\"https://cdn.console.wangsu.com/v2/index/#/property/list\" target=\"_blank\">https://cdn.console.wangsu.com/v2/index/#/property/list</a>",
|
||||
"workflow_node.deploy.form.wangsu_cdn_domains.multiple_input_modal.title": "Change Wangsu Cloud CDN domains",
|
||||
"workflow_node.deploy.form.wangsu_cdn_domains.multiple_input_modal.placeholder": "Please enter Wangsu Cloud CDN domain",
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_environment.label": "Wangsu Cloud environment",
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_environment.placeholder": "Please select Wangsu Cloud environment",
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_environment.option.production.label": "Production environment",
|
||||
@@ -733,6 +778,9 @@
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_webhook_id.label": "Wangsu Cloud CDN Webhook ID (Optional)",
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_webhook_id.placeholder": "Please enter Wangsu Cloud CDN Webhook ID",
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_webhook_id.tooltip": "For more information, see <a href=\"https://cdnpro.console.wangsu.com/v2/index/#/certificate\" target=\"_blank\">https://cdnpro.console.wangsu.com/v2/index/#/certificate</a>",
|
||||
"workflow_node.deploy.form.wangsu_certificate_id.label": "Wangsu Cloud certificate ID (Optional)",
|
||||
"workflow_node.deploy.form.wangsu_certificate_id.placeholder": "Please enter Wangsu Cloud certificate ID",
|
||||
"workflow_node.deploy.form.wangsu_certificate_id.tooltip": "For more information, see <a href=\"https://cdn.console.wangsu.com/v2/index#/certificate/list?code=cert_mylist&parentCode=cert_ssl&productCode=certificatemanagement\" target=\"_blank\">https://cdn.console.wangsu.com/v2/index#/certificate/list</a>",
|
||||
"workflow_node.deploy.form.webhook_data.label": "Webhook data (Optional)",
|
||||
"workflow_node.deploy.form.webhook_data.placeholder": "Please enter Webhook data to override the default value",
|
||||
"workflow_node.deploy.form.webhook_data.tooltip": "Leave it blank to use the default Webhook data provided by the authorization.",
|
||||
|
@@ -36,12 +36,21 @@
|
||||
"access.form.notification_channel.placeholder": "请选择通知渠道",
|
||||
"access.form.1panel_api_url.label": "1Panel URL",
|
||||
"access.form.1panel_api_url.placeholder": "请输入 1Panel URL",
|
||||
"access.form.1panel_api_version.label": "1Panel 版本",
|
||||
"access.form.1panel_api_version.placeholder": "请选择 1Panel 版本",
|
||||
"access.form.1panel_api_key.label": "1Panel 接口密钥",
|
||||
"access.form.1panel_api_key.placeholder": "请输入 1Panel 接口密钥",
|
||||
"access.form.1panel_api_key.tooltip": "这是什么?请参阅 <a href=\"https://1panel.cn/docs/dev_manual/api_manual/\" target=\"_blank\">https://1panel.cn/docs/dev_manual/api_manual/</a>",
|
||||
"access.form.1panel_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
|
||||
"access.form.1panel_allow_insecure_conns.switch.on": "允许",
|
||||
"access.form.1panel_allow_insecure_conns.switch.off": "不允许",
|
||||
"access.form.acmeca_endpoint.label": "服务端点",
|
||||
"access.form.acmeca_endpoint.placeholder": "请输入服务端点",
|
||||
"access.form.acmeca_endpoint.tooltip": "这是什么?请参阅 <a href=\"https://datatracker.ietf.org/doc/html/rfc8555#section-7.1.1\" target=\"_blank\">https://datatracker.ietf.org/doc/html/rfc8555#section-7.1.1</a>",
|
||||
"access.form.acmeca_eab_kid.label": "ACME EAB KID(可选)",
|
||||
"access.form.acmeca_eab_kid.placeholder": "请输入 ACME EAB KID",
|
||||
"access.form.acmeca_eab_hmac_key.label": "ACME EAB HMAC Key(可选)",
|
||||
"access.form.acmeca_eab_hmac_key.placeholder": "请输入 ACME EAB HMAC Key",
|
||||
"access.form.acmehttpreq_endpoint.label": "服务端点",
|
||||
"access.form.acmehttpreq_endpoint.placeholder": "请输入服务端点",
|
||||
"access.form.acmehttpreq_endpoint.tooltip": "这是什么?请参阅 <a href=\"https://go-acme.github.io/lego/dns/httpreq/\" target=\"_blank\">https://go-acme.github.io/lego/dns/httpreq/</a>",
|
||||
@@ -94,6 +103,14 @@
|
||||
"access.form.baotapanel_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
|
||||
"access.form.baotapanel_allow_insecure_conns.switch.on": "允许",
|
||||
"access.form.baotapanel_allow_insecure_conns.switch.off": "不允许",
|
||||
"access.form.baotawaf_api_url.label": "堡塔云 WAF URL",
|
||||
"access.form.baotawaf_api_url.placeholder": "请输入堡塔云 WAF URL",
|
||||
"access.form.baotawaf_api_key.label": "堡塔云 WAF 接口密钥",
|
||||
"access.form.baotawaf_api_key.placeholder": "请输入 堡塔云 WAF 接口密钥",
|
||||
"access.form.baotawaf_api_key.tooltip": "这是什么?请参阅 <a href=\"https://github.com/aaPanel/aaWAF/blob/main/API.md\" target=\"_blank\">https://github.com/aaPanel/aaWAF/blob/main/API.md</a>",
|
||||
"access.form.baotawaf_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
|
||||
"access.form.baotawaf_allow_insecure_conns.switch.on": "允许",
|
||||
"access.form.baotawaf_allow_insecure_conns.switch.off": "不允许",
|
||||
"access.form.bunny_api_key.label": "Bunny API Key",
|
||||
"access.form.bunny_api_key.placeholder": "请输入 Bunny API Key",
|
||||
"access.form.bunny_api_key.tooltip": "这是什么?请参阅 <a href=\"https://docs.bunny.net/reference/bunnynet-api-overview\" target=\"_blank\">https://docs.bunny.net/reference/bunnynet-api-overview</a>",
|
||||
@@ -106,8 +123,8 @@
|
||||
"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.label": "Cdnfly URL",
|
||||
"access.form.cdnfly_api_url.placeholder": "请输入 Cdnfly URL",
|
||||
"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>",
|
||||
@@ -178,6 +195,21 @@
|
||||
"access.form.email_default_sender_address.placeholder": "请输入默认的发送邮箱地址",
|
||||
"access.form.email_default_receiver_address.label": "默认的接收邮箱地址(可选)",
|
||||
"access.form.email_default_receiver_address.placeholder": "请输入默认的接收邮箱地址",
|
||||
"access.form.flexcdn_api_url.label": "FlexCDN URL",
|
||||
"access.form.flexcdn_api_url.placeholder": "请输入 FlexCDN URL",
|
||||
"access.form.flexcdn_api_role.label": "FlexCDN 用户角色",
|
||||
"access.form.flexcdn_api_role.placeholder": "请选择 FlexCDN 用户角色",
|
||||
"access.form.flexcdn_api_role.option.user.label": "平台用户",
|
||||
"access.form.flexcdn_api_role.option.admin.label": "系统管理员",
|
||||
"access.form.flexcdn_access_key_id.label": "FlexCDN AccessKeyId",
|
||||
"access.form.flexcdn_access_key_id.placeholder": "请输入 FlexCDN AccessKeyId",
|
||||
"access.form.flexcdn_access_key_id.tooltip": "这是什么?请参阅 <a href=\"https://flexcdn.cn/docs/api/auth\" target=\"_blank\">https://flexcdn.cn/docs/api/auth</a>",
|
||||
"access.form.flexcdn_access_key.label": "FlexCDN AccessKey",
|
||||
"access.form.flexcdn_access_key.placeholder": "请输入 FlexCDN AccessKey",
|
||||
"access.form.flexcdn_access_key.tooltip": "这是什么?请参阅 <a href=\"https://flexcdn.cn/docs/api/auth\" target=\"_blank\">https://flexcdn.cn/docs/api/auth</a>",
|
||||
"access.form.flexcdn_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
|
||||
"access.form.flexcdn_allow_insecure_conns.switch.on": "允许",
|
||||
"access.form.flexcdn_allow_insecure_conns.switch.off": "不允许",
|
||||
"access.form.gcore_api_token.label": "Gcore API Token",
|
||||
"access.form.gcore_api_token.placeholder": "请输入 Gcore API Token",
|
||||
"access.form.gcore_api_token.tooltip": "这是什么?请参阅 <a href=\"https://api.gcore.com/docs/iam#section/Authentication\" target=\"_blank\">https://api.gcore.com/docs/iam#section/Authentication</a>",
|
||||
@@ -193,8 +225,8 @@
|
||||
"access.form.godaddy_api_secret.label": "GoDaddy API Secret",
|
||||
"access.form.godaddy_api_secret.placeholder": "请输入 GoDaddy API Secret",
|
||||
"access.form.godaddy_api_secret.tooltip": "这是什么?请参阅 <a href=\"https://developer.godaddy.com/\" target=\"_blank\">https://developer.godaddy.com/</a>",
|
||||
"access.form.goedge_api_url.label": "GoEdge API URL",
|
||||
"access.form.goedge_api_url.placeholder": "请输入 GoEdge API URL",
|
||||
"access.form.goedge_api_url.label": "GoEdge URL",
|
||||
"access.form.goedge_api_url.placeholder": "请输入 GoEdge URL",
|
||||
"access.form.goedge_api_role.label": "GoEdge 用户角色",
|
||||
"access.form.goedge_api_role.placeholder": "请选择 GoEdge 用户角色",
|
||||
"access.form.goedge_api_role.option.user.label": "平台用户",
|
||||
@@ -232,6 +264,21 @@
|
||||
"access.form.larkbot_webhook_url.label": "飞书群机器人 Webhook 地址",
|
||||
"access.form.larkbot_webhook_url.placeholder": "请输入飞书群机器人 Webhook 地址",
|
||||
"access.form.larkbot_webhook_url.tooltip": "这是什么?请参阅 <a href=\"https://www.feishu.cn/hc/zh-CN/articles/807992406756\" target=\"_blank\">https://www.feishu.cn/hc/zh-CN/articles/807992406756</a>",
|
||||
"access.form.lecdn_api_url.label": "LeCDN URL",
|
||||
"access.form.lecdn_api_url.placeholder": "请输入 LeCDN URL",
|
||||
"access.form.lecdn_api_version.label": "LeCDN 版本",
|
||||
"access.form.lecdn_api_version.placeholder": "请选择 LeCDN 版本",
|
||||
"access.form.lecdn_api_role.label": "LeCDN 用户角色",
|
||||
"access.form.lecdn_api_role.placeholder": "请选择 LeCDN 用户角色",
|
||||
"access.form.lecdn_api_role.option.client.label": "客户用户",
|
||||
"access.form.lecdn_api_role.option.master.label": "主控管理员",
|
||||
"access.form.lecdn_username.label": "LeCDN 用户名",
|
||||
"access.form.lecdn_username.placeholder": "请输入 LeCDN 用户名",
|
||||
"access.form.lecdn_password.label": "LeCDN 用户密码",
|
||||
"access.form.lecdn_password.placeholder": "请输入 LeCDN 用户密码",
|
||||
"access.form.lecdn_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
|
||||
"access.form.lecdn_allow_insecure_conns.switch.on": "允许",
|
||||
"access.form.lecdn_allow_insecure_conns.switch.off": "不允许",
|
||||
"access.form.mattermost_server_url.label": "Mattermost 服务地址",
|
||||
"access.form.mattermost_server_url.placeholder": "请输入 Mattermost 服务地址",
|
||||
"access.form.mattermost_username.label": "Mattermost 用户名",
|
||||
@@ -256,8 +303,8 @@
|
||||
"access.form.namesilo_api_key.label": "NameSilo API Key",
|
||||
"access.form.namesilo_api_key.placeholder": "请输入 NameSilo API Key",
|
||||
"access.form.namesilo_api_key.tooltip": "这是什么?请参阅 <a href=\"https://www.namesilo.com/support/v2/articles/account-options/api-manager\" target=\"_blank\">https://www.namesilo.com/support/v2/articles/account-options/api-manager</a>",
|
||||
"access.form.netlify_api_token.label": "netlify API Token",
|
||||
"access.form.netlify_api_token.placeholder": "请输入 netlify API Token",
|
||||
"access.form.netlify_api_token.label": "Netlify API Token",
|
||||
"access.form.netlify_api_token.placeholder": "请输入 Netlify API Token",
|
||||
"access.form.netlify_api_token.tooltip": "这是什么?请参阅 <a href=\"https://docs.netlify.com/api/get-started/#authentication\" target=\"_blank\">https://docs.netlify.com/api/get-started/#authentication</a>",
|
||||
"access.form.netcup_customer_number.label": "netcup 客户编号",
|
||||
"access.form.netcup_customer_number.placeholder": "请输入 netcup 客户编号",
|
||||
@@ -277,8 +324,8 @@
|
||||
"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.label": "PowerDNS URL",
|
||||
"access.form.powerdns_api_url.placeholder": "请输入 PowerDNS URL",
|
||||
"access.form.powerdns_api_key.label": "PowerDNS API Key",
|
||||
"access.form.powerdns_api_key.placeholder": "请输入 PowerDNS API Key",
|
||||
"access.form.powerdns_api_key.tooltip": "这是什么?请参阅 <a href=\"https://doc.powerdns.com/authoritative/http-api/index.html#enabling-the-api\" target=\"_blank\">https://doc.powerdns.com/authoritative/http-api/index.html#enabling-the-api</a>",
|
||||
@@ -305,6 +352,17 @@
|
||||
"access.form.rainyun_api_key.label": "雨云 API 密钥",
|
||||
"access.form.rainyun_api_key.placeholder": "请输入雨云 API 密钥",
|
||||
"access.form.rainyun_api_key.tooltip": "这是什么?请参阅 <a href=\"https://app.rainyun.com/account/settings/api-key\" target=\"_blank\">https://app.rainyun.com/account/settings/api-key</a>",
|
||||
"access.form.ratpanel_api_url.label": "耗子面板 URL",
|
||||
"access.form.ratpanel_api_url.placeholder": "请输入耗子面板 URL",
|
||||
"access.form.ratpanel_access_token_id.label": "耗子面板 AccessToken ID",
|
||||
"access.form.ratpanel_access_token_id.placeholder": "请输入耗子面板 AccessToken ID",
|
||||
"access.form.ratpanel_access_token_id.tooltip": "这是什么?请参阅 <a href=\"https://ratpanel.github.io/advanced/api.html\" target=\"_blank\">https://ratpanel.github.io/advanced/api.html</a>",
|
||||
"access.form.ratpanel_access_token.label": "耗子面板 AccessToken",
|
||||
"access.form.ratpanel_access_token.placeholder": "请输入耗子面板 AccessToken",
|
||||
"access.form.ratpanel_access_token.tooltip": "这是什么?请参阅 <a href=\"https://ratpanel.github.io/advanced/api.html\" target=\"_blank\">https://ratpanel.github.io/advanced/api.html</a>",
|
||||
"access.form.ratpanel_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
|
||||
"access.form.ratpanel_allow_insecure_conns.switch.on": "允许",
|
||||
"access.form.ratpanel_allow_insecure_conns.switch.off": "不允许",
|
||||
"access.form.safeline_api_url.label": "雷池 URL",
|
||||
"access.form.safeline_api_url.placeholder": "请输入雷池 URL",
|
||||
"access.form.safeline_api_token.label": "雷池 API Token",
|
||||
|
@@ -1,8 +1,9 @@
|
||||
{
|
||||
"provider.1panel": "1Panel",
|
||||
"provider.1panel.console": "1Panel - 面板",
|
||||
"provider.1panel.console": "1Panel - 控制台",
|
||||
"provider.1panel.site": "1Panel - 网站",
|
||||
"provider.acmehttpreq": "Http Request (ACME Proxy)",
|
||||
"provider.acmeca": "ACME 自定义 CA 端点",
|
||||
"provider.acmehttpreq": "ACME 自定义 HTTP 端点",
|
||||
"provider.aliyun": "阿里云",
|
||||
"provider.aliyun.alb": "阿里云 - 应用型负载均衡 ALB",
|
||||
"provider.aliyun.apigw": "阿里云 - API 网关",
|
||||
@@ -15,6 +16,7 @@
|
||||
"provider.aliyun.dns": "阿里云 - 云解析 DNS",
|
||||
"provider.aliyun.esa": "阿里云 - 边缘安全加速 ESA",
|
||||
"provider.aliyun.fc": "阿里云 - 函数计算 FC",
|
||||
"provider.aliyun.ga": "阿里云 - 全球加速 GA",
|
||||
"provider.aliyun.live": "阿里云 - 视频直播 Live",
|
||||
"provider.aliyun.nlb": "阿里云 - 网络型负载均衡 NLB",
|
||||
"provider.aliyun.oss": "阿里云 - 对象存储 OSS",
|
||||
@@ -38,8 +40,11 @@
|
||||
"provider.baishan": "白山云",
|
||||
"provider.baishan.cdn": "白山云 - 内容分发网络 CDN",
|
||||
"provider.baotapanel": "宝塔面板",
|
||||
"provider.baotapanel.console": "宝塔面板 - 面板",
|
||||
"provider.baotapanel.console": "宝塔面板 - 控制台",
|
||||
"provider.baotapanel.site": "宝塔面板 - 网站",
|
||||
"provider.baotawaf": "堡塔云 WAF",
|
||||
"provider.baotawaf.console": "堡塔云 WAF - 控制台",
|
||||
"provider.baotawaf.site": "堡塔云 WAF - 网站",
|
||||
"provider.bunny": "Bunny",
|
||||
"provider.bunny.cdn": "Bunny - 内容分发网络 CDN",
|
||||
"provider.byteplus": "BytePlus",
|
||||
@@ -62,6 +67,7 @@
|
||||
"provider.edgio.applications": "Edgio - Applications",
|
||||
"provider.email": "邮件",
|
||||
"provider.fastly": "Fastly",
|
||||
"provider.flexcdn": "FlexCDN",
|
||||
"provider.gcore": "Gcore",
|
||||
"provider.gcore.cdn": "Gcore - 内容分发网络 CDN",
|
||||
"provider.gname": "GNAME",
|
||||
@@ -83,6 +89,7 @@
|
||||
"provider.kubernetes": "Kubernetes",
|
||||
"provider.kubernetes.secret": "Kubernetes - Secret",
|
||||
"provider.larkbot": "飞书群机器人",
|
||||
"provider.lecdn": "LeCDN",
|
||||
"provider.letsencrypt": "Let's Encrypt",
|
||||
"provider.letsencryptstaging": "Let's Encrypt 测试环境",
|
||||
"provider.local": "本地部署",
|
||||
@@ -91,8 +98,8 @@
|
||||
"provider.namedotcom": "Name.com",
|
||||
"provider.namesilo": "NameSilo",
|
||||
"provider.netcup": "netcup",
|
||||
"provider.netlify": "netlify",
|
||||
"provider.netlify.site": "netlify - Site",
|
||||
"provider.netlify": "Netlify",
|
||||
"provider.netlify.site": "Netlify - Site",
|
||||
"provider.ns1": "NS1 (IBM NS1 Connect)",
|
||||
"provider.porkbun": "Porkbun",
|
||||
"provider.powerdns": "PowerDNS",
|
||||
@@ -103,6 +110,9 @@
|
||||
"provider.qiniu.pili": "七牛云 - 视频直播 Pili",
|
||||
"provider.rainyun": "雨云",
|
||||
"provider.rainyun.rcdn": "雨云 - 雨盾 CDN",
|
||||
"provider.ratpanel": "耗子面板",
|
||||
"provider.ratpanel.console": "耗子面板 - 控制台",
|
||||
"provider.ratpanel.site": "耗子面板 - 网站",
|
||||
"provider.safeline": "雷池",
|
||||
"provider.ssh": "SSH 部署",
|
||||
"provider.sslcom": "SSL.com",
|
||||
@@ -138,7 +148,9 @@
|
||||
"provider.volcengine.live": "火山引擎 - 视频直播 Live",
|
||||
"provider.volcengine.tos": "火山引擎 - 对象存储 TOS",
|
||||
"provider.wangsu": "网宿云",
|
||||
"provider.wangsu.cdnpro": "网宿云 - CDN Pro",
|
||||
"provider.wangsu.cdn": "网宿云 - 内容分发网络 CDN",
|
||||
"provider.wangsu.cdnpro": "网宿云 - CDN Pro (CDN 360)",
|
||||
"provider.wangsu.certificate_upload": "网宿云 - 上传到证书管理",
|
||||
"provider.webhook": "Webhook",
|
||||
"provider.wecombot": "企业微信群机器人",
|
||||
"provider.westcn": "西部数码",
|
||||
@@ -150,8 +162,10 @@
|
||||
"provider.category.loadbalance": "负载均衡",
|
||||
"provider.category.firewall": "防火墙",
|
||||
"provider.category.av": "音视频",
|
||||
"provider.category.apigw": "API 网关",
|
||||
"provider.category.serverless": "Serverless",
|
||||
"provider.category.website": "网站托管",
|
||||
"provider.category.ssl": "证书托管",
|
||||
"provider.category.nas": "NAS",
|
||||
"provider.category.other": "其他",
|
||||
|
||||
|
@@ -109,18 +109,18 @@
|
||||
"workflow_node.deploy.form.certificate.tooltip": "待部署证书来自之前的申请或上传节点。如果选项为空请先确保前序节点配置正确。",
|
||||
"workflow_node.deploy.form.params_config.label": "参数设置",
|
||||
"workflow_node.deploy.form.1panel_console_auto_restart.label": "部署后自动重启宝塔面板服务",
|
||||
"workflow_node.deploy.form.1panel_site_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.1panel_site_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.1panel_site_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.1panel_site_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.1panel_site_resource_type.option.website.label": "替换指定网站的证书",
|
||||
"workflow_node.deploy.form.1panel_site_resource_type.option.certificate.label": "替换指定证书",
|
||||
"workflow_node.deploy.form.1panel_site_website_id.label": "1Panel 网站 ID",
|
||||
"workflow_node.deploy.form.1panel_site_website_id.placeholder": "请输入 1Panel 网站 ID",
|
||||
"workflow_node.deploy.form.1panel_site_website_id.tooltip": "请在 1Panel 管理面板查看。",
|
||||
"workflow_node.deploy.form.1panel_site_website_id.tooltip": "请登录 1Panel 面板查看。",
|
||||
"workflow_node.deploy.form.1panel_site_certificate_id.label": "1Panel 证书 ID",
|
||||
"workflow_node.deploy.form.1panel_site_certificate_id.placeholder": "请输入 1Panel 证书 ID",
|
||||
"workflow_node.deploy.form.1panel_site_certificate_id.tooltip": "请在 1Panel 管理面板查看。",
|
||||
"workflow_node.deploy.form.aliyun_alb_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.aliyun_alb_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.1panel_site_certificate_id.tooltip": "请登录 1Panel 面板查看。",
|
||||
"workflow_node.deploy.form.aliyun_alb_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.aliyun_alb_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.aliyun_alb_resource_type.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS/QUIC 监听的证书",
|
||||
"workflow_node.deploy.form.aliyun_alb_resource_type.option.listener.label": "替换指定负载均衡监听器的证书",
|
||||
"workflow_node.deploy.form.aliyun_alb_region.label": "阿里云 ALB 服务地域",
|
||||
@@ -170,8 +170,8 @@
|
||||
"workflow_node.deploy.form.aliyun_cas_deploy_contact_ids.tooltip": "这是什么?请参阅 <a href=\"https://help.aliyun.com/zh/ssl-certificate/developer-reference/api-cas-2020-04-07-listcontact\" target=\"_blank\">https://help.aliyun.com/zh/ssl-certificate/developer-reference/api-cas-2020-04-07-listcontact</a><br><br>不填写时,将使用系统联系人列表中的第一个。",
|
||||
"workflow_node.deploy.form.aliyun_cas_deploy_contact_ids.multiple_input_modal.title": "修改阿里云联系人 ID",
|
||||
"workflow_node.deploy.form.aliyun_cas_deploy_contact_ids.multiple_input_modal.placeholder": "请输入阿里云联系人 ID",
|
||||
"workflow_node.deploy.form.aliyun_clb_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.aliyun_clb_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.aliyun_clb_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.aliyun_clb_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.aliyun_clb_resource_type.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS 监听的证书",
|
||||
"workflow_node.deploy.form.aliyun_clb_resource_type.option.listener.label": "替换指定负载均衡监听的证书",
|
||||
"workflow_node.deploy.form.aliyun_clb_region.label": "阿里云 CLB 服务地域",
|
||||
@@ -212,14 +212,27 @@
|
||||
"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.tooltip": "这是什么?请参阅 see <a href=\"https://fcnext.console.aliyun.com/\" target=\"_blank\">https://fcnext.console.aliyun.com/</a>",
|
||||
"workflow_node.deploy.form.aliyun_ga_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.aliyun_ga_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.aliyun_ga_resource_type.option.accelerator.label": "替换指定全球加速器下的全部 HTTPS 监听的证书",
|
||||
"workflow_node.deploy.form.aliyun_ga_resource_type.option.listener.label": "替换指定全球加速器监听器的证书",
|
||||
"workflow_node.deploy.form.aliyun_ga_accelerator_id.label": "阿里云全球加速实例 ID",
|
||||
"workflow_node.deploy.form.aliyun_ga_accelerator_id.placeholder": "请输入阿里云全球加速实例 ID",
|
||||
"workflow_node.deploy.form.aliyun_ga_accelerator_id.tooltip": "这是什么?请参阅 <a href=\"https://ga.console.aliyun.com\" target=\"_blank\">https://ga.console.aliyun.com</a>",
|
||||
"workflow_node.deploy.form.aliyun_ga_listener_id.label": "阿里云全球加速监听 ID",
|
||||
"workflow_node.deploy.form.aliyun_ga_listener_id.placeholder": "请输入阿里云全球加速监听 ID",
|
||||
"workflow_node.deploy.form.aliyun_ga_listener_id.tooltip": "这是什么?请参阅 <a href=\"https://ga.console.aliyun.com\" target=\"_blank\">https://ga.console.aliyun.com</a>",
|
||||
"workflow_node.deploy.form.aliyun_ga_snidomain.label": "阿里云全球加速扩展域名(可选)",
|
||||
"workflow_node.deploy.form.aliyun_ga_snidomain.placeholder": "请输入阿里云全球加速扩展域名",
|
||||
"workflow_node.deploy.form.aliyun_ga_snidomain.tooltip": "这是什么?请参阅 <a href=\"https://ga.console.aliyun.com\" target=\"_blank\">https://ga.console.aliyun.com</a><br><br>不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
|
||||
"workflow_node.deploy.form.aliyun_live_region.label": "阿里云视频直播服务地域",
|
||||
"workflow_node.deploy.form.aliyun_live_region.placeholder": "请输入阿里云视频直播服务地域(例如:cn-hangzhou)",
|
||||
"workflow_node.deploy.form.aliyun_live_region.tooltip": "这是什么?请参阅 <a href=\"https://help.aliyun.com/zh/live/product-overview/supported-regions\" target=\"_blank\">https://help.aliyun.com/zh/live/product-overview/supported-regions</a>",
|
||||
"workflow_node.deploy.form.aliyun_live_domain.label": "阿里云视频直播流域名",
|
||||
"workflow_node.deploy.form.aliyun_live_domain.placeholder": "请输入阿里云视频直播流域名(支持泛域名)",
|
||||
"workflow_node.deploy.form.aliyun_live_domain.tooltip": "这是什么?请参阅 <a href=\"https://live.console.aliyun.com\" target=\"_blank\">https://live.console.aliyun.com</a>",
|
||||
"workflow_node.deploy.form.aliyun_nlb_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.aliyun_nlb_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.aliyun_nlb_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.aliyun_nlb_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.aliyun_nlb_resource_type.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS/QUIC 监听的证书",
|
||||
"workflow_node.deploy.form.aliyun_nlb_resource_type.option.listener.label": "替换指定负载均衡监听器的证书",
|
||||
"workflow_node.deploy.form.aliyun_nlb_region.label": "阿里云 NLB 服务地域",
|
||||
@@ -276,8 +289,8 @@
|
||||
"workflow_node.deploy.form.azure_keyvault_certificate_name.placeholder": "请输入 Azure KeyVault 证书名称",
|
||||
"workflow_node.deploy.form.azure_keyvault_certificate_name.tooltip": "不填写时,将由 Certimate 自动生成证书名称。",
|
||||
"workflow_node.deploy.form.azure_keyvault_certificate_name.errmsg.invalid": "证书名称只能包含字母、数字和连字符(-),长度限制为 1 到 127 个字符",
|
||||
"workflow_node.deploy.form.baiducloud_appblb_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.baiducloud_appblb_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.baiducloud_appblb_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.baiducloud_appblb_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.baiducloud_appblb_resource_type.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS/SSL 监听的证书",
|
||||
"workflow_node.deploy.form.baiducloud_appblb_resource_type.option.listener.label": "替换指定负载均衡监听的证书",
|
||||
"workflow_node.deploy.form.baiducloud_appblb_region.label": "百度智能云 BLB 服务地域",
|
||||
@@ -292,8 +305,8 @@
|
||||
"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.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.placeholder": "请选择证书替换方式",
|
||||
"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.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS/SSL 监听的证书",
|
||||
"workflow_node.deploy.form.baiducloud_blb_resource_type.option.listener.label": "替换指定负载均衡监听的证书",
|
||||
"workflow_node.deploy.form.baiducloud_blb_region.label": "百度智能云 BLB 服务地域",
|
||||
@@ -324,13 +337,18 @@
|
||||
"workflow_node.deploy.form.baotapanel_site_type.option.other.label": "其他",
|
||||
"workflow_node.deploy.form.baotapanel_site_name.label": "宝塔面板网站名称",
|
||||
"workflow_node.deploy.form.baotapanel_site_name.placeholder": "请输入宝塔面板网站名称",
|
||||
"workflow_node.deploy.form.baotapanel_site_name.tooltip": "通常为网站域名。",
|
||||
"workflow_node.deploy.form.baotapanel_site_name.tooltip": "请登录宝塔面板查看。",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.label": "宝塔面板网站名称",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.placeholder": "请输入宝塔面板网站名称(多个值请用半角分号隔开)",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.errmsg.invalid": "请输入正确的宝塔面板网站名称",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.tooltip": "通常为网站域名。",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.tooltip": "请登录宝塔面板查看。",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.multiple_input_modal.title": "修改宝塔面板网站名称",
|
||||
"workflow_node.deploy.form.baotapanel_site_names.multiple_input_modal.placeholder": "请输入宝塔面板网站名称",
|
||||
"workflow_node.deploy.form.baotawaf_site_name.label": "堡塔云 WAF 网站名称",
|
||||
"workflow_node.deploy.form.baotawaf_site_name.placeholder": "请输入堡塔云 WAF 网站名称",
|
||||
"workflow_node.deploy.form.baotawaf_site_name.tooltip": "请登录堡塔云 WAF 面板查看。",
|
||||
"workflow_node.deploy.form.baotawaf_site_port.label": "堡塔云 WAF 网站 SSL 端口",
|
||||
"workflow_node.deploy.form.baotawaf_site_port.placeholder": "请输入堡塔云 WAF 网站 SSL 端口",
|
||||
"workflow_node.deploy.form.bunny_cdn_pull_zone_id.label": "Bunny CDN 拉取区域 ID",
|
||||
"workflow_node.deploy.form.bunny_cdn_pull_zone_id.placeholder": "请输入 Bunny CDN 拉取区域 ID",
|
||||
"workflow_node.deploy.form.bunny_cdn_pull_zone_id.tooltip": "这是什么?请参阅 <a href=\"https://dash.bunny.net/cdn\" target=\"_blank\">https://dash.bunny.net/cdn</a>",
|
||||
@@ -340,39 +358,48 @@
|
||||
"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.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_site_id.tooltip": "请登录 Cdnfly 控制台查看。",
|
||||
"workflow_node.deploy.form.cdnfly_certificate_id.label": "Cdnfly 证书 ID",
|
||||
"workflow_node.deploy.form.cdnfly_certificate_id.placeholder": "请输入 Cdnfly 证书 ID",
|
||||
"workflow_node.deploy.form.cdnfly_certificate_id.tooltip": "请登录 Cdnfly 控制台查看。",
|
||||
"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>",
|
||||
"workflow_node.deploy.form.edgio_applications_environment_id.label": "Edgio Applications 环境 ID",
|
||||
"workflow_node.deploy.form.edgio_applications_environment_id.placeholder": "请输入 Edgio Applications 环境 ID",
|
||||
"workflow_node.deploy.form.edgio_applications_environment_id.tooltip": "这是什么?请参阅 <a href=\"https://edgio.app/\" target=\"_blank\">https://edgio.app/</a>",
|
||||
"workflow_node.deploy.form.flexcdn_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.flexcdn_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.flexcdn_resource_type.option.certificate.label": "替换指定证书",
|
||||
"workflow_node.deploy.form.flexcdn_certificate_id.label": "FlexCDN 证书 ID",
|
||||
"workflow_node.deploy.form.flexcdn_certificate_id.placeholder": "请输入 FlexCDN 证书 ID",
|
||||
"workflow_node.deploy.form.flexcdn_certificate_id.tooltip": "请登录 FlexCDN 控制台查看。",
|
||||
"workflow_node.deploy.form.gcore_cdn_resource_id.label": "Gcore CDN 资源 ID",
|
||||
"workflow_node.deploy.form.gcore_cdn_resource_id.placeholder": "请输入 Gcore CDN 资源 ID",
|
||||
"workflow_node.deploy.form.gcore_cdn_resource_id.tooltip": "这是什么?请参阅 <a href=\"https://cdn.gcore.com/resources/list\" target=\"_blank\">https://cdn.gcore.com/resources/list</a>",
|
||||
"workflow_node.deploy.form.gcore_cdn_certificate_id.label": "Gcore CDN 原证书 ID(可选)",
|
||||
"workflow_node.deploy.form.gcore_cdn_certificate_id.placeholder": "请输入 Gcore CDN 原证书 ID",
|
||||
"workflow_node.deploy.form.gcore_cdn_certificate_id.tooltip": "这是什么?请参阅 <a href=\"https://cdn.gcore.com/ssl\" target=\"_blank\">https://cdn.gcore.com/ssl</a><br><br>不填写时,将上传新证书;否则,将替换原证书。",
|
||||
"workflow_node.deploy.form.goedge_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.goedge_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.goedge_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.goedge_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.goedge_resource_type.option.certificate.label": "替换指定证书",
|
||||
"workflow_node.deploy.form.goedge_certificate_id.label": "GoEdge 证书 ID",
|
||||
"workflow_node.deploy.form.goedge_certificate_id.placeholder": "请输入 GoEdge 证书 ID",
|
||||
"workflow_node.deploy.form.goedge_certificate_id.tooltip": "请登录 GoEdge 控制台查看。",
|
||||
"workflow_node.deploy.form.huaweicloud_cdn_region.label": "华为云 CDN 服务区域",
|
||||
"workflow_node.deploy.form.huaweicloud_cdn_region.placeholder": "请输入华为云 CDN 服务区域(例如:cn-north-1)",
|
||||
"workflow_node.deploy.form.huaweicloud_cdn_region.tooltip": "这是什么?请参阅 <a href=\"https://console.huaweicloud.com/apiexplorer/#/endpoint\" target=\"_blank\">https://console.huaweicloud.com/apiexplorer/#/endpoint</a>",
|
||||
"workflow_node.deploy.form.huaweicloud_cdn_domain.label": "华为云 CDN 加速域名",
|
||||
"workflow_node.deploy.form.huaweicloud_cdn_domain.placeholder": "请输入华为云 CDN 加速域名",
|
||||
"workflow_node.deploy.form.huaweicloud_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://console.huaweicloud.com/cdn\" target=\"_blank\">https://console.huaweicloud.com/cdn</a>",
|
||||
"workflow_node.deploy.form.huaweicloud_elb_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.huaweicloud_elb_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.huaweicloud_elb_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.huaweicloud_elb_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.huaweicloud_elb_resource_type.option.certificate.label": "替换指定证书",
|
||||
"workflow_node.deploy.form.huaweicloud_elb_resource_type.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS 监听器的证书",
|
||||
"workflow_node.deploy.form.huaweicloud_elb_resource_type.option.listener.label": "替换指定监听器的证书",
|
||||
@@ -388,8 +415,8 @@
|
||||
"workflow_node.deploy.form.huaweicloud_elb_listener_id.label": "华为云 ELB 监听器 ID",
|
||||
"workflow_node.deploy.form.huaweicloud_elb_listener_id.placeholder": "请输入华为云 ELB 监听器 ID",
|
||||
"workflow_node.deploy.form.huaweicloud_elb_listener_id.tooltip": "这是什么?请参阅 <a href=\"https://console.huaweicloud.com/vpc/#/elb/list/grid\" target=\"_blank\">https://console.huaweicloud.com/vpc/#/elb/list/grid</a>",
|
||||
"workflow_node.deploy.form.huaweicloud_waf_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.huaweicloud_waf_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.huaweicloud_waf_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.huaweicloud_waf_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.huaweicloud_waf_resource_type.option.certificate.label": "替换指定证书",
|
||||
"workflow_node.deploy.form.huaweicloud_waf_resource_type.option.cloudserver.label": "替换指定云模式防护网站的证书",
|
||||
"workflow_node.deploy.form.huaweicloud_waf_resource_type.option.premiumhost.label": "替换指定独享模式防护网站的证书",
|
||||
@@ -402,8 +429,8 @@
|
||||
"workflow_node.deploy.form.huaweicloud_waf_domain.label": "华为云 WAF 防护域名",
|
||||
"workflow_node.deploy.form.huaweicloud_waf_domain.placeholder": "请输入华为云 WAF 防护域名(支持泛域名)",
|
||||
"workflow_node.deploy.form.huaweicloud_waf_domain.tooltip": "这是什么?请参阅 <a href=\"https://console.huaweicloud.com/console/#/waf/domain/list\" target=\"_blank\">https://console.huaweicloud.com/console/#/waf/domain/list</a>",
|
||||
"workflow_node.deploy.form.jdcloud_alb_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.jdcloud_alb_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.jdcloud_alb_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.jdcloud_alb_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.jdcloud_alb_resource_type.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS/TLS 监听的证书",
|
||||
"workflow_node.deploy.form.jdcloud_alb_resource_type.option.listener.label": "替换指定负载均衡监听器的证书",
|
||||
"workflow_node.deploy.form.jdcloud_alb_region_id.label": "京东云 ALB 服务地域 ID",
|
||||
@@ -442,6 +469,15 @@
|
||||
"workflow_node.deploy.form.k8s_secret_data_key_for_key.label": "Kubernetes Secret 数据键(用于存放私钥的字段)",
|
||||
"workflow_node.deploy.form.k8s_secret_data_key_for_key.placeholder": "请输入 Kubernetes Secret 中用于存放私钥的数据键",
|
||||
"workflow_node.deploy.form.k8s_secret_data_key_for_key.tooltip": "这是什么?请参阅 <a href=\"https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/\" target=\"_blank\">https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/</a>",
|
||||
"workflow_node.deploy.form.lecdn_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.lecdn_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.lecdn_resource_type.option.certificate.label": "替换指定证书",
|
||||
"workflow_node.deploy.form.lecdn_certificate_id.label": "LeCDN 证书 ID",
|
||||
"workflow_node.deploy.form.lecdn_certificate_id.placeholder": "请输入 LeCDN 证书 ID",
|
||||
"workflow_node.deploy.form.lecdn_certificate_id.tooltip": "请登录 LeCDN 控制台查看。",
|
||||
"workflow_node.deploy.form.lecdn_client_id.label": "LeCDN 客户 ID(可选)",
|
||||
"workflow_node.deploy.form.lecdn_client_id.placeholder": "请输入 LeCDN 客户 ID",
|
||||
"workflow_node.deploy.form.lecdn_client_id.tooltip": "请登录 LeCDN 控制台查看。<br><br>使用的是系统管理员的授权信息时必填,需与证书所属客户相同。",
|
||||
"workflow_node.deploy.form.local.guide": "小贴士:如果你正在使用 Docker 运行 Certimate,“本地”指的是容器内而非宿主机。",
|
||||
"workflow_node.deploy.form.local_format.label": "文件格式",
|
||||
"workflow_node.deploy.form.local_format.placeholder": "请选择文件格式",
|
||||
@@ -488,7 +524,7 @@
|
||||
"workflow_node.deploy.form.local_preset_scripts.option.ps_binding_iis.label": "PowerShell - 导入并绑定到 IIS",
|
||||
"workflow_node.deploy.form.local_preset_scripts.option.ps_binding_netsh.label": "PowerShell - 导入并绑定到 netsh",
|
||||
"workflow_node.deploy.form.local_preset_scripts.option.ps_binding_rdp.label": "PowerShell - 导入并绑定到 RDP",
|
||||
"workflow_node.deploy.form.netlify_site_id.label": "netlify 网站 ID",
|
||||
"workflow_node.deploy.form.netlify_site_id.label": "Netlify 网站 ID",
|
||||
"workflow_node.deploy.form.netlify_site_id.placeholder": "请输入 netlify 网站 ID",
|
||||
"workflow_node.deploy.form.netlify_site_id.tooltip": "这是什么?请参阅 <a href=\"https://docs.netlify.com/api/get-started/#get-site\" target=\"_blank\">https://docs.netlify.com/api/get-started/#get-site</a>",
|
||||
"workflow_node.deploy.form.proxmoxve_node_name.label": "Proxmox VE 集群节点名称",
|
||||
@@ -512,11 +548,15 @@
|
||||
"workflow_node.deploy.form.rainyun_rcdn_domain.label": "雨云 RCDN 加速域名",
|
||||
"workflow_node.deploy.form.rainyun_rcdn_domain.placeholder": "请输入雨云 RCDN 加速域名(支持泛域名)",
|
||||
"workflow_node.deploy.form.rainyun_rcdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://app.rainyun.com/apps/rcdn/list\" target=\"_blank\">https://app.rainyun.com/apps/rcdn/list</a>",
|
||||
"workflow_node.deploy.form.safeline_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.safeline_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.ratpanel_site_name.label": "耗子面板网站名称",
|
||||
"workflow_node.deploy.form.ratpanel_site_name.placeholder": "请输入耗子面板网站名称",
|
||||
"workflow_node.deploy.form.ratpanel_site_name.tooltip": "请登录耗子面板查看。",
|
||||
"workflow_node.deploy.form.safeline_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.safeline_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.safeline_resource_type.option.certificate.label": "替换指定证书",
|
||||
"workflow_node.deploy.form.safeline_certificate_id.label": "雷池证书 ID",
|
||||
"workflow_node.deploy.form.safeline_certificate_id.placeholder": "请输入雷池证书 ID",
|
||||
"workflow_node.deploy.form.safeline_certificate_id.tooltip": "请登录雷池控制台查看。",
|
||||
"workflow_node.deploy.form.ssh_format.label": "文件格式",
|
||||
"workflow_node.deploy.form.ssh_format.placeholder": "请选择文件格式",
|
||||
"workflow_node.deploy.form.ssh_format.option.pem.label": "PEM 格式(*.pem, *.crt, *.key)",
|
||||
@@ -564,8 +604,8 @@
|
||||
"workflow_node.deploy.form.tencentcloud_cdn_domain.label": "腾讯云 CDN 加速域名",
|
||||
"workflow_node.deploy.form.tencentcloud_cdn_domain.placeholder": "请输入腾讯云 CDN 加速域名(支持泛域名)",
|
||||
"workflow_node.deploy.form.tencentcloud_cdn_domain.tooltip": "这是什么?请参阅 <a href=\"https://console.cloud.tencent.com/cdn\" target=\"_blank\">https://console.cloud.tencent.com/cdn</a>",
|
||||
"workflow_node.deploy.form.tencentcloud_clb_resource_type.label": "证书替换方式",
|
||||
"workflow_node.deploy.form.tencentcloud_clb_resource_type.placeholder": "请选择证书替换方式",
|
||||
"workflow_node.deploy.form.tencentcloud_clb_resource_type.label": "证书部署方式",
|
||||
"workflow_node.deploy.form.tencentcloud_clb_resource_type.placeholder": "请选择证书部署方式",
|
||||
"workflow_node.deploy.form.tencentcloud_clb_resource_type.option.ssl_deploy.label": "通过 SSL 服务部署到云资源实例",
|
||||
"workflow_node.deploy.form.tencentcloud_clb_resource_type.option.loadbalancer.label": "替换指定实例下的全部 HTTPS/TCPSSL/QUIC 监听器的证书",
|
||||
"workflow_node.deploy.form.tencentcloud_clb_resource_type.option.listener.label": "替换指定监听器的证书",
|
||||
@@ -661,8 +701,8 @@
|
||||
"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.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 服务地域",
|
||||
@@ -682,8 +722,8 @@
|
||||
"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_certcenter_region.label": "火山引擎证书中心服务地域",
|
||||
"workflow_node.deploy.form.volcengine_certcenter_region.placeholder": "请输入火山引擎证书中心服务地域(例如:cn-beijing)",
|
||||
"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.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 服务地域",
|
||||
@@ -719,6 +759,11 @@
|
||||
"workflow_node.deploy.form.volcengine_tos_domain.label": "火山引擎 TOS 自定义域名",
|
||||
"workflow_node.deploy.form.volcengine_tos_domain.placeholder": "请输入火山引擎 TOS 自定义域名",
|
||||
"workflow_node.deploy.form.volcengine_tos_domain.tooltip": "这是什么?请参阅 see <a href=\"https://console.volcengine.com/tos\" target=\"_blank\">https://console.volcengine.com/tos</a>",
|
||||
"workflow_node.deploy.form.wangsu_cdn_domains.label": "网宿云 CDN 加速域名",
|
||||
"workflow_node.deploy.form.wangsu_cdn_domains.placeholder": "请输入网宿云 CDN 加速域名(多个值请用半角分号隔开)",
|
||||
"workflow_node.deploy.form.wangsu_cdn_domains.tooltip": "这是什么?请参阅 <a href=\"https://cdn.console.wangsu.com/v2/index/#/property/list\" target=\"_blank\">https://cdn.console.wangsu.com/v2/index/#/property/list</a>",
|
||||
"workflow_node.deploy.form.wangsu_cdn_domains.multiple_input_modal.title": "修改网宿云 CDN 加速域名",
|
||||
"workflow_node.deploy.form.wangsu_cdn_domains.multiple_input_modal.placeholder": "请输入网宿云 CDN 加速域名",
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_environment.label": "网宿云环境",
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_environment.placeholder": "请选择网宿云环境",
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_environment.option.production.label": "生产环境",
|
||||
@@ -732,6 +777,9 @@
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_webhook_id.label": "网宿云 CDN Pro 部署任务 Webhook ID(可选)",
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_webhook_id.placeholder": "请输入网宿云 CDN Pro 部署任务 Webhook ID",
|
||||
"workflow_node.deploy.form.wangsu_cdnpro_webhook_id.tooltip": "这是什么?请参阅 <a href=\"https://cdnpro.console.wangsu.com/v2/index/#/certificate\" target=\"_blank\">https://cdnpro.console.wangsu.com/v2/index/#/certificate</a>",
|
||||
"workflow_node.deploy.form.wangsu_certificate_id.label": "网宿云证书 ID(可选)",
|
||||
"workflow_node.deploy.form.wangsu_certificate_id.placeholder": "请输入网宿云证书 ID",
|
||||
"workflow_node.deploy.form.wangsu_certificate_id.tooltip": "这是什么?请参阅 <a href=\"https://cdn.console.wangsu.com/v2/index#/certificate/list?code=cert_mylist&parentCode=cert_ssl&productCode=certificatemanagement\" target=\"_blank\">https://cdn.console.wangsu.com/v2/index#/certificate/list</a><br><br>不填写时,将上传新证书;否则,将替换原证书。",
|
||||
"workflow_node.deploy.form.webhook_data.label": "Webhook 回调数据(可选)",
|
||||
"workflow_node.deploy.form.webhook_data.placeholder": "请输入 Webhook 回调数据以覆盖默认值",
|
||||
"workflow_node.deploy.form.webhook_data.tooltip": "不填写时,将使用所选部署目标授权的默认 Webhook 回调数据。",
|
||||
|
@@ -126,11 +126,11 @@ const CertificateList = () => {
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "issuer",
|
||||
key: "brand",
|
||||
title: t("certificate.props.brand"),
|
||||
render: (_, record) => (
|
||||
<Space className="max-w-full" direction="vertical" size={4}>
|
||||
<Typography.Text>{record.issuer}</Typography.Text>
|
||||
<Typography.Text>{record.issuerOrg}</Typography.Text>
|
||||
<Typography.Text>{record.keyAlgorithm}</Typography.Text>
|
||||
</Space>
|
||||
),
|
||||
|
Reference in New Issue
Block a user