-
{t("workflow_node.notify.form.channel.label")}
+
{t("workflow_node.notify.form.channel.label")}
}
width={720}
diff --git a/ui/src/domain/access.ts b/ui/src/domain/access.ts
index ed1bc1ee..1cac27ba 100644
--- a/ui/src/domain/access.ts
+++ b/ui/src/domain/access.ts
@@ -14,6 +14,7 @@ export interface AccessModel extends BaseModel {
| AccessConfigForBaiduCloud
| AccessConfigForBaishan
| AccessConfigForBaotaPanel
+ | AccessConfigForBunny
| AccessConfigForBytePlus
| AccessConfigForCacheFly
| AccessConfigForCdnfly
@@ -21,34 +22,46 @@ export interface AccessModel extends BaseModel {
| AccessConfigForClouDNS
| AccessConfigForCMCCCloud
| AccessConfigForDeSEC
+ | AccessConfigForDingTalkBot
| AccessConfigForDNSLA
| AccessConfigForDogeCloud
| AccessConfigForDynv6
| AccessConfigForEdgio
+ | AccessConfigForEmail
| AccessConfigForGcore
| AccessConfigForGname
| AccessConfigForGoDaddy
+ | AccessConfigForGoEdge
+ | AccessConfigForGoogleTrustServices
| AccessConfigForHuaweiCloud
| AccessConfigForJDCloud
| AccessConfigForKubernetes
- | AccessConfigForLocal
+ | AccessConfigForLarkBot
+ | AccessConfigForMattermost
| AccessConfigForNamecheap
| AccessConfigForNameDotCom
| AccessConfigForNameSilo
| AccessConfigForPorkbun
| AccessConfigForPowerDNS
+ | AccessConfigForProxmoxVE
| AccessConfigForQiniu
| AccessConfigForRainYun
| AccessConfigForSafeLine
| AccessConfigForSSH
+ | AccessConfigForSSLCom
+ | AccessConfigForTelegram
| AccessConfigForTencentCloud
| AccessConfigForUCloud
| AccessConfigForUpyun
| AccessConfigForVercel
| AccessConfigForVolcEngine
+ | AccessConfigForWangsu
| AccessConfigForWebhook
+ | AccessConfigForWeComBot
| AccessConfigForWestcn
+ | AccessConfigForZeroSSL
);
+ reserve?: "ca" | "notification";
}
// #region AccessConfig
@@ -97,6 +110,10 @@ export type AccessConfigForBaotaPanel = {
allowInsecureConnections?: boolean;
};
+export type AccessConfigForBunny = {
+ apiKey: string;
+};
+
export type AccessConfigForBytePlus = {
accessKey: string;
secretKey: string;
@@ -110,10 +127,12 @@ export type AccessConfigForCdnfly = {
apiUrl: string;
apiKey: string;
apiSecret: string;
+ allowInsecureConnections?: boolean;
};
export type AccessConfigForCloudflare = {
dnsApiToken: string;
+ zoneApiToken?: string;
};
export type AccessConfigForClouDNS = {
@@ -130,6 +149,11 @@ export type AccessConfigForDeSEC = {
token: string;
};
+export type AccessConfigForDingTalkBot = {
+ webhookUrl: string;
+ secret?: string;
+};
+
export type AccessConfigForDNSLA = {
apiId: string;
apiSecret: string;
@@ -149,6 +173,16 @@ export type AccessConfigForEdgio = {
clientSecret: string;
};
+export type AccessConfigForEmail = {
+ smtpHost: string;
+ smtpPort: number;
+ smtpTls: boolean;
+ username: string;
+ password: string;
+ defaultSenderAddress?: string;
+ defaultReceiverAddress?: string;
+};
+
export type AccessConfigForGcore = {
apiToken: string;
};
@@ -163,6 +197,18 @@ export type AccessConfigForGoDaddy = {
apiSecret: string;
};
+export type AccessConfigForGoEdge = {
+ apiUrl: string;
+ accessKeyId: string;
+ accessKey: string;
+ allowInsecureConnections?: boolean;
+};
+
+export type AccessConfigForGoogleTrustServices = {
+ eabKid: string;
+ eabHmacKey: string;
+};
+
export type AccessConfigForHuaweiCloud = {
accessKeyId: string;
secretAccessKey: string;
@@ -177,7 +223,16 @@ export type AccessConfigForKubernetes = {
kubeConfig?: string;
};
-export type AccessConfigForLocal = NonNullable
;
+export type AccessConfigForLarkBot = {
+ webhookUrl: string;
+};
+
+export type AccessConfigForMattermost = {
+ serverUrl: string;
+ username: string;
+ password: string;
+ defaultChannelId?: string;
+};
export type AccessConfigForNamecheap = {
username: string;
@@ -205,6 +260,14 @@ export type AccessConfigForPorkbun = {
export type AccessConfigForPowerDNS = {
apiUrl: string;
apiKey: string;
+ allowInsecureConnections?: boolean;
+};
+
+export type AccessConfigForProxmoxVE = {
+ apiUrl: string;
+ apiToken: string;
+ apiTokenSecret?: string;
+ allowInsecureConnections?: boolean;
};
export type AccessConfigForQiniu = {
@@ -231,6 +294,16 @@ export type AccessConfigForSSH = {
keyPassphrase?: string;
};
+export type AccessConfigForSSLCom = {
+ eabKid: string;
+ eabHmacKey: string;
+};
+
+export type AccessConfigForTelegram = {
+ botToken: string;
+ defaultChatId?: number;
+};
+
export type AccessConfigForTencentCloud = {
secretId: string;
secretKey: string;
@@ -257,13 +330,32 @@ export type AccessConfigForVolcEngine = {
secretAccessKey: string;
};
+export type AccessConfigForWangsu = {
+ accessKeyId: string;
+ accessKeySecret: string;
+ apiKey: string;
+};
+
export type AccessConfigForWebhook = {
url: string;
+ method: string;
+ headers?: string;
allowInsecureConnections?: boolean;
+ defaultDataForDeployment?: string;
+ defaultDataForNotification?: string;
+};
+
+export type AccessConfigForWeComBot = {
+ webhookUrl: string;
};
export type AccessConfigForWestcn = {
username: string;
apiPassword: string;
};
+
+export type AccessConfigForZeroSSL = {
+ eabKid: string;
+ eabHmacKey: string;
+};
// #endregion
diff --git a/ui/src/domain/provider.ts b/ui/src/domain/provider.ts
index d4f7ba46..6fc29ad4 100644
--- a/ui/src/domain/provider.ts
+++ b/ui/src/domain/provider.ts
@@ -12,48 +12,66 @@ export const ACCESS_PROVIDERS = Object.freeze({
BAIDUCLOUD: "baiducloud",
BAISHAN: "baishan",
BAOTAPANEL: "baotapanel",
+ BUNNY: "bunny",
BYTEPLUS: "byteplus",
+ BUYPASS: "buypass",
CACHEFLY: "cachefly",
CDNFLY: "cdnfly",
CLOUDFLARE: "cloudflare",
CLOUDNS: "cloudns",
CMCCCLOUD: "cmcccloud",
DESEC: "desec",
+ DINGTALKBOT: "dingtalkbot",
DNSLA: "dnsla",
DOGECLOUD: "dogecloud",
DYNV6: "dynv6",
+ EDGIO: "edgio",
+ EMAIL: "email",
GCORE: "gcore",
GNAME: "gname",
GODADDY: "godaddy",
- EDGIO: "edgio",
+ GOEDGE: "goedge",
+ GOOGLETRUSTSERVICES: "googletrustservices",
HUAWEICLOUD: "huaweicloud",
JDCLOUD: "jdcloud",
KUBERNETES: "k8s",
+ LARKBOT: "larkbot",
+ LETSENCRYPT: "letsencrypt",
+ LETSENCRYPTSTAGING: "letsencryptstaging",
LOCAL: "local",
+ MATTERMOST: "mattermost",
NAMECHEAP: "namecheap",
NAMEDOTCOM: "namedotcom",
NAMESILO: "namesilo",
NS1: "ns1",
PORKBUN: "porkbun",
POWERDNS: "powerdns",
+ PROXMOXVE: "proxmoxve",
QINIU: "qiniu",
RAINYUN: "rainyun",
SAFELINE: "safeline",
SSH: "ssh",
+ SSLCOM: "sslcom",
+ TELEGRAM: "telegram",
TENCENTCLOUD: "tencentcloud",
UCLOUD: "ucloud",
UPYUN: "upyun",
VERCEL: "vercel",
VOLCENGINE: "volcengine",
+ WANGSU: "wangsu",
WEBHOOK: "webhook",
+ WECOMBOT: "wecombot",
WESTCN: "westcn",
+ ZEROSSL: "zerossl",
} as const);
export type AccessProviderType = (typeof ACCESS_PROVIDERS)[keyof typeof ACCESS_PROVIDERS];
export const ACCESS_USAGES = Object.freeze({
- APPLY: "apply",
- DEPLOY: "deploy",
+ DNS: "dns",
+ HOSTING: "hosting",
+ CA: "ca",
+ NOTIFICATION: "notification",
} as const);
export type AccessUsageType = (typeof ACCESS_USAGES)[keyof typeof ACCESS_USAGES];
@@ -63,59 +81,79 @@ export type AccessProvider = {
name: string;
icon: string;
usages: AccessUsageType[];
+ builtin: boolean;
};
export const accessProvidersMap: Map = new Map(
/*
- 注意:此处的顺序决定显示在前端的顺序。
- NOTICE: The following order determines the order displayed at the frontend.
- */
+ 注意:此处的顺序决定显示在前端的顺序。
+ NOTICE: The following order determines the order displayed at the frontend.
+ */
[
- [ACCESS_PROVIDERS.LOCAL, "provider.local", "/imgs/providers/local.svg", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.SSH, "provider.ssh", "/imgs/providers/ssh.svg", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.WEBHOOK, "provider.webhook", "/imgs/providers/webhook.svg", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.KUBERNETES, "provider.kubernetes", "/imgs/providers/kubernetes.svg", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.ALIYUN, "provider.aliyun", "/imgs/providers/aliyun.svg", [ACCESS_USAGES.APPLY, ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.TENCENTCLOUD, "provider.tencentcloud", "/imgs/providers/tencentcloud.svg", [ACCESS_USAGES.APPLY, ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.BAIDUCLOUD, "provider.baiducloud", "/imgs/providers/baiducloud.svg", [ACCESS_USAGES.APPLY, ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.HUAWEICLOUD, "provider.huaweicloud", "/imgs/providers/huaweicloud.svg", [ACCESS_USAGES.APPLY, ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.VOLCENGINE, "provider.volcengine", "/imgs/providers/volcengine.svg", [ACCESS_USAGES.APPLY, ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.JDCLOUD, "provider.jdcloud", "/imgs/providers/jdcloud.svg", [ACCESS_USAGES.APPLY, ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.AWS, "provider.aws", "/imgs/providers/aws.svg", [ACCESS_USAGES.APPLY, ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.AZURE, "provider.azure", "/imgs/providers/azure.svg", [ACCESS_USAGES.APPLY, ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.GCORE, "provider.gcore", "/imgs/providers/gcore.png", [ACCESS_USAGES.APPLY, ACCESS_USAGES.DEPLOY]],
+ [ACCESS_PROVIDERS.LOCAL, "provider.local", "/imgs/providers/local.svg", [ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.SSH, "provider.ssh", "/imgs/providers/ssh.svg", [ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.WEBHOOK, "provider.webhook", "/imgs/providers/webhook.svg", [ACCESS_USAGES.HOSTING, ACCESS_USAGES.NOTIFICATION]],
+ [ACCESS_PROVIDERS.KUBERNETES, "provider.kubernetes", "/imgs/providers/kubernetes.svg", [ACCESS_USAGES.HOSTING]],
- [ACCESS_PROVIDERS.QINIU, "provider.qiniu", "/imgs/providers/qiniu.svg", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.UPYUN, "provider.upyun", "/imgs/providers/upyun.svg", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.BAISHAN, "provider.baishan", "/imgs/providers/baishan.png", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.DOGECLOUD, "provider.dogecloud", "/imgs/providers/dogecloud.png", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.BYTEPLUS, "provider.byteplus", "/imgs/providers/byteplus.svg", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.UCLOUD, "provider.ucloud", "/imgs/providers/ucloud.svg", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.SAFELINE, "provider.safeline", "/imgs/providers/safeline.svg", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS["1PANEL"], "provider.1panel", "/imgs/providers/1panel.svg", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.BAOTAPANEL, "provider.baotapanel", "/imgs/providers/baotapanel.svg", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.CACHEFLY, "provider.cachefly", "/imgs/providers/cachefly.png", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.CDNFLY, "provider.cdnfly", "/imgs/providers/cdnfly.png", [ACCESS_USAGES.DEPLOY]],
- [ACCESS_PROVIDERS.EDGIO, "provider.edgio", "/imgs/providers/edgio.svg", [ACCESS_USAGES.DEPLOY]],
+ [ACCESS_PROVIDERS.ALIYUN, "provider.aliyun", "/imgs/providers/aliyun.svg", [ACCESS_USAGES.DNS, ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.TENCENTCLOUD, "provider.tencentcloud", "/imgs/providers/tencentcloud.svg", [ACCESS_USAGES.DNS, ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.BAIDUCLOUD, "provider.baiducloud", "/imgs/providers/baiducloud.svg", [ACCESS_USAGES.DNS, ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.HUAWEICLOUD, "provider.huaweicloud", "/imgs/providers/huaweicloud.svg", [ACCESS_USAGES.DNS, ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.VOLCENGINE, "provider.volcengine", "/imgs/providers/volcengine.svg", [ACCESS_USAGES.DNS, ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.JDCLOUD, "provider.jdcloud", "/imgs/providers/jdcloud.svg", [ACCESS_USAGES.DNS, ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.AWS, "provider.aws", "/imgs/providers/aws.svg", [ACCESS_USAGES.DNS, ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.AZURE, "provider.azure", "/imgs/providers/azure.svg", [ACCESS_USAGES.DNS, ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.BUNNY, "provider.bunny", "/imgs/providers/bunny.svg", [ACCESS_USAGES.DNS, ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.GCORE, "provider.gcore", "/imgs/providers/gcore.png", [ACCESS_USAGES.DNS, ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.RAINYUN, "provider.rainyun", "/imgs/providers/rainyun.svg", [ACCESS_USAGES.DNS, ACCESS_USAGES.HOSTING]],
- [ACCESS_PROVIDERS.CLOUDFLARE, "provider.cloudflare", "/imgs/providers/cloudflare.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.CLOUDNS, "provider.cloudns", "/imgs/providers/cloudns.png", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.DESEC, "provider.desec", "/imgs/providers/desec.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.DNSLA, "provider.dnsla", "/imgs/providers/dnsla.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.DYNV6, "provider.dynv6", "/imgs/providers/dynv6.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.GNAME, "provider.gname", "/imgs/providers/gname.png", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.GODADDY, "provider.godaddy", "/imgs/providers/godaddy.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.NAMECHEAP, "provider.namecheap", "/imgs/providers/namecheap.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.NAMEDOTCOM, "provider.namedotcom", "/imgs/providers/namedotcom.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.NAMESILO, "provider.namesilo", "/imgs/providers/namesilo.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.NS1, "provider.ns1", "/imgs/providers/ns1.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.PORKBUN, "provider.porkbun", "/imgs/providers/porkbun.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.VERCEL, "provider.vercel", "/imgs/providers/vercel.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.CMCCCLOUD, "provider.cmcccloud", "/imgs/providers/cmcccloud.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.RAINYUN, "provider.rainyun", "/imgs/providers/rainyun.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.WESTCN, "provider.westcn", "/imgs/providers/westcn.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.POWERDNS, "provider.powerdns", "/imgs/providers/powerdns.svg", [ACCESS_USAGES.APPLY]],
- [ACCESS_PROVIDERS.ACMEHTTPREQ, "provider.acmehttpreq", "/imgs/providers/acmehttpreq.svg", [ACCESS_USAGES.APPLY]],
+ [ACCESS_PROVIDERS.QINIU, "provider.qiniu", "/imgs/providers/qiniu.svg", [ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.UPYUN, "provider.upyun", "/imgs/providers/upyun.svg", [ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.BAISHAN, "provider.baishan", "/imgs/providers/baishan.png", [ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.WANGSU, "provider.wangsu", "/imgs/providers/wangsu.svg", [ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.DOGECLOUD, "provider.dogecloud", "/imgs/providers/dogecloud.png", [ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.BYTEPLUS, "provider.byteplus", "/imgs/providers/byteplus.svg", [ACCESS_USAGES.HOSTING]],
+ [ACCESS_PROVIDERS.UCLOUD, "provider.ucloud", "/imgs/providers/ucloud.svg", [ACCESS_USAGES.HOSTING]],
+ [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.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.GOEDGE, "provider.goedge", "/imgs/providers/goedge.png", [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]],
+ [ACCESS_PROVIDERS.CLOUDNS, "provider.cloudns", "/imgs/providers/cloudns.png", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.DESEC, "provider.desec", "/imgs/providers/desec.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.DNSLA, "provider.dnsla", "/imgs/providers/dnsla.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.DYNV6, "provider.dynv6", "/imgs/providers/dynv6.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.GNAME, "provider.gname", "/imgs/providers/gname.png", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.GODADDY, "provider.godaddy", "/imgs/providers/godaddy.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.NAMECHEAP, "provider.namecheap", "/imgs/providers/namecheap.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.NAMEDOTCOM, "provider.namedotcom", "/imgs/providers/namedotcom.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.NAMESILO, "provider.namesilo", "/imgs/providers/namesilo.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.NS1, "provider.ns1", "/imgs/providers/ns1.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.PORKBUN, "provider.porkbun", "/imgs/providers/porkbun.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.VERCEL, "provider.vercel", "/imgs/providers/vercel.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.CMCCCLOUD, "provider.cmcccloud", "/imgs/providers/cmcccloud.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.WESTCN, "provider.westcn", "/imgs/providers/westcn.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.POWERDNS, "provider.powerdns", "/imgs/providers/powerdns.svg", [ACCESS_USAGES.DNS]],
+ [ACCESS_PROVIDERS.ACMEHTTPREQ, "provider.acmehttpreq", "/imgs/providers/acmehttpreq.svg", [ACCESS_USAGES.DNS]],
+
+ [ACCESS_PROVIDERS.LETSENCRYPT, "provider.letsencrypt", "/imgs/providers/letsencrypt.svg", [ACCESS_USAGES.CA]],
+ [ACCESS_PROVIDERS.LETSENCRYPTSTAGING, "provider.letsencryptstaging", "/imgs/providers/letsencrypt.svg", [ACCESS_USAGES.CA]],
+ [ACCESS_PROVIDERS.BUYPASS, "provider.buypass", "/imgs/providers/buypass.png", [ACCESS_USAGES.CA]],
+ [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.EMAIL, "provider.email", "/imgs/providers/email.svg", [ACCESS_USAGES.NOTIFICATION]],
+ [ACCESS_PROVIDERS.DINGTALKBOT, "provider.dingtalkbot", "/imgs/providers/dingtalk.svg", [ACCESS_USAGES.NOTIFICATION]],
+ [ACCESS_PROVIDERS.LARKBOT, "provider.larkbot", "/imgs/providers/lark.svg", [ACCESS_USAGES.NOTIFICATION]],
+ [ACCESS_PROVIDERS.WECOMBOT, "provider.wecombot", "/imgs/providers/wecom.svg", [ACCESS_USAGES.NOTIFICATION]],
+ [ACCESS_PROVIDERS.MATTERMOST, "provider.mattermost", "/imgs/providers/mattermost.svg", [ACCESS_USAGES.NOTIFICATION]],
+ [ACCESS_PROVIDERS.TELEGRAM, "provider.telegram", "/imgs/providers/telegram.svg", [ACCESS_USAGES.NOTIFICATION]],
].map((e) => [
e[0] as string,
{
@@ -123,26 +161,78 @@ export const accessProvidersMap: Map = new Map(
+ /*
+ 注意:此处的顺序决定显示在前端的顺序。
+ NOTICE: The following order determines the order displayed at the frontend.
+ */
+ [
+ [CA_PROVIDERS.LETSENCRYPT, "builtin"],
+ [CA_PROVIDERS.LETSENCRYPTSTAGING, "builtin"],
+ [CA_PROVIDERS.BUYPASS],
+ [CA_PROVIDERS.GOOGLETRUSTSERVICES],
+ [CA_PROVIDERS.SSLCOM],
+ [CA_PROVIDERS.ZEROSSL],
+ ].map(([type, builtin]) => [
+ type,
+ {
+ type: type as CAProviderType,
+ name: accessProvidersMap.get(type.split("-")[0])!.name,
+ icon: accessProvidersMap.get(type.split("-")[0])!.icon,
+ provider: type.split("-")[0] as AccessProviderType,
+ builtin: builtin === "builtin",
+ },
+ ])
+);
+// #endregion
+
+// #region ACMEDNS01Provider
+/*
+ 注意:如果追加新的常量值,请保持以 ASCII 排序。
+ NOTICE: If you add new constant, please keep ASCII order.
+ */
+export const ACME_DNS01_PROVIDERS = Object.freeze({
ACMEHTTPREQ: `${ACCESS_PROVIDERS.ACMEHTTPREQ}`,
ALIYUN: `${ACCESS_PROVIDERS.ALIYUN}`, // 兼容旧值,等同于 `ALIYUN_DNS`
ALIYUN_DNS: `${ACCESS_PROVIDERS.ALIYUN}-dns`,
+ ALIYUN_ESA: `${ACCESS_PROVIDERS.ALIYUN}-esa`,
AWS: `${ACCESS_PROVIDERS.AWS}`, // 兼容旧值,等同于 `AWS_ROUTE53`
AWS_ROUTE53: `${ACCESS_PROVIDERS.AWS}-route53`,
AZURE: `${ACCESS_PROVIDERS.AZURE}`, // 兼容旧值,等同于 `AZURE_DNS`
AZURE_DNS: `${ACCESS_PROVIDERS.AZURE}-dns`,
BAIDUCLOUD: `${ACCESS_PROVIDERS.BAIDUCLOUD}`, // 兼容旧值,等同于 `BAIDUCLOUD_DNS`
BAIDUCLOUD_DNS: `${ACCESS_PROVIDERS.BAIDUCLOUD}-dns`,
+ BUNNY: `${ACCESS_PROVIDERS.BUNNY}`,
CLOUDFLARE: `${ACCESS_PROVIDERS.CLOUDFLARE}`,
CLOUDNS: `${ACCESS_PROVIDERS.CLOUDNS}`,
CMCCCLOUD: `${ACCESS_PROVIDERS.CMCCCLOUD}`,
@@ -172,53 +262,55 @@ export const APPLY_DNS_PROVIDERS = Object.freeze({
WESTCN: `${ACCESS_PROVIDERS.WESTCN}`,
} as const);
-export type ApplyDNSProviderType = (typeof APPLY_DNS_PROVIDERS)[keyof typeof APPLY_DNS_PROVIDERS];
+export type ACMEDns01ProviderType = (typeof ACME_DNS01_PROVIDERS)[keyof typeof ACME_DNS01_PROVIDERS];
-export type ApplyDNSProvider = {
- type: ApplyDNSProviderType;
+export type ACMEDns01Provider = {
+ type: ACMEDns01ProviderType;
name: string;
icon: string;
provider: AccessProviderType;
};
-export const applyDNSProvidersMap: Map = new Map(
+export const acmeDns01ProvidersMap: Map = new Map(
/*
- 注意:此处的顺序决定显示在前端的顺序。
- NOTICE: The following order determines the order displayed at the frontend.
- */
+ 注意:此处的顺序决定显示在前端的顺序。
+ NOTICE: The following order determines the order displayed at the frontend.
+ */
[
- [APPLY_DNS_PROVIDERS.ALIYUN_DNS, "provider.aliyun.dns"],
- [APPLY_DNS_PROVIDERS.TENCENTCLOUD_DNS, "provider.tencentcloud.dns"],
- [APPLY_DNS_PROVIDERS.TENCENTCLOUD_EO, "provider.tencentcloud.eo"],
- [APPLY_DNS_PROVIDERS.BAIDUCLOUD_DNS, "provider.baiducloud.dns"],
- [APPLY_DNS_PROVIDERS.HUAWEICLOUD_DNS, "provider.huaweicloud.dns"],
- [APPLY_DNS_PROVIDERS.VOLCENGINE_DNS, "provider.volcengine.dns"],
- [APPLY_DNS_PROVIDERS.JDCLOUD_DNS, "provider.jdcloud.dns"],
- [APPLY_DNS_PROVIDERS.AWS_ROUTE53, "provider.aws.route53"],
- [APPLY_DNS_PROVIDERS.AZURE_DNS, "provider.azure.dns"],
- [APPLY_DNS_PROVIDERS.CLOUDFLARE, "provider.cloudflare"],
- [APPLY_DNS_PROVIDERS.CLOUDNS, "provider.cloudns"],
- [APPLY_DNS_PROVIDERS.DESEC, "provider.desec"],
- [APPLY_DNS_PROVIDERS.DNSLA, "provider.dnsla"],
- [APPLY_DNS_PROVIDERS.DYNV6, "provider.dynv6"],
- [APPLY_DNS_PROVIDERS.GCORE, "provider.gcore"],
- [APPLY_DNS_PROVIDERS.GNAME, "provider.gname"],
- [APPLY_DNS_PROVIDERS.GODADDY, "provider.godaddy"],
- [APPLY_DNS_PROVIDERS.NAMECHEAP, "provider.namecheap"],
- [APPLY_DNS_PROVIDERS.NAMEDOTCOM, "provider.namedotcom"],
- [APPLY_DNS_PROVIDERS.NAMESILO, "provider.namesilo"],
- [APPLY_DNS_PROVIDERS.NS1, "provider.ns1"],
- [APPLY_DNS_PROVIDERS.PORKBUN, "provider.porkbun"],
- [APPLY_DNS_PROVIDERS.VERCEL, "provider.vercel"],
- [APPLY_DNS_PROVIDERS.CMCCCLOUD, "provider.cmcccloud"],
- [APPLY_DNS_PROVIDERS.RAINYUN, "provider.rainyun"],
- [APPLY_DNS_PROVIDERS.WESTCN, "provider.westcn"],
- [APPLY_DNS_PROVIDERS.POWERDNS, "provider.powerdns"],
- [APPLY_DNS_PROVIDERS.ACMEHTTPREQ, "provider.acmehttpreq"],
+ [ACME_DNS01_PROVIDERS.ALIYUN_DNS, "provider.aliyun.dns"],
+ [ACME_DNS01_PROVIDERS.ALIYUN_ESA, "provider.aliyun.esa"],
+ [ACME_DNS01_PROVIDERS.TENCENTCLOUD_DNS, "provider.tencentcloud.dns"],
+ [ACME_DNS01_PROVIDERS.TENCENTCLOUD_EO, "provider.tencentcloud.eo"],
+ [ACME_DNS01_PROVIDERS.BAIDUCLOUD_DNS, "provider.baiducloud.dns"],
+ [ACME_DNS01_PROVIDERS.HUAWEICLOUD_DNS, "provider.huaweicloud.dns"],
+ [ACME_DNS01_PROVIDERS.VOLCENGINE_DNS, "provider.volcengine.dns"],
+ [ACME_DNS01_PROVIDERS.JDCLOUD_DNS, "provider.jdcloud.dns"],
+ [ACME_DNS01_PROVIDERS.AWS_ROUTE53, "provider.aws.route53"],
+ [ACME_DNS01_PROVIDERS.AZURE_DNS, "provider.azure.dns"],
+ [ACME_DNS01_PROVIDERS.BUNNY, "provider.bunny"],
+ [ACME_DNS01_PROVIDERS.CLOUDFLARE, "provider.cloudflare"],
+ [ACME_DNS01_PROVIDERS.CLOUDNS, "provider.cloudns"],
+ [ACME_DNS01_PROVIDERS.DESEC, "provider.desec"],
+ [ACME_DNS01_PROVIDERS.DNSLA, "provider.dnsla"],
+ [ACME_DNS01_PROVIDERS.DYNV6, "provider.dynv6"],
+ [ACME_DNS01_PROVIDERS.GCORE, "provider.gcore"],
+ [ACME_DNS01_PROVIDERS.GNAME, "provider.gname"],
+ [ACME_DNS01_PROVIDERS.GODADDY, "provider.godaddy"],
+ [ACME_DNS01_PROVIDERS.NAMECHEAP, "provider.namecheap"],
+ [ACME_DNS01_PROVIDERS.NAMEDOTCOM, "provider.namedotcom"],
+ [ACME_DNS01_PROVIDERS.NAMESILO, "provider.namesilo"],
+ [ACME_DNS01_PROVIDERS.NS1, "provider.ns1"],
+ [ACME_DNS01_PROVIDERS.PORKBUN, "provider.porkbun"],
+ [ACME_DNS01_PROVIDERS.VERCEL, "provider.vercel"],
+ [ACME_DNS01_PROVIDERS.CMCCCLOUD, "provider.cmcccloud"],
+ [ACME_DNS01_PROVIDERS.RAINYUN, "provider.rainyun"],
+ [ACME_DNS01_PROVIDERS.WESTCN, "provider.westcn"],
+ [ACME_DNS01_PROVIDERS.POWERDNS, "provider.powerdns"],
+ [ACME_DNS01_PROVIDERS.ACMEHTTPREQ, "provider.acmehttpreq"],
].map(([type, name]) => [
type,
{
- type: type as ApplyDNSProviderType,
+ type: type as ACMEDns01ProviderType,
name: name,
icon: accessProvidersMap.get(type.split("-")[0])!.icon,
provider: type.split("-")[0] as AccessProviderType,
@@ -227,20 +319,22 @@ export const applyDNSProvidersMap: Map = new Map(
+export const deploymentProvidersMap: Map = new Map(
/*
注意:此处的顺序决定显示在前端的顺序。
NOTICE: The following order determines the order displayed at the frontend.
*/
[
- [DEPLOY_PROVIDERS.LOCAL, "provider.local", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.SSH, "provider.ssh", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.WEBHOOK, "provider.webhook", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.KUBERNETES_SECRET, "provider.kubernetes.secret", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.ALIYUN_OSS, "provider.aliyun.oss", DEPLOY_CATEGORIES.STORAGE],
- [DEPLOY_PROVIDERS.ALIYUN_CDN, "provider.aliyun.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.ALIYUN_DCDN, "provider.aliyun.dcdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.ALIYUN_ESA, "provider.aliyun.esa", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.ALIYUN_CLB, "provider.aliyun.clb", DEPLOY_CATEGORIES.LOADBALANCE],
- [DEPLOY_PROVIDERS.ALIYUN_ALB, "provider.aliyun.alb", DEPLOY_CATEGORIES.LOADBALANCE],
- [DEPLOY_PROVIDERS.ALIYUN_NLB, "provider.aliyun.nlb", DEPLOY_CATEGORIES.LOADBALANCE],
- [DEPLOY_PROVIDERS.ALIYUN_WAF, "provider.aliyun.waf", DEPLOY_CATEGORIES.FIREWALL],
- [DEPLOY_PROVIDERS.ALIYUN_LIVE, "provider.aliyun.live", DEPLOY_CATEGORIES.AV],
- [DEPLOY_PROVIDERS.ALIYUN_VOD, "provider.aliyun.vod", DEPLOY_CATEGORIES.AV],
- [DEPLOY_PROVIDERS.ALIYUN_FC, "provider.aliyun.fc", DEPLOY_CATEGORIES.SERVERLESS],
- [DEPLOY_PROVIDERS.ALIYUN_CAS, "provider.aliyun.cas", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.ALIYUN_CAS_DEPLOY, "provider.aliyun.cas_deploy", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.TENCENTCLOUD_COS, "provider.tencentcloud.cos", DEPLOY_CATEGORIES.STORAGE],
- [DEPLOY_PROVIDERS.TENCENTCLOUD_CDN, "provider.tencentcloud.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.TENCENTCLOUD_ECDN, "provider.tencentcloud.ecdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.TENCENTCLOUD_EO, "provider.tencentcloud.eo", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.TENCENTCLOUD_CLB, "provider.tencentcloud.clb", DEPLOY_CATEGORIES.LOADBALANCE],
- [DEPLOY_PROVIDERS.TENCENTCLOUD_WAF, "provider.tencentcloud.waf", DEPLOY_CATEGORIES.FIREWALL],
- [DEPLOY_PROVIDERS.TENCENTCLOUD_CSS, "provider.tencentcloud.css", DEPLOY_CATEGORIES.AV],
- [DEPLOY_PROVIDERS.TENCENTCLOUD_VOD, "provider.tencentcloud.vod", DEPLOY_CATEGORIES.AV],
- [DEPLOY_PROVIDERS.TENCENTCLOUD_SCF, "provider.tencentcloud.scf", DEPLOY_CATEGORIES.SERVERLESS],
- [DEPLOY_PROVIDERS.TENCENTCLOUD_SSL, "provider.tencentcloud.ssl", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.TENCENTCLOUD_SSL_DEPLOY, "provider.tencentcloud.ssl_deploy", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.BAIDUCLOUD_CDN, "provider.baiducloud.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.BAIDUCLOUD_BLB, "provider.baiducloud.blb", DEPLOY_CATEGORIES.LOADBALANCE],
- [DEPLOY_PROVIDERS.BAIDUCLOUD_APPBLB, "provider.baiducloud.appblb", DEPLOY_CATEGORIES.LOADBALANCE],
- [DEPLOY_PROVIDERS.BAIDUCLOUD_CERT, "provider.baiducloud.cert", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.HUAWEICLOUD_CDN, "provider.huaweicloud.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.HUAWEICLOUD_ELB, "provider.huaweicloud.elb", DEPLOY_CATEGORIES.LOADBALANCE],
- [DEPLOY_PROVIDERS.HUAWEICLOUD_WAF, "provider.huaweicloud.waf", DEPLOY_CATEGORIES.FIREWALL],
- [DEPLOY_PROVIDERS.HUAWEICLOUD_SCM, "provider.huaweicloud.scm", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.VOLCENGINE_TOS, "provider.volcengine.tos", DEPLOY_CATEGORIES.STORAGE],
- [DEPLOY_PROVIDERS.VOLCENGINE_CDN, "provider.volcengine.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.VOLCENGINE_DCDN, "provider.volcengine.dcdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.VOLCENGINE_CLB, "provider.volcengine.clb", DEPLOY_CATEGORIES.LOADBALANCE],
- [DEPLOY_PROVIDERS.VOLCENGINE_ALB, "provider.volcengine.alb", DEPLOY_CATEGORIES.LOADBALANCE],
- [DEPLOY_PROVIDERS.VOLCENGINE_IMAGEX, "provider.volcengine.imagex", DEPLOY_CATEGORIES.STORAGE],
- [DEPLOY_PROVIDERS.VOLCENGINE_LIVE, "provider.volcengine.live", DEPLOY_CATEGORIES.AV],
- [DEPLOY_PROVIDERS.VOLCENGINE_CERTCENTER, "provider.volcengine.certcenter", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.JDCLOUD_ALB, "provider.jdcloud.alb", DEPLOY_CATEGORIES.LOADBALANCE],
- [DEPLOY_PROVIDERS.JDCLOUD_CDN, "provider.jdcloud.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.JDCLOUD_LIVE, "provider.jdcloud.live", DEPLOY_CATEGORIES.AV],
- [DEPLOY_PROVIDERS.JDCLOUD_VOD, "provider.jdcloud.vod", DEPLOY_CATEGORIES.AV],
- [DEPLOY_PROVIDERS.QINIU_KODO, "provider.qiniu.kodo", DEPLOY_CATEGORIES.STORAGE],
- [DEPLOY_PROVIDERS.QINIU_CDN, "provider.qiniu.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.QINIU_PILI, "provider.qiniu.pili", DEPLOY_CATEGORIES.AV],
- [DEPLOY_PROVIDERS.UPYUN_FILE, "provider.upyun.file", DEPLOY_CATEGORIES.STORAGE],
- [DEPLOY_PROVIDERS.UPYUN_CDN, "provider.upyun.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.BAISHAN_CDN, "provider.baishan.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.DOGECLOUD_CDN, "provider.dogecloud.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.BYTEPLUS_CDN, "provider.byteplus.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.UCLOUD_US3, "provider.ucloud.us3", DEPLOY_CATEGORIES.STORAGE],
- [DEPLOY_PROVIDERS.UCLOUD_UCDN, "provider.ucloud.ucdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.AWS_CLOUDFRONT, "provider.aws.cloudfront", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.AWS_ACM, "provider.aws.acm", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.AZURE_KEYVAULT, "provider.azure.keyvault", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.CACHEFLY, "provider.cachefly", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.CDNFLY, "provider.cdnfly", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS.EDGIO_APPLICATIONS, "provider.edgio.applications", DEPLOY_CATEGORIES.WEBSITE],
- [DEPLOY_PROVIDERS.GCORE_CDN, "provider.gcore.cdn", DEPLOY_CATEGORIES.CDN],
- [DEPLOY_PROVIDERS["1PANEL_SITE"], "provider.1panel.site", DEPLOY_CATEGORIES.WEBSITE],
- [DEPLOY_PROVIDERS["1PANEL_CONSOLE"], "provider.1panel.console", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.BAOTAPANEL_SITE, "provider.baotapanel.site", DEPLOY_CATEGORIES.WEBSITE],
- [DEPLOY_PROVIDERS.BAOTAPANEL_CONSOLE, "provider.baotapanel.console", DEPLOY_CATEGORIES.OTHER],
- [DEPLOY_PROVIDERS.SAFELINE, "provider.safeline", DEPLOY_CATEGORIES.FIREWALL],
- ].map(([type, name, category]) => [
+ [DEPLOYMENT_PROVIDERS.LOCAL, "provider.local", DEPLOYMENT_CATEGORIES.OTHER, "builtin"],
+ [DEPLOYMENT_PROVIDERS.SSH, "provider.ssh", DEPLOYMENT_CATEGORIES.OTHER],
+ [DEPLOYMENT_PROVIDERS.WEBHOOK, "provider.webhook", DEPLOYMENT_CATEGORIES.OTHER],
+ [DEPLOYMENT_PROVIDERS.KUBERNETES_SECRET, "provider.kubernetes.secret", DEPLOYMENT_CATEGORIES.OTHER],
+ [DEPLOYMENT_PROVIDERS.ALIYUN_OSS, "provider.aliyun.oss", DEPLOYMENT_CATEGORIES.STORAGE],
+ [DEPLOYMENT_PROVIDERS.ALIYUN_CDN, "provider.aliyun.cdn", DEPLOYMENT_CATEGORIES.CDN],
+ [DEPLOYMENT_PROVIDERS.ALIYUN_DCDN, "provider.aliyun.dcdn", DEPLOYMENT_CATEGORIES.CDN],
+ [DEPLOYMENT_PROVIDERS.ALIYUN_ESA, "provider.aliyun.esa", DEPLOYMENT_CATEGORIES.CDN],
+ [DEPLOYMENT_PROVIDERS.ALIYUN_CLB, "provider.aliyun.clb", DEPLOYMENT_CATEGORIES.LOADBALANCE],
+ [DEPLOYMENT_PROVIDERS.ALIYUN_ALB, "provider.aliyun.alb", DEPLOYMENT_CATEGORIES.LOADBALANCE],
+ [DEPLOYMENT_PROVIDERS.ALIYUN_NLB, "provider.aliyun.nlb", DEPLOYMENT_CATEGORIES.LOADBALANCE],
+ [DEPLOYMENT_PROVIDERS.ALIYUN_WAF, "provider.aliyun.waf", DEPLOYMENT_CATEGORIES.FIREWALL],
+ [DEPLOYMENT_PROVIDERS.ALIYUN_DDOS, "provider.aliyun.ddos", DEPLOYMENT_CATEGORIES.FIREWALL],
+ [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.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],
+ [DEPLOYMENT_PROVIDERS.TENCENTCLOUD_EO, "provider.tencentcloud.eo", DEPLOYMENT_CATEGORIES.CDN],
+ [DEPLOYMENT_PROVIDERS.TENCENTCLOUD_CLB, "provider.tencentcloud.clb", DEPLOYMENT_CATEGORIES.LOADBALANCE],
+ [DEPLOYMENT_PROVIDERS.TENCENTCLOUD_WAF, "provider.tencentcloud.waf", DEPLOYMENT_CATEGORIES.FIREWALL],
+ [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.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.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.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],
+ [DEPLOYMENT_PROVIDERS.VOLCENGINE_CLB, "provider.volcengine.clb", DEPLOYMENT_CATEGORIES.LOADBALANCE],
+ [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.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],
+ [DEPLOYMENT_PROVIDERS.JDCLOUD_VOD, "provider.jdcloud.vod", DEPLOYMENT_CATEGORIES.AV],
+ [DEPLOYMENT_PROVIDERS.QINIU_KODO, "provider.qiniu.kodo", DEPLOYMENT_CATEGORIES.STORAGE],
+ [DEPLOYMENT_PROVIDERS.QINIU_CDN, "provider.qiniu.cdn", DEPLOYMENT_CATEGORIES.CDN],
+ [DEPLOYMENT_PROVIDERS.QINIU_PILI, "provider.qiniu.pili", DEPLOYMENT_CATEGORIES.AV],
+ [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_CDNPRO, "provider.wangsu.cdnpro", DEPLOYMENT_CATEGORIES.CDN],
+ [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.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.GCORE_CDN, "provider.gcore.cdn", DEPLOYMENT_CATEGORIES.CDN],
+ [DEPLOYMENT_PROVIDERS.GOEDGE, "provider.goedge", DEPLOYMENT_CATEGORIES.CDN],
+ [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.SAFELINE, "provider.safeline", DEPLOYMENT_CATEGORIES.FIREWALL],
+ [DEPLOYMENT_PROVIDERS.PROXMOXVE, "provider.proxmoxve", DEPLOYMENT_CATEGORIES.NAS],
+ ].map(([type, name, category, builtin]) => [
type,
{
- type: type as DeployProviderType,
+ type: type as DeploymentProviderType,
name: name,
icon: accessProvidersMap.get(type.split("-")[0])!.icon,
provider: type.split("-")[0] as AccessProviderType,
- category: category as DeployCategoryType,
+ category: category as DeploymentCategoryType,
+ builtin: builtin === "builtin",
+ },
+ ])
+);
+// #endregion
+
+// #region NotificationProvider
+/*
+ 注意:如果追加新的常量值,请保持以 ASCII 排序。
+ NOTICE: If you add new constant, please keep ASCII order.
+ */
+export const NOTIFICATION_PROVIDERS = Object.freeze({
+ DINGTALKBOT: `${ACCESS_PROVIDERS.DINGTALKBOT}`,
+ EMAIL: `${ACCESS_PROVIDERS.EMAIL}`,
+ LARKBOT: `${ACCESS_PROVIDERS.LARKBOT}`,
+ MATTERMOST: `${ACCESS_PROVIDERS.MATTERMOST}`,
+ TELEGRAM: `${ACCESS_PROVIDERS.TELEGRAM}`,
+ WEBHOOK: `${ACCESS_PROVIDERS.WEBHOOK}`,
+ WECOMBOT: `${ACCESS_PROVIDERS.WECOMBOT}`,
+} as const);
+
+export type NotificationProviderType = (typeof CA_PROVIDERS)[keyof typeof CA_PROVIDERS];
+
+export type NotificationProvider = {
+ type: NotificationProviderType;
+ name: string;
+ icon: string;
+ provider: AccessProviderType;
+};
+
+export const notificationProvidersMap: Map = new Map(
+ /*
+ 注意:此处的顺序决定显示在前端的顺序。
+ NOTICE: The following order determines the order displayed at the frontend.
+ */
+ [
+ [NOTIFICATION_PROVIDERS.EMAIL],
+ [NOTIFICATION_PROVIDERS.WEBHOOK],
+ [NOTIFICATION_PROVIDERS.DINGTALKBOT],
+ [NOTIFICATION_PROVIDERS.LARKBOT],
+ [NOTIFICATION_PROVIDERS.WECOMBOT],
+ [NOTIFICATION_PROVIDERS.MATTERMOST],
+ [NOTIFICATION_PROVIDERS.TELEGRAM],
+ ].map(([type]) => [
+ type,
+ {
+ type: type as CAProviderType,
+ name: accessProvidersMap.get(type.split("-")[0])!.name,
+ icon: accessProvidersMap.get(type.split("-")[0])!.icon,
+ provider: type.split("-")[0] as AccessProviderType,
},
])
);
diff --git a/ui/src/domain/settings.ts b/ui/src/domain/settings.ts
index e34105e0..a711f543 100644
--- a/ui/src/domain/settings.ts
+++ b/ui/src/domain/settings.ts
@@ -1,6 +1,11 @@
+import { type CAProviderType } from "./provider";
+
export const SETTINGS_NAMES = Object.freeze({
EMAILS: "emails",
NOTIFY_TEMPLATES: "notifyTemplates",
+ /**
+ * @deprecated
+ */
NOTIFY_CHANNELS: "notifyChannels",
SSL_PROVIDER: "sslProvider",
PERSISTENCE: "persistence",
@@ -36,19 +41,32 @@ export const defaultNotifyTemplate: NotifyTemplate = {
// #endregion
// #region Settings: NotifyChannels
+/**
+ * @deprecated
+ */
export const NOTIFY_CHANNELS = Object.freeze({
BARK: "bark",
DINGTALK: "dingtalk",
EMAIL: "email",
+ GOTIFY: "gotify",
LARK: "lark",
+ MATTERMOST: "mattermost",
+ PUSHOVER: "pushover",
+ PUSHPLUS: "pushplus",
SERVERCHAN: "serverchan",
TELEGRAM: "telegram",
WEBHOOK: "webhook",
WECOM: "wecom",
} as const);
+/**
+ * @deprecated
+ */
export type NotifyChannels = (typeof NOTIFY_CHANNELS)[keyof typeof NOTIFY_CHANNELS];
+/**
+ * @deprecated
+ */
export type NotifyChannelsSettingsContent = {
/*
注意:如果追加新的类型,请保持以 ASCII 排序。
@@ -58,19 +76,29 @@ export type NotifyChannelsSettingsContent = {
[NOTIFY_CHANNELS.BARK]?: BarkNotifyChannelConfig;
[NOTIFY_CHANNELS.DINGTALK]?: DingTalkNotifyChannelConfig;
[NOTIFY_CHANNELS.EMAIL]?: EmailNotifyChannelConfig;
+ [NOTIFY_CHANNELS.GOTIFY]?: GotifyNotifyChannelConfig;
[NOTIFY_CHANNELS.LARK]?: LarkNotifyChannelConfig;
+ [NOTIFY_CHANNELS.MATTERMOST]?: MattermostNotifyChannelConfig;
+ [NOTIFY_CHANNELS.PUSHOVER]?: PushoverNotifyChannelConfig;
+ [NOTIFY_CHANNELS.PUSHPLUS]?: PushPlusNotifyChannelConfig;
[NOTIFY_CHANNELS.SERVERCHAN]?: ServerChanNotifyChannelConfig;
[NOTIFY_CHANNELS.TELEGRAM]?: TelegramNotifyChannelConfig;
[NOTIFY_CHANNELS.WEBHOOK]?: WebhookNotifyChannelConfig;
[NOTIFY_CHANNELS.WECOM]?: WeComNotifyChannelConfig;
};
+/**
+ * @deprecated
+ */
export type BarkNotifyChannelConfig = {
deviceKey: string;
serverUrl: string;
enabled?: boolean;
};
+/**
+ * @deprecated
+ */
export type EmailNotifyChannelConfig = {
smtpHost: string;
smtpPort: number;
@@ -82,48 +110,114 @@ export type EmailNotifyChannelConfig = {
enabled?: boolean;
};
+/**
+ * @deprecated
+ */
export type DingTalkNotifyChannelConfig = {
accessToken: string;
secret: string;
enabled?: boolean;
};
+/**
+ * @deprecated
+ */
+export type GotifyNotifyChannelConfig = {
+ url: string;
+ token: string;
+ priority: string;
+ enabled?: boolean;
+};
+
+/**
+ * @deprecated
+ */
export type LarkNotifyChannelConfig = {
webhookUrl: string;
enabled?: boolean;
};
+/**
+ * @deprecated
+ */
+export type MattermostNotifyChannelConfig = {
+ serverUrl: string;
+ channel: string;
+ username: string;
+ password: string;
+ enabled?: boolean;
+};
+
+/**
+ * @deprecated
+ */
+export type PushoverNotifyChannelConfig = {
+ token: string;
+ user: string;
+ enabled?: boolean;
+};
+
+/**
+ * @deprecated
+ */
+export type PushPlusNotifyChannelConfig = {
+ token: string;
+ enabled?: boolean;
+};
+
+/**
+ * @deprecated
+ */
export type ServerChanNotifyChannelConfig = {
url: string;
enabled?: boolean;
};
+/**
+ * @deprecated
+ */
export type TelegramNotifyChannelConfig = {
apiToken: string;
chatId: string;
enabled?: boolean;
};
+/**
+ * @deprecated
+ */
export type WebhookNotifyChannelConfig = {
url: string;
enabled?: boolean;
};
+/**
+ * @deprecated
+ */
export type WeComNotifyChannelConfig = {
webhookUrl: string;
enabled?: boolean;
};
+/**
+ * @deprecated
+ */
export type NotifyChannel = {
type: string;
name: string;
};
+/**
+ * @deprecated
+ */
export const notifyChannelsMap: Map = new Map(
[
[NOTIFY_CHANNELS.EMAIL, "common.notifier.email"],
[NOTIFY_CHANNELS.DINGTALK, "common.notifier.dingtalk"],
+ [NOTIFY_CHANNELS.GOTIFY, "common.notifier.gotify"],
[NOTIFY_CHANNELS.LARK, "common.notifier.lark"],
+ [NOTIFY_CHANNELS.MATTERMOST, "common.notifier.mattermost"],
+ [NOTIFY_CHANNELS.PUSHOVER, "common.notifier.pushover"],
+ [NOTIFY_CHANNELS.PUSHPLUS, "common.notifier.pushplus"],
[NOTIFY_CHANNELS.WECOM, "common.notifier.wecom"],
[NOTIFY_CHANNELS.TELEGRAM, "common.notifier.telegram"],
[NOTIFY_CHANNELS.SERVERCHAN, "common.notifier.serverchan"],
@@ -134,37 +228,12 @@ export const notifyChannelsMap: Map = new
// #endregion
// #region Settings: SSLProvider
-export const SSLPROVIDERS = Object.freeze({
- LETS_ENCRYPT: "letsencrypt",
- LETS_ENCRYPT_STAGING: "letsencrypt_staging",
- ZERO_SSL: "zerossl",
- GOOGLE_TRUST_SERVICES: "gts",
-} as const);
-
-export type SSLProviders = (typeof SSLPROVIDERS)[keyof typeof SSLPROVIDERS];
-
export type SSLProviderSettingsContent = {
- provider: (typeof SSLPROVIDERS)[keyof typeof SSLPROVIDERS];
+ provider: CAProviderType;
config: {
[key: string]: Record | undefined;
- [SSLPROVIDERS.LETS_ENCRYPT]?: SSLProviderLetsEncryptConfig;
- [SSLPROVIDERS.LETS_ENCRYPT_STAGING]?: SSLProviderLetsEncryptConfig;
- [SSLPROVIDERS.ZERO_SSL]?: SSLProviderZeroSSLConfig;
- [SSLPROVIDERS.GOOGLE_TRUST_SERVICES]?: SSLProviderGoogleTrustServicesConfig;
};
};
-
-export type SSLProviderLetsEncryptConfig = NonNullable;
-
-export type SSLProviderZeroSSLConfig = {
- eabKid: string;
- eabHmacKey: string;
-};
-
-export type SSLProviderGoogleTrustServicesConfig = {
- eabKid: string;
- eabHmacKey: string;
-};
// #endregion
// #region Settings: Persistence
diff --git a/ui/src/domain/version.ts b/ui/src/domain/version.ts
index b67735e5..987da071 100644
--- a/ui/src/domain/version.ts
+++ b/ui/src/domain/version.ts
@@ -1 +1 @@
-export const version = "v0.3.6";
+export const version = "v0.3.10";
diff --git a/ui/src/domain/workflow.ts b/ui/src/domain/workflow.ts
index 07841902..06226425 100644
--- a/ui/src/domain/workflow.ts
+++ b/ui/src/domain/workflow.ts
@@ -126,6 +126,9 @@ export type WorkflowNodeConfigForApply = {
provider: string;
providerAccessId: string;
providerConfig?: Record;
+ caProvider?: string;
+ caProviderAccessId?: string;
+ caProviderConfig?: Record;
keyAlgorithm: string;
nameservers?: string;
dnsPropagationTimeout?: number;
@@ -145,15 +148,21 @@ export type WorkflowNodeConfigForUpload = {
export type WorkflowNodeConfigForDeploy = {
certificate: string;
provider: string;
- providerAccessId: string;
- providerConfig: Record;
+ providerAccessId?: string;
+ providerConfig?: Record;
skipOnLastSucceeded: boolean;
};
export type WorkflowNodeConfigForNotify = {
- channel: string;
subject: string;
message: string;
+ /**
+ * @deprecated
+ */
+ channel?: string;
+ provider: string;
+ providerAccessId: string;
+ providerConfig?: Record;
};
export type WorkflowNodeConfigForBranch = never;
diff --git a/ui/src/i18n/locales/en/nls.access.json b/ui/src/i18n/locales/en/nls.access.json
index ef2f481d..be9a3508 100644
--- a/ui/src/i18n/locales/en/nls.access.json
+++ b/ui/src/i18n/locales/en/nls.access.json
@@ -14,7 +14,13 @@
"access.props.name": "Name",
"access.props.provider": "Provider",
"access.props.provider.usage.dns": "DNS provider",
- "access.props.provider.usage.host": "Host provider",
+ "access.props.provider.usage.hosting": "Hosting provider",
+ "access.props.provider.usage.ca": "Certificate authority",
+ "access.props.provider.usage.notification": "Notification channel",
+ "access.props.provider.builtin": "Built-in",
+ "access.props.usage.both_dns_hosting": "Provider",
+ "access.props.usage.ca_only": "Certificate authority",
+ "access.props.usage.notification_only": "Notification channel",
"access.props.created_at": "Created at",
"access.props.updated_at": "Updated at",
@@ -22,15 +28,17 @@
"access.form.name.placeholder": "Please enter authorization name",
"access.form.provider.label": "Provider",
"access.form.provider.placeholder": "Please select a provider",
- "access.form.provider.tooltip": "DNS provider: The provider that hosts your domain names and manages your DNS records.
Host provider: The provider that hosts your servers or cloud services for deploying certificates.
Cannot be edited after saving.",
+ "access.form.provider.tooltip": "DNS provider: The provider that hosts your domain names and manages your DNS records.
Hosting provider: The provider that hosts your servers or cloud services for deploying certificates.
Cannot be edited after saving.",
+ "access.form.certificate_authority.label": "Certificate authority",
+ "access.form.certificate_authority.placeholder": "Please select a certificate authority",
+ "access.form.notification_channel.label": "Notification channel",
+ "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_url.tooltip": "For more information, see https://docs.1panel.pro/dev_manual/api_manual/",
"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 https://docs.1panel.pro/dev_manual/api_manual/",
"access.form.1panel_allow_insecure_conns.label": "Insecure SSL/TLS connections",
- "access.form.1panel_allow_insecure_conns.tooltip": "Allowing insecure connections may lead to data leak or tampering. Use this option only when under trusted networks.",
"access.form.1panel_allow_insecure_conns.switch.on": "Allow",
"access.form.1panel_allow_insecure_conns.switch.off": "Disallow",
"access.form.acmehttpreq_endpoint.label": "Endpoint",
@@ -39,10 +47,10 @@
"access.form.acmehttpreq_mode.label": "Mode",
"access.form.acmehttpreq_mode.placeholder": "Please select mode",
"access.form.acmehttpreq_mode.tooltip": "For more information, see https://go-acme.github.io/lego/dns/httpreq/",
- "access.form.acmehttpreq_username.label": "HTTP Basic Auth username",
+ "access.form.acmehttpreq_username.label": "HTTP Basic Auth username (Optional)",
"access.form.acmehttpreq_username.placeholder": "Please enter HTTP Basic Auth username",
"access.form.acmehttpreq_username.tooltip": "For more information, see https://go-acme.github.io/lego/dns/httpreq/",
- "access.form.acmehttpreq_password.label": "HTTP Basic Auth password",
+ "access.form.acmehttpreq_password.label": "HTTP Basic Auth password (Optional)",
"access.form.acmehttpreq_password.placeholder": "Please enter HTTP Basic Auth password",
"access.form.acmehttpreq_password.tooltip": "For more information, see https://go-acme.github.io/lego/dns/httpreq/",
"access.form.aliyun_access_key_id.label": "Aliyun AccessKeyId",
@@ -75,6 +83,9 @@
"access.form.baiducloud_secret_access_key.label": "Baidu Cloud SecretAccessKey",
"access.form.baiducloud_secret_access_key.placeholder": "Please enter Baidu Cloud SecretAccessKey",
"access.form.baiducloud_secret_access_key.tooltip": "For more information, see https://intl.cloud.baidu.com/doc/Reference/s/jjwvz2e3p-en",
+ "access.form.bunny_api_key.label": "Bunny API key",
+ "access.form.bunny_api_key.placeholder": "Please enter Bunny API key",
+ "access.form.bunny_api_key.tooltip": "For more information, see https://docs.bunny.net/reference/bunnynet-api-overview",
"access.form.upyun_username.label": "UPYUN subaccount username",
"access.form.upyun_username.placeholder": "Please enter UPYUN subaccount username",
"access.form.upyun_username.tooltip": "For more information, see https://console.upyun.com/account/subaccount/",
@@ -85,12 +96,10 @@
"access.form.baishan_api_token.placeholder": "Please enter Baishan Cloud API token",
"access.form.baotapanel_api_url.label": "aaPanel URL",
"access.form.baotapanel_api_url.placeholder": "Please enter aaPanel URL",
- "access.form.baotapanel_api_url.tooltip": "For more information, see https://www.bt.cn/bbs/thread-20376-1-1.html",
"access.form.baotapanel_api_key.label": "aaPanel API key",
"access.form.baotapanel_api_key.placeholder": "Please enter aaPanel API key",
"access.form.baotapanel_api_key.tooltip": "For more information, see https://www.bt.cn/bbs/thread-20376-1-1.html",
"access.form.baotapanel_allow_insecure_conns.label": "Insecure SSL/TLS connections",
- "access.form.baotapanel_allow_insecure_conns.tooltip": "Allowing insecure connections may lead to data leak or tampering. Use this option only when under trusted networks.",
"access.form.baotapanel_allow_insecure_conns.switch.on": "Allow",
"access.form.baotapanel_allow_insecure_conns.switch.off": "Disallow",
"access.form.byteplus_access_key.label": "BytePlus AccessKey",
@@ -104,16 +113,21 @@
"access.form.cachefly_api_token.tooltip": "For more information, see https://kb.cachefly.com/kb/guide/en/generating-tokens-and-keys-Oll9Irt5TI/Steps/2460228",
"access.form.cdnfly_api_url.label": "Cdnfly API URL",
"access.form.cdnfly_api_url.placeholder": "Please enter Cdnfly API URL",
- "access.form.cdnfly_api_url.tooltip": "For more information, see https://doc.cdnfly.cn/anzhuangshuoming.html",
"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 https://doc.cdnfly.cn/shiyongjieshao.html",
"access.form.cdnfly_api_secret.label": "Cdnfly user API secret",
"access.form.cdnfly_api_secret.placeholder": "Please enter Cdnfly user API secret",
"access.form.cdnfly_api_secret.tooltip": "For more information, see https://doc.cdnfly.cn/shiyongjieshao.html",
- "access.form.cloudflare_dns_api_token.label": "Cloudflare API token",
- "access.form.cloudflare_dns_api_token.placeholder": "Please enter Cloudflare API token",
+ "access.form.cdnfly_allow_insecure_conns.label": "Insecure SSL/TLS connections",
+ "access.form.cdnfly_allow_insecure_conns.switch.on": "Allow",
+ "access.form.cdnfly_allow_insecure_conns.switch.off": "Disallow",
+ "access.form.cloudflare_dns_api_token.label": "Cloudflare DNS API token",
+ "access.form.cloudflare_dns_api_token.placeholder": "Please enter Cloudflare DNS API token",
"access.form.cloudflare_dns_api_token.tooltip": "For more information, see https://developers.cloudflare.com/fundamentals/api/get-started/create-token/",
+ "access.form.cloudflare_zone_api_token.label": "Cloudflare Zone API token (Optional)",
+ "access.form.cloudflare_zone_api_token.placeholder": "Please enter Cloudflare Zone API token",
+ "access.form.cloudflare_zone_api_token.tooltip": "For more information, see https://developers.cloudflare.com/fundamentals/api/get-started/create-token/
Only required when you scope the DNS API token to specific zones. PLease scope the Zone API token to all zones with Zone/Zone/Read permission.",
"access.form.cloudns_auth_id.label": "ClouDNS API user ID",
"access.form.cloudns_auth_id.placeholder": "Please enter ClouDNS API user ID",
"access.form.cloudns_auth_id.tooltip": "For more information, see https://www.cloudns.net/wiki/article/42/",
@@ -129,6 +143,12 @@
"access.form.desec_token.label": "deSEC token",
"access.form.desec_token.placeholder": "Please enter deSEC token",
"access.form.desec_token.tooltip": "For more information, see https://desec.readthedocs.io/en/latest/auth/tokens.html",
+ "access.form.dingtalkbot_webhook_url.label": "DingTalk bot Webhook URL",
+ "access.form.dingtalkbot_webhook_url.placeholder": "Please enter DingTalk bot Webhook URL",
+ "access.form.dingtalkbot_webhook_url.tooltip": "For more information, see https://open.dingtalk.com/document/orgapp/obtain-the-webhook-address-of-a-custom-robot",
+ "access.form.dingtalkbot_secret.label": "DingTalk bot secret",
+ "access.form.dingtalkbot_secret.placeholder": "Please enter DingTalk bot secret",
+ "access.form.dingtalkbot_secret.tooltip": "For more information, see https://open.dingtalk.com/document/orgapp/customize-robot-security-settings",
"access.form.dnsla_api_id.label": "DNS.LA API ID",
"access.form.dnsla_api_id.placeholder": "Please enter DNS.LA API ID",
"access.form.dnsla_api_id.tooltip": "For more information, see https://www.dns.la/docs/ApiDoc",
@@ -150,6 +170,19 @@
"access.form.edgio_client_secret.label": "Edgio ClientSecret",
"access.form.edgio_client_secret.placeholder": "Please enter Edgio ClientSecret",
"access.form.edgio_client_secret.tooltip": "For more information, see https://docs.edg.io/applications/v7/rest_api/authentication#administering-api-clients",
+ "access.form.email_smtp_host.label": "SMTP host",
+ "access.form.email_smtp_host.placeholder": "Please enter SMTP host",
+ "access.form.email_smtp_port.label": "SMTP port",
+ "access.form.email_smtp_port.placeholder": "Please enter SMTP port",
+ "access.form.email_smtp_tls.label": "Use SSL/TLS",
+ "access.form.email_username.label": "Username",
+ "access.form.email_username.placeholder": "please enter username",
+ "access.form.email_password.label": "Password",
+ "access.form.email_password.placeholder": "please enter password",
+ "access.form.email_default_sender_address.label": "Default sender email address (Optional)",
+ "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.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 https://api.gcore.com/docs/iam#section/Authentication",
@@ -165,6 +198,23 @@
"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 https://developer.godaddy.com/",
+ "access.form.goedge_api_url.label": "GoEdge API URL",
+ "access.form.goedge_api_url.placeholder": "Please enter GoEdge API URL",
+ "access.form.goedge_access_key_id.label": "GoEdge user AccessKeyId",
+ "access.form.goedge_access_key_id.placeholder": "Please enter GoEdge user AccessKeyId",
+ "access.form.goedge_access_key_id.tooltip": "For more information, see https://goedge.cloud/docs/API/Auth.md",
+ "access.form.goedge_access_key.label": "GoEdge user AccessKey",
+ "access.form.goedge_access_key.placeholder": "Please enter GoEdge user AccessKey",
+ "access.form.goedge_access_key.tooltip": "For more information, see https://goedge.cloud/docs/API/Auth.md",
+ "access.form.goedge_allow_insecure_conns.label": "Insecure SSL/TLS connections",
+ "access.form.goedge_allow_insecure_conns.switch.on": "Allow",
+ "access.form.goedge_allow_insecure_conns.switch.off": "Disallow",
+ "access.form.googletrustservices_eab_kid.label": "ACME EAB KID",
+ "access.form.googletrustservices_eab_kid.placeholder": "Please enter ACME EAB KID",
+ "access.form.googletrustservices_eab_kid.tooltip": "For more information, see https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
+ "access.form.googletrustservices_eab_hmac_key.label": "ACME EAB HMAC key",
+ "access.form.googletrustservices_eab_hmac_key.placeholder": "Please enter ACME EAB HMAC key",
+ "access.form.googletrustservices_eab_hmac_key.tooltip": "For more information, see https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
"access.form.huaweicloud_access_key_id.label": "Huawei Cloud AccessKeyId",
"access.form.huaweicloud_access_key_id.placeholder": "Please enter Huawei Cloud AccessKeyId",
"access.form.huaweicloud_access_key_id.tooltip": "For more information, see https://support.huaweicloud.com/intl/en-us/usermanual-ca/ca_01_0003.html",
@@ -181,6 +231,18 @@
"access.form.k8s_kubeconfig.placeholder": "Please enter KubeConfig file",
"access.form.k8s_kubeconfig.upload": "Choose File ...",
"access.form.k8s_kubeconfig.tooltip": "For more information, see https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
Leave it blank to use the Pod's ServiceAccount.",
+ "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 https://www.feishu.cn/hc/en-US/articles/807992406756",
+ "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",
+ "access.form.mattermost_username.placeholder": "Please enter Mattermost username",
+ "access.form.mattermost_password.label": "Mattermost password",
+ "access.form.mattermost_password.placeholder": "Please enter Mattermost password",
+ "access.form.mattermost_default_channel_id.label": "Default Mattermost channel ID (Optional)",
+ "access.form.mattermost_default_channel_id.placeholder": "Please enter default Mattermost channel ID",
+ "access.form.mattermost_default_channel_id.tooltip": "How to get the channel ID? Select the target channel from the left sidebar, click on the channel name at the top, and choose ”Channel Details.” You can directly see the channel ID on the pop-up page.",
"access.form.namecheap_username.label": "Namecheap username",
"access.form.namecheap_username.placeholder": "Please enter Namecheap username",
"access.form.namecheap_username.tooltip": "For more information, see https://www.namecheap.com/support/api/intro/",
@@ -207,10 +269,23 @@
"access.form.porkbun_secret_api_key.tooltip": "For more information, see https://porkbun.com/api/json/v3/documentation",
"access.form.powerdns_api_url.label": "PowerDNS API URL",
"access.form.powerdns_api_url.placeholder": "Please enter PowerDNS API URL",
- "access.form.powerdns_api_url.tooltip": "For more information, see https://doc.powerdns.com/authoritative/http-api/index.html#endpoints-and-objects-in-the-api",
"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 https://doc.powerdns.com/authoritative/http-api/index.html#enabling-the-api",
+ "access.form.powerdns_allow_insecure_conns.label": "Insecure SSL/TLS connections",
+ "access.form.powerdns_allow_insecure_conns.switch.on": "Allow",
+ "access.form.powerdns_allow_insecure_conns.switch.off": "Disallow",
+ "access.form.proxmoxve_api_url.label": "Proxmox VE URL",
+ "access.form.proxmoxve_api_url.placeholder": "Please enter Proxmox VE URL",
+ "access.form.proxmoxve_api_token.label": "Proxmox VE API token",
+ "access.form.proxmoxve_api_token.placeholder": "Please enter Proxmox VE API token",
+ "access.form.proxmoxve_api_token.tooltip": "For more information, see https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pveum_tokens",
+ "access.form.proxmoxve_api_token_secret.label": "Proxmox VE API token secret (Optional)",
+ "access.form.proxmoxve_api_token_secret.placeholder": "Please enter Proxmox VE API token secret",
+ "access.form.proxmoxve_api_token_secret.tooltip": "For more information, see https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pveum_tokens",
+ "access.form.proxmoxve_allow_insecure_conns.label": "Insecure SSL/TLS connections",
+ "access.form.proxmoxve_allow_insecure_conns.switch.on": "Allow",
+ "access.form.proxmoxve_allow_insecure_conns.switch.off": "Disallow",
"access.form.qiniu_access_key.label": "Qiniu AccessKey",
"access.form.qiniu_access_key.placeholder": "Please enter Qiniu AccessKey",
"access.form.qiniu_access_key.tooltip": "For more information, see https://portal.qiniu.com/",
@@ -219,15 +294,13 @@
"access.form.qiniu_secret_key.tooltip": "For more information, see https://portal.qiniu.com/",
"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 https://www.rainyun.com/docs/account/racc/setting",
+ "access.form.rainyun_api_key.tooltip": "For more information, see https://app.rainyun.com/account/settings/api-key",
"access.form.safeline_api_url.label": "SafeLine URL",
"access.form.safeline_api_url.placeholder": "Please enter SafeLine URL",
- "access.form.safeline_api_url.tooltip": "For more information, see https://docs.waf.chaitin.com/en/tutorials/install",
"access.form.safeline_api_token.label": "SafeLine API token",
"access.form.safeline_api_token.placeholder": "Please enter SafeLine API token",
"access.form.safeline_api_token.tooltip": "For more information, see https://docs.waf.chaitin.com/en/reference/articles/openapi",
"access.form.safeline_allow_insecure_conns.label": "Insecure SSL/TLS connections",
- "access.form.safeline_allow_insecure_conns.tooltip": "Allowing insecure connections may lead to data leak or tampering. Use this option only when under trusted networks.",
"access.form.safeline_allow_insecure_conns.switch.on": "Allow",
"access.form.safeline_allow_insecure_conns.switch.off": "Disallow",
"access.form.ssh_host.label": "Server host",
@@ -236,16 +309,28 @@
"access.form.ssh_port.placeholder": "Please enter server port",
"access.form.ssh_username.label": "Username",
"access.form.ssh_username.placeholder": "Please enter username",
- "access.form.ssh_password.label": "Password",
+ "access.form.ssh_password.label": "Password (Optional)",
"access.form.ssh_password.placeholder": "Please enter password",
"access.form.ssh_password.tooltip": "Required when using password to connect to SSH.",
- "access.form.ssh_key.label": "SSH key",
+ "access.form.ssh_key.label": "SSH key (Optional)",
"access.form.ssh_key.placeholder": "Please enter SSH key",
"access.form.ssh_key.upload": "Choose file ...",
"access.form.ssh_key.tooltip": "Required when using key to connect to SSH.",
- "access.form.ssh_key_passphrase.label": "SSH key passphrase",
+ "access.form.ssh_key_passphrase.label": "SSH key passphrase (Optional)",
"access.form.ssh_key_passphrase.placeholder": "Please enter SSH key passphrase",
"access.form.ssh_key_passphrase.tooltip": "Optional when using key to connect to SSH.",
+ "access.form.sslcom_eab_kid.label": "ACME EAB KID",
+ "access.form.sslcom_eab_kid.placeholder": "Please enter ACME EAB KID",
+ "access.form.sslcom_eab_kid.tooltip": "For more information, see https://www.ssl.com/how-to/generate-acme-credentials-for-reseller-customers/",
+ "access.form.sslcom_eab_hmac_key.label": "ACME EAB HMAC key",
+ "access.form.sslcom_eab_hmac_key.placeholder": "Please enter ACME EAB HMAC key",
+ "access.form.sslcom_eab_hmac_key.tooltip": "For more information, see https://www.ssl.com/how-to/generate-acme-credentials-for-reseller-customers/",
+ "access.form.telegram_bot_token.label": "Telegram bot token",
+ "access.form.telegram_bot_token.placeholder": "Please enter Telegram bot token",
+ "access.form.telegram_bot_token.tooltip": "How to get the bot token? Please refer to https://gist.github.com/nafiesl/4ad622f344cd1dc3bb1ecbe468ff9f8a",
+ "access.form.telegram_default_chat_id.label": "Default Telegram chat ID (Optional)",
+ "access.form.telegram_default_chat_id.placeholder": "Please enter default Telegram chat ID",
+ "access.form.telegram_default_chat_id.tooltip": "How to get the chat ID? Please refer to https://gist.github.com/nafiesl/4ad622f344cd1dc3bb1ecbe468ff9f8a",
"access.form.tencentcloud_secret_id.label": "Tencent Cloud SecretId",
"access.form.tencentcloud_secret_id.placeholder": "Please enter Tencent Cloud SecretId",
"access.form.tencentcloud_secret_id.tooltip": "For more information, see https://cloud.tencent.com/document/product/598/40488?lang=en",
@@ -273,16 +358,54 @@
"access.form.volcengine_secret_access_key.label": "VolcEngine SecretAccessKey",
"access.form.volcengine_secret_access_key.placeholder": "Please enter VolcEngine SecretAccessKey",
"access.form.volcengine_secret_access_key.tooltip": "For more information, see https://www.volcengine.com/docs/6291/216571",
+ "access.form.wangsu_access_key_id.label": "Wangsu Cloud AccessKeyId",
+ "access.form.wangsu_access_key_id.placeholder": "Please enter Wangsu Cloud AccessKeyId",
+ "access.form.wangsu_access_key_id.tooltip": "For more information, see https://en.wangsu.com/document/account-manage/15775",
+ "access.form.wangsu_access_key_secret.label": "Wangsu Cloud AccessKeySecret",
+ "access.form.wangsu_access_key_secret.placeholder": "Please enter Wangsu Cloud AccessKeySecret",
+ "access.form.wangsu_access_key_secret.tooltip": "For more information, see https://en.wangsu.com/document/account-manage/15775",
+ "access.form.wangsu_api_key.label": "Wangsu Cloud API key",
+ "access.form.wangsu_api_key.placeholder": "Please enter Wangsu Cloud API key",
+ "access.form.wangsu_api_key.tooltip": "For more information, see https://en.wangsu.com/document/account-manage/15776",
"access.form.webhook_url.label": "Webhook URL",
"access.form.webhook_url.placeholder": "Please enter Webhook URL",
+ "access.form.webhook_method.label": "Webhook request method",
+ "access.form.webhook_method.placeholder": "Please select Webhook request method",
+ "access.form.webhook_headers.label": "Webhook request headers (Optional)",
+ "access.form.webhook_headers.placeholder": "Please enter Webhook request headers",
+ "access.form.webhook_headers.errmsg.invalid": "Please enter a valid request headers",
+ "access.form.webhook_headers.tooltip": "Format:
key1: val2
key2: val2
Example:
Content-Type: application/json
User-Agent: certimate",
+ "access.form.webhook_default_data.errmsg.json_invalid": "Please enter a valiod JSON string",
+ "access.form.webhook_default_data_for_deployment.label": "Webhook data for deployment (Optional)",
+ "access.form.webhook_default_data_for_deployment.placeholder": "Please enter Webhook data",
+ "access.form.webhook_default_data_for_deployment.guide": "Tips: The Webhook data should be in JSON format.
The values in JSON support template variables, which will be replaced by actual values when sent to the Webhook URL. Supported variables:
- ${DOMAIN}: The primary domain of the certificate (CommonName).
- ${DOMAINS}: The domain list of the certificate (SubjectAltNames).
- ${CERTIFICATE}: The PEM format content of the certificate file.
- ${PRIVATE_KEY}: The PEM format content of the private key file.
When the request method is GET, the data will be passed as query string. Otherwise, the data will be encoded in the format indicated by the Content-Type in the request headers. Supported formats:
- application/json (default).
- application/x-www-form-urlencoded: Nested data is not supported.
- multipart/form-data: Nested data is not supported.
",
+ "access.form.webhook_default_data_for_notification.label": "Webhook data for notification (Optional)",
+ "access.form.webhook_default_data_for_notification.placeholder": "Please enter Webhook data",
+ "access.form.webhook_default_data_for_notification.guide": "Tips: The Webhook data should be in JSON format.
The values in JSON support template variables, which will be replaced by actual values when sent to the Webhook URL. Supported variables:
- ${SUBJECT}: The subject of notification.
- ${MESSAGE}: The message of notification.
When the request method is GET, the data will be passed as query string. Otherwise, the data will be encoded in the format indicated by the Content-Type in the request headers. Supported formats:
- application/json (default).
- application/x-www-form-urlencoded: Nested data is not supported.
- multipart/form-data: Nested data is not supported.
",
+ "access.form.webhook_preset_data.button": "Use preset template",
+ "access.form.webhook_preset_data.option.bark.label": "Bark",
+ "access.form.webhook_preset_data.option.gotify.label": "Gotify",
+ "access.form.webhook_preset_data.option.ntfy.label": "ntfy",
+ "access.form.webhook_preset_data.option.pushover.label": "Pushover",
+ "access.form.webhook_preset_data.option.pushplus.label": "PushPlus",
+ "access.form.webhook_preset_data.option.serverchan.label": "ServerChan",
+ "access.form.webhook_preset_data.option.common.label": "General template",
"access.form.webhook_allow_insecure_conns.label": "Insecure SSL/TLS connections",
- "access.form.webhook_allow_insecure_conns.tooltip": "Allowing insecure connections may lead to data leak or tampering. Use this option only when under trusted networks.",
"access.form.webhook_allow_insecure_conns.switch.on": "Allow",
"access.form.webhook_allow_insecure_conns.switch.off": "Disallow",
+ "access.form.wecombot_webhook_url.label": "WeCom bot Webhook URL",
+ "access.form.wecombot_webhook_url.placeholder": "Please enter WeCom bot Webhook URL",
+ "access.form.wecombot_webhook_url.tooltip": "For more information, see https://open.work.weixin.qq.com/help2/pc/18401",
"access.form.westcn_username.label": "West.cn username",
"access.form.westcn_username.placeholder": "Please enter West.cn username",
"access.form.westcn_username.tooltip": "For more information, see https://www.west.cn/CustomerCenter/doc/apiv2.html",
"access.form.westcn_api_password.label": "West.cn API password",
"access.form.westcn_api_password.placeholder": "Please enter West.cn API password",
- "access.form.westcn_api_password.tooltip": "For more information, see https://www.west.cn/CustomerCenter/doc/apiv2.html"
+ "access.form.westcn_api_password.tooltip": "For more information, see https://www.west.cn/CustomerCenter/doc/apiv2.html",
+ "access.form.zerossl_eab_kid.label": "ACME EAB KID",
+ "access.form.zerossl_eab_kid.placeholder": "Please enter ACME EAB KID",
+ "access.form.zerossl_eab_kid.tooltip": "For more information, see https://zerossl.com/documentation/acme/",
+ "access.form.zerossl_eab_hmac_key.label": "ACME EAB HMAC key",
+ "access.form.zerossl_eab_hmac_key.placeholder": "Please enter ACME EAB HMAC key",
+ "access.form.zerossl_eab_hmac_key.tooltip": "For more information, see https://zerossl.com/documentation/acme/"
}
diff --git a/ui/src/i18n/locales/en/nls.common.json b/ui/src/i18n/locales/en/nls.common.json
index c9e671ce..0c3cd5df 100644
--- a/ui/src/i18n/locales/en/nls.common.json
+++ b/ui/src/i18n/locales/en/nls.common.json
@@ -16,6 +16,7 @@
"common.text.operation_succeeded": "Operation succeeded",
"common.text.operation_failed": "Operation failed",
"common.text.request_error": "Request error",
+ "common.text.search": "Search ...",
"common.menu.theme": "Change theme",
"common.menu.locale": "Change language",
@@ -38,7 +39,11 @@
"common.notifier.bark": "Bark",
"common.notifier.dingtalk": "DingTalk",
"common.notifier.email": "Email",
+ "common.notifier.gotify": "Gotify",
"common.notifier.lark": "Lark",
+ "common.notifier.mattermost": "Mattermost",
+ "common.notifier.pushover": "Pushover",
+ "common.notifier.pushplus": "PushPlus",
"common.notifier.serverchan": "ServerChan",
"common.notifier.telegram": "Telegram",
"common.notifier.webhook": "Webhook",
diff --git a/ui/src/i18n/locales/en/nls.provider.json b/ui/src/i18n/locales/en/nls.provider.json
index b7c3fc93..0c140684 100644
--- a/ui/src/i18n/locales/en/nls.provider.json
+++ b/ui/src/i18n/locales/en/nls.provider.json
@@ -5,11 +5,13 @@
"provider.acmehttpreq": "Http Request (ACME Proxy)",
"provider.aliyun": "Alibaba Cloud",
"provider.aliyun.alb": "Alibaba Cloud - ALB (Application Load Balancer)",
- "provider.aliyun.cas": "Alibaba Cloud - Upload to CAS (Certificate Management Service)",
+ "provider.aliyun.apigw": "Alibaba Cloud - API Gateway",
+ "provider.aliyun.cas_upload": "Alibaba Cloud - Upload to CAS (Certificate Management Service)",
"provider.aliyun.cas_deploy": "Alibaba Cloud - Deploy via CAS (Certificate Management Service)",
"provider.aliyun.cdn": "Alibaba Cloud - CDN (Content Delivery Network)",
"provider.aliyun.clb": "Alibaba Cloud - CLB (Classic Load Balancer)",
"provider.aliyun.dcdn": "Alibaba Cloud - DCDN (Dynamic Route for Content Delivery Network)",
+ "provider.aliyun.ddos": "Alibaba Cloud - Anti-DDoS Proxy",
"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)",
@@ -31,15 +33,18 @@
"provider.baiducloud.appblb": "Baidu Cloud - AppBLB (Application Baidu Load Balancer)",
"provider.baiducloud.blb": "Baidu Cloud - BLB (Baidu Load Balancer)",
"provider.baiducloud.cdn": "Baidu Cloud - CDN (Content Delivery Network)",
- "provider.baiducloud.cert": "Baidu Cloud - Upload to SSL Certificate Service",
+ "provider.baiducloud.cert_upload": "Baidu Cloud - Upload to SSL Certificate Service",
"provider.baiducloud.dns": "Baidu Cloud - DNS (Domain Name Service)",
"provider.baishan": "Baishan",
"provider.baishan.cdn": "Baishan - CDN (Content Delivery Network)",
"provider.baotapanel": "aaPanel (aka BaoTaPanel)",
"provider.baotapanel.console": "aaPanel (aka BaoTaPanel) - Console",
"provider.baotapanel.site": "aaPanel (aka BaoTaPanel) - Website",
+ "provider.bunny": "Bunny",
+ "provider.bunny.cdn": "Bunny - CDN (Content Delivery Network)",
"provider.byteplus": "BytePlus",
"provider.byteplus.cdn": "BytePlus - CDN (Content Delivery Network)",
+ "provider.buypass": "Buypass AS",
"provider.cachefly": "CacheFly",
"provider.cdnfly": "Cdnfly",
"provider.cloudflare": "Cloudflare",
@@ -48,24 +53,26 @@
"provider.ctcccloud": "China Telecom Cloud (State Cloud)",
"provider.cucccloud": "China Unicom Cloud",
"provider.desec": "deSEC",
+ "provider.dingtalkbot": "DingTalk Bot",
"provider.dnsla": "DNS.LA",
"provider.dogecloud": "Doge Cloud",
"provider.dogecloud.cdn": "Doge Cloud - CDN (Content Delivery Network)",
"provider.dynv6": "dynv6",
"provider.edgio": "Edgio",
"provider.edgio.applications": "Edgio - Applications",
+ "provider.email": "Email",
"provider.fastly": "Fastly",
"provider.gcore": "Gcore",
"provider.gcore.cdn": "Gcore - CDN (Content Delivery Network)",
"provider.gname": "GNAME",
"provider.godaddy": "GoDaddy",
"provider.goedge": "GoEdge",
- "provider.goedge.cdn": "GoEdge - CDN (Content Delivery Network)",
+ "provider.googletrustservices": "Google Trust Services",
"provider.huaweicloud": "Huawei Cloud",
"provider.huaweicloud.cdn": "Huawei Cloud - CDN (Content Delivery Network)",
"provider.huaweicloud.dns": "Huawei Cloud - DNS (Domain Name Service)",
"provider.huaweicloud.elb": "Huawei Cloud - ELB (Elastic Load Balance)",
- "provider.huaweicloud.scm": "Huawei Cloud - Upload to SCM (SSL Certificate Manager)",
+ "provider.huaweicloud.scm_upload": "Huawei Cloud - Upload to SCM (SSL Certificate Manager)",
"provider.huaweicloud.waf": "Huawei Cloud - WAF (Web Application Firewall)",
"provider.jdcloud": "JD Cloud",
"provider.jdcloud.alb": "JD Cloud - ALB (Application Load Balancer)",
@@ -75,20 +82,28 @@
"provider.jdcloud.vod": "JD Cloud - VOD (Video on Demand)",
"provider.kubernetes": "Kubernetes",
"provider.kubernetes.secret": "Kubernetes - Secret",
+ "provider.larkbot": "Lark Bot",
+ "provider.letsencrypt": "Let's Encrypt",
+ "provider.letsencryptstaging": "Let's Encrypt Staging Environment",
"provider.local": "Local deployment",
+ "provider.mattermost": "Mattermost",
"provider.namecheap": "Namecheap",
"provider.namedotcom": "Name.com",
"provider.namesilo": "NameSilo",
"provider.ns1": "NS1 (IBM NS1 Connect)",
"provider.porkbun": "Porkbun",
"provider.powerdns": "PowerDNS",
+ "provider.proxmoxve": "Proxmox VE",
"provider.qiniu": "Qiniu",
"provider.qiniu.cdn": "Qiniu - CDN (Content Delivery Network)",
"provider.qiniu.kodo": "Qiniu - Kodo",
"provider.qiniu.pili": "Qiniu - Pili",
"provider.rainyun": "Rain Yun",
+ "provider.rainyun.rcdn": "Rain Yun - RCDN (Rain Content Delivery Network)",
"provider.safeline": "SafeLine",
"provider.ssh": "SSH deployment",
+ "provider.sslcom": "SSL.com",
+ "provider.telegram": "Telegram",
"provider.tencentcloud": "Tencent Cloud",
"provider.tencentcloud.cdn": "Tencent Cloud - CDN (Content Delivery Network)",
"provider.tencentcloud.clb": "Tencent Cloud - CLB (Cloud Load Balancer)",
@@ -98,7 +113,7 @@
"provider.tencentcloud.ecdn": "Tencent Cloud - ECDN (Enterprise Content Delivery Network)",
"provider.tencentcloud.eo": "Tencent Cloud - EdgeOne",
"provider.tencentcloud.scf": "Tencent Cloud - SCF (Serverless Cloud Function)",
- "provider.tencentcloud.ssl": "Tencent Cloud - Upload to SSL Certificate Service",
+ "provider.tencentcloud.ssl_upload": "Tencent Cloud - Upload to SSL Certificate Service",
"provider.tencentcloud.ssl_deploy": "Tencent Cloud - Deploy via SSL Certificate Service",
"provider.tencentcloud.vod": "Tencent Cloud - VOD (Video on Demand)",
"provider.tencentcloud.waf": "Tencent Cloud - WAF (Web Application Firewall)",
@@ -107,20 +122,24 @@
"provider.ucloud.us3": "UCloud - US3 (UCloud Object-based Storage)",
"provider.upyun": "UPYUN",
"provider.upyun.cdn": "UPYUN - CDN (Content Delivery Network)",
- "provider.upyun.file": "UPYUN - File Storage",
+ "provider.upyun.file": "UPYUN - USS (Storage Service)",
"provider.vercel": "Vercel",
"provider.volcengine": "Volcengine",
"provider.volcengine.alb": "Volcengine - ALB (Application Load Balancer)",
"provider.volcengine.cdn": "Volcengine - CDN (Content Delivery Network)",
- "provider.volcengine.certcenter": "Volcengine - Upload to Certificate Center",
+ "provider.volcengine.certcenter_upload": "Volcengine - Upload to Certificate Center",
"provider.volcengine.clb": "Volcengine - CLB (Cloud Load Balancer)",
"provider.volcengine.dcdn": "Volcengine - DCDN (Dynamic Content Delivery Network)",
"provider.volcengine.dns": "Volcengine - DNS (Domain Name Service)",
"provider.volcengine.imagex": "Volcengine - ImageX",
"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.webhook": "Webhook",
+ "provider.wecombot": "WeCom Bot",
"provider.westcn": "West.cn",
+ "provider.zerossl": "ZeroSSL",
"provider.category.all": "All",
"provider.category.cdn": "CDN",
@@ -130,5 +149,8 @@
"provider.category.av": "Audio/Video",
"provider.category.serverless": "Serverless",
"provider.category.website": "Website",
- "provider.category.other": "Other"
+ "provider.category.nas": "NAS",
+ "provider.category.other": "Other",
+
+ "provider.default_ca_provider.label": "(Default) Follow global settings"
}
diff --git a/ui/src/i18n/locales/en/nls.settings.json b/ui/src/i18n/locales/en/nls.settings.json
index 74e869bd..ee97efd7 100644
--- a/ui/src/i18n/locales/en/nls.settings.json
+++ b/ui/src/i18n/locales/en/nls.settings.json
@@ -53,9 +53,38 @@
"settings.notification.channel.form.email_sender_address.placeholder": "Please enter sender email address",
"settings.notification.channel.form.email_receiver_address.label": "Receiver email address",
"settings.notification.channel.form.email_receiver_address.placeholder": "Please enter receiver email address",
+ "settings.notification.channel.form.gotify_url.label": "Service URL",
+ "settings.notification.channel.form.gotify_url.placeholder": "Please enter Service URL",
+ "settings.notification.channel.form.gotify_url.tooltip": "For more information, see https://gotify.net/docs/pushmsg
Example: https://gotify.exmaple.com, the trailing '/' should not be included.",
+ "settings.notification.channel.form.gotify_token.label": "Application token",
+ "settings.notification.channel.form.gotify_token.placeholder": "Please enter Application token",
+ "settings.notification.channel.form.gotify_token.tooltip": "For more information, see https://gotify.net/docs/pushmsg",
+ "settings.notification.channel.form.gotify_priority.placeholder": "Please enter message priority",
+ "settings.notification.channel.form.gotify_priority.label": "Message priority",
+ "settings.notification.channel.form.gotify_priority.tooltip": "For more information, see https://gotify.net/docs/pushmsg, https://github.com/gotify/android/issues/18#issuecomment-437403888",
+ "settings.notification.channel.form.gotify_priority.error.gte0": "Message Priority must be greater than or equal to 0.",
"settings.notification.channel.form.lark_webhook_url.label": "Webhook URL",
"settings.notification.channel.form.lark_webhook_url.placeholder": "Please enter Webhook URL",
"settings.notification.channel.form.lark_webhook_url.tooltip": "For more information, see https://www.feishu.cn/hc/en-US/articles/807992406756",
+ "settings.notification.channel.form.mattermost_server_url.label": "Service URL",
+ "settings.notification.channel.form.mattermost_server_url.placeholder": "Please enter service URL",
+ "settings.notification.channel.form.mattermost_server_url.tooltip": "Example: https://exmaple.com, the protocol needs to be included but the trailing '/' should not be included.",
+ "settings.notification.channel.form.mattermost_channel_id.label": "Channel ID",
+ "settings.notification.channel.form.mattermost_channel_id.placeholder": "Please enter channel ID",
+ "settings.notification.channel.form.mattermost_channel_id.tooltip": "How to get the channel ID? Select the target channel from the left sidebar, click on the channel name at the top, and choose ”Channel Details.” You can directly see the channel ID on the pop-up page.",
+ "settings.notification.channel.form.mattermost_username.label": "Username",
+ "settings.notification.channel.form.mattermost_username.placeholder": "Please enter username",
+ "settings.notification.channel.form.mattermost_password.label": "Password",
+ "settings.notification.channel.form.mattermost_password.placeholder": "Please enter password",
+ "settings.notification.channel.form.pushover_token.placeholder": "Please enter Application API Token",
+ "settings.notification.channel.form.pushover_token.label": "Application API Token",
+ "settings.notification.channel.form.pushover_token.tooltip": "For more information, see https://pushover.net/api#registration",
+ "settings.notification.channel.form.pushover_user.placeholder": "Please enter User/Group Key",
+ "settings.notification.channel.form.pushover_user.label": "User/Group Key",
+ "settings.notification.channel.form.pushover_user.tooltip": "For more information, see https://pushover.net/api#identifiers",
+ "settings.notification.channel.form.pushplus_token.label": "Token",
+ "settings.notification.channel.form.pushplus_token.placeholder": "Please enter token",
+ "settings.notification.channel.form.pushplus_token.tooltip": "For more information, see https://www.pushplus.plus/push1.html",
"settings.notification.channel.form.serverchan_url.label": "Server URL",
"settings.notification.channel.form.serverchan_url.placeholder": "Please enter ServerChan server URL (e.g. https://sctapi.ftqq.com/*****.send)",
"settings.notification.channel.form.serverchan_url.tooltip": "For more information, see https://sct.ftqq.com/forward",
@@ -72,25 +101,27 @@
"settings.notification.channel.form.wecom_webhook_url.tooltip": "For more information, see https://open.work.weixin.qq.com/help2/pc/18401",
"settings.sslprovider.tab": "Certificate authority",
- "settings.sslprovider.form.provider.label": "ACME provider",
- "settings.sslprovider.form.provider.option.letsencrypt.label": "Let's Encrypt",
- "settings.sslprovider.form.provider.option.letsencrypt_staging.label": "Let's Encrypt Staging Environment",
- "settings.sslprovider.form.provider.option.zerossl.label": "ZeroSSL",
- "settings.sslprovider.form.provider.option.gts.label": "Google Trust Services",
+ "settings.sslprovider.form.provider.label": "ACME provider (system-wide)",
"settings.sslprovider.form.provider.alert": "Attention: The certificate validity lifetime, certificate algorithm, domain names count, and support for wildcard domain names are allowed may vary among different providers. After switching service providers, please check whether the configuration of the workflows needs to be adjusted.",
- "settings.sslprovider.form.letsencrypt_staging_alert": "The staging environment can reduce the chance of your running up against rate limits.
Learn more:
https://letsencrypt.org/docs/staging-environment/",
+ "settings.sslprovider.form.letsencryptstaging_alert": "The staging environment can reduce the chance of your running up against rate limits.
Learn more:
https://letsencrypt.org/docs/staging-environment/",
"settings.sslprovider.form.zerossl_eab_kid.label": "EAB KID",
"settings.sslprovider.form.zerossl_eab_kid.placeholder": "Please enter EAB KID",
"settings.sslprovider.form.zerossl_eab_kid.tooltip": "For more information, see https://zerossl.com/documentation/acme/",
- "settings.sslprovider.form.zerossl_eab_hmac_key.label": "EAB HMAC Key",
- "settings.sslprovider.form.zerossl_eab_hmac_key.placeholder": "Please enter EAB HMAC Key",
+ "settings.sslprovider.form.zerossl_eab_hmac_key.label": "EAB HMAC key",
+ "settings.sslprovider.form.zerossl_eab_hmac_key.placeholder": "Please enter EAB HMAC key",
"settings.sslprovider.form.zerossl_eab_hmac_key.tooltip": "For more information, see https://zerossl.com/documentation/acme/",
- "settings.sslprovider.form.gts_eab_kid.label": "EAB KID",
- "settings.sslprovider.form.gts_eab_kid.placeholder": "Please enter EAB KID",
- "settings.sslprovider.form.gts_eab_kid.tooltip": "For more information, see https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
- "settings.sslprovider.form.gts_eab_hmac_key.label": "EAB HMAC Key",
- "settings.sslprovider.form.gts_eab_hmac_key.placeholder": "Please enter EAB HMAC Key",
- "settings.sslprovider.form.gts_eab_hmac_key.tooltip": "For more information, see https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
+ "settings.sslprovider.form.googletrustservices_eab_kid.label": "EAB KID",
+ "settings.sslprovider.form.googletrustservices_eab_kid.placeholder": "Please enter EAB KID",
+ "settings.sslprovider.form.googletrustservices_eab_kid.tooltip": "For more information, see https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
+ "settings.sslprovider.form.googletrustservices_eab_hmac_key.label": "EAB HMAC key",
+ "settings.sslprovider.form.googletrustservices_eab_hmac_key.placeholder": "Please enter EAB HMAC key",
+ "settings.sslprovider.form.googletrustservices_eab_hmac_key.tooltip": "For more information, see https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
+ "settings.sslprovider.form.sslcom_eab_kid.label": "EAB KID",
+ "settings.sslprovider.form.sslcom_eab_kid.placeholder": "Please enter EAB KID",
+ "settings.sslprovider.form.sslcom_eab_kid.tooltip": "For more information, see https://www.ssl.com/how-to/generate-acme-credentials-for-reseller-customers/",
+ "settings.sslprovider.form.sslcom_eab_hmac_key.label": "EAB HMAC key",
+ "settings.sslprovider.form.sslcom_eab_hmac_key.placeholder": "Please enter EAB HMAC key",
+ "settings.sslprovider.form.sslcom_eab_hmac_key.tooltip": "For more information, see https://www.ssl.com/how-to/generate-acme-credentials-for-reseller-customers/",
"settings.persistence.tab": "Persistence",
"settings.persistence.form.workflow_runs_max_days.label": "Max days retention of workflow history runs",
diff --git a/ui/src/i18n/locales/en/nls.workflow.nodes.json b/ui/src/i18n/locales/en/nls.workflow.nodes.json
index d3eec6b0..da776fc9 100644
--- a/ui/src/i18n/locales/en/nls.workflow.nodes.json
+++ b/ui/src/i18n/locales/en/nls.workflow.nodes.json
@@ -39,6 +39,9 @@
"workflow_node.apply.form.provider_access.placeholder": "Please select an authorization of DNS provider",
"workflow_node.apply.form.provider_access.tooltip": "Used to manage DNS records during ACME DNS-01 challenge.",
"workflow_node.apply.form.provider_access.button": "Create",
+ "workflow_node.apply.form.aliyun_esa_region.label": "Alibaba Cloud ESA region",
+ "workflow_node.apply.form.aliyun_esa_region.placeholder": "Please enter Alibaba Cloud ESA region (e.g. cn-hangzhou)",
+ "workflow_node.apply.form.aliyun_esa_region.tooltip": "For more information, see https://www.alibabacloud.com/help/en/edge-security-acceleration/esa/api-esa-2024-09-10-endpoint",
"workflow_node.apply.form.aws_route53_region.label": "AWS Route53 Region",
"workflow_node.apply.form.aws_route53_region.placeholder": "Please enter AWS Route53 region (e.g. us-east-1)",
"workflow_node.apply.form.aws_route53_region.tooltip": "For more information, see https://docs.aws.amazon.com/en_us/general/latest/gr/rande.html#regional-endpoints",
@@ -54,30 +57,42 @@
"workflow_node.apply.form.tencentcloud_eo_zone_id.label": "Tencent Cloud EdgeOne zone ID",
"workflow_node.apply.form.tencentcloud_eo_zone_id.placeholder": "Please enter Tencent Cloud EdgeOne zone ID",
"workflow_node.apply.form.tencentcloud_eo_zone_id.tooltip": "For more information, see https://console.tencentcloud.com/edgeone",
- "workflow_node.apply.form.advanced_config.label": "Advanced settings",
+ "workflow_node.apply.form.certificate_config.label": "Certificate settings",
+ "workflow_node.apply.form.ca_provider.label": "Certificate authority (Optional)",
+ "workflow_node.apply.form.ca_provider.placeholder": "Please select a certificate authority",
+ "workflow_node.apply.form.ca_provider.tooltip": "Used to issue SSL certificates.",
+ "workflow_node.apply.form.ca_provider.button": "Configure",
+ "workflow_node.apply.form.ca_provider_access.label": "Certificate authority authorization",
+ "workflow_node.apply.form.ca_provider_access.placeholder": "Please select an authorization of the certificate authority",
+ "workflow_node.apply.form.ca_provider_access.button": "Create",
"workflow_node.apply.form.key_algorithm.label": "Certificate key algorithm",
"workflow_node.apply.form.key_algorithm.placeholder": "Please select certificate key algorithm",
+ "workflow_node.apply.form.advanced_config.label": "Advanced settings",
"workflow_node.apply.form.nameservers.label": "DNS recursive nameservers (Optional)",
"workflow_node.apply.form.nameservers.placeholder": "Please enter DNS recursive nameservers (separated by semicolons)",
"workflow_node.apply.form.nameservers.tooltip": "It determines whether to custom DNS recursive nameservers during ACME DNS-01 challenge. If you don't understand this option, just keep it by default. Learn more.",
"workflow_node.apply.form.nameservers.multiple_input_modal.title": "Change DNS rcursive nameservers",
"workflow_node.apply.form.nameservers.multiple_input_modal.placeholder": "Please enter DNS recursive nameserver",
- "workflow_node.apply.form.dns_propagation_timeout.label": "DNS propagation timeout (Optional)",
- "workflow_node.apply.form.dns_propagation_timeout.placeholder": "Please enter DNS propagation timeout",
+ "workflow_node.apply.form.dns_propagation_wait.label": "DNS propagation waiting time (Optional)",
+ "workflow_node.apply.form.dns_propagation_wait.placeholder": "Please enter DNS propagation waiting time",
+ "workflow_node.apply.form.dns_propagation_wait.unit": "seconds",
+ "workflow_node.apply.form.dns_propagation_wait.tooltip": "It determines the waiting time for DNS propagation during ACME DNS-01 challenge. If you don't understand this option, just keep it by default.",
+ "workflow_node.apply.form.dns_propagation_timeout.label": "DNS propagation checks timeout (Optional)",
+ "workflow_node.apply.form.dns_propagation_timeout.placeholder": "Please enter DNS propagation checks timeout",
"workflow_node.apply.form.dns_propagation_timeout.unit": "seconds",
- "workflow_node.apply.form.dns_propagation_timeout.tooltip": "It determines the maximum waiting time for DNS propagation checks during ACME DNS-01 challenge. If you don't understand this option, just keep it by default.
Leave it blank to use the default value provided by the provider.",
+ "workflow_node.apply.form.dns_propagation_timeout.tooltip": "It determines the timeout for DNS propagation checks during ACME DNS-01 challenge. If you don't understand this option, just keep it by default.
Leave it blank to use the default value provided by the provider.",
"workflow_node.apply.form.dns_ttl.label": "DNS TTL (Optional)",
"workflow_node.apply.form.dns_ttl.placeholder": "Please enter DNS TTL",
"workflow_node.apply.form.dns_ttl.unit": "seconds",
- "workflow_node.apply.form.dns_ttl.tooltip": "It determines the time to live for DNS record during ACME DNS-01 challenge. If you don't understand this option, just keep it by default.
Leave it blank to use the default value provided by the provider.",
+ "workflow_node.apply.form.dns_ttl.tooltip": "It determines the TTL for DNS record during ACME DNS-01 challenge. If you don't understand this option, just keep it by default.
Leave it blank to use the default value provided by the provider.",
"workflow_node.apply.form.disable_follow_cname.label": "Disable CNAME following",
"workflow_node.apply.form.disable_follow_cname.tooltip": "It determines whether to disable CNAME following during ACME DNS-01 challenge. If you don't understand this option, just keep it by default. Learn more.",
"workflow_node.apply.form.disable_ari.label": "Disable ARI",
"workflow_node.apply.form.disable_ari.tooltip": "It determines whether to disable ARI (ACME Renewal Information). If you don't understand this option, just keep it by default. Learn more.",
"workflow_node.apply.form.strategy_config.label": "Strategy settings",
- "workflow_node.apply.form.skip_before_expiry_days.label": "Renewal interval",
+ "workflow_node.apply.form.skip_before_expiry_days.label": "Repeated application",
"workflow_node.apply.form.skip_before_expiry_days.placeholder": "Please enter renewal interval",
- "workflow_node.apply.form.skip_before_expiry_days.prefix": "If the certificate expiration time exceeds",
+ "workflow_node.apply.form.skip_before_expiry_days.prefix": "If the last certificate expiration time exceeds",
"workflow_node.apply.form.skip_before_expiry_days.suffix": ", skip to re-apply.",
"workflow_node.apply.form.skip_before_expiry_days.unit": "days",
"workflow_node.apply.form.skip_before_expiry_days.tooltip": "Be careful not to exceed the validity period limit of the issued certificate, otherwise the certificate may never be renewed.",
@@ -86,19 +101,26 @@
"workflow_node.deploy.search.provider.placeholder": "Search deploy target ...",
"workflow_node.deploy.form.provider.label": "Deploy target",
"workflow_node.deploy.form.provider.placeholder": "Please select deploy target",
- "workflow_node.deploy.form.provider_access.label": "Host provider authorization",
- "workflow_node.deploy.form.provider_access.placeholder": "Please select an authorization of host provider",
- "workflow_node.deploy.form.provider_access.tooltip": "Used to deploy certificates.",
+ "workflow_node.deploy.form.provider_access.label": "Hosting provider authorization",
+ "workflow_node.deploy.form.provider_access.placeholder": "Please select an authorization of Hosting provider",
+ "workflow_node.deploy.form.provider_access.tooltip": "Used to invoke API during deployment.",
"workflow_node.deploy.form.provider_access.button": "Create",
- "workflow_node.deploy.form.provider_access.guide_for_local": "Tips: Due to the form validations, youe need to select an authorization for local deployment also, even if it means nothing.",
+ "workflow_node.deploy.form.provider_access.guide_for_local": "Tips: If you are running Certimate in Docker, the \"Local\" refers to the container rather than the host.",
"workflow_node.deploy.form.certificate.label": "Certificate",
"workflow_node.deploy.form.certificate.placeholder": "Please select certificate",
"workflow_node.deploy.form.certificate.tooltip": "The certificate to be deployed comes from the previous nodes of application or upload.",
"workflow_node.deploy.form.params_config.label": "Parameter settings",
"workflow_node.deploy.form.1panel_console_auto_restart.label": "Auto restart after deployment",
+ "workflow_node.deploy.form.1panel_site_resource_type.label": "Resource type",
+ "workflow_node.deploy.form.1panel_site_resource_type.placeholder": "Please select resource type",
+ "workflow_node.deploy.form.1panel_site_resource_type.option.website.label": "Website",
+ "workflow_node.deploy.form.1panel_site_resource_type.option.certificate.label": "Certificate",
"workflow_node.deploy.form.1panel_site_website_id.label": "1Panel website ID",
"workflow_node.deploy.form.1panel_site_website_id.placeholder": "Please enter 1Panel website ID",
"workflow_node.deploy.form.1panel_site_website_id.tooltip": "You can find it on 1Panel WebUI.",
+ "workflow_node.deploy.form.1panel_site_certificate_id.label": "1Panel certificate ID",
+ "workflow_node.deploy.form.1panel_site_certificate_id.placeholder": "Please enter 1Panel certificate ID",
+ "workflow_node.deploy.form.1panel_site_certificate_id.tooltip": "You can find it on 1Panel WebUI.",
"workflow_node.deploy.form.aliyun_alb_resource_type.label": "Resource type",
"workflow_node.deploy.form.aliyun_alb_resource_type.placeholder": "Please select resource type",
"workflow_node.deploy.form.aliyun_alb_resource_type.option.loadbalancer.label": "ALB load balancer",
@@ -115,6 +137,22 @@
"workflow_node.deploy.form.aliyun_alb_snidomain.label": "Alibaba Cloud ALB SNI domain (Optional)",
"workflow_node.deploy.form.aliyun_alb_snidomain.placeholder": "Please enter Alibaba Cloud ALB SNI domain name",
"workflow_node.deploy.form.aliyun_alb_snidomain.tooltip": "For more information, see https://slb.console.aliyun.com/alb",
+ "workflow_node.deploy.form.aliyun_apigw_service_type.label": "Alibaba Cloud API gateway type",
+ "workflow_node.deploy.form.aliyun_apigw_service_type.placeholder": "Please select Alibaba Cloud API gateway type",
+ "workflow_node.deploy.form.aliyun_apigw_service_type.option.cloudnative.label": "Cloud-native API gateway",
+ "workflow_node.deploy.form.aliyun_apigw_service_type.option.traditional.label": "Traditional API gateway",
+ "workflow_node.deploy.form.aliyun_apigw_region.label": "Alibaba Cloud API gateway region",
+ "workflow_node.deploy.form.aliyun_apigw_region.placeholder": "Please enter Alibaba Cloud API gateway region (e.g. cn-hangzhou)",
+ "workflow_node.deploy.form.aliyun_apigw_region.tooltip": "For more information, see https://www.alibabacloud.com/help/en/api-gateway/cloud-native-api-gateway/product-overview/regions",
+ "workflow_node.deploy.form.aliyun_apigw_gateway_id.label": "Alibaba Cloud API gateway ID",
+ "workflow_node.deploy.form.aliyun_apigw_gateway_id.placeholder": "Please enter Alibaba Cloud API gateway ID",
+ "workflow_node.deploy.form.aliyun_apigw_gateway_id.tooltip": "For more information, see https://apigw.console.aliyun.com",
+ "workflow_node.deploy.form.aliyun_apigw_group_id.label": "Alibaba Cloud API group ID",
+ "workflow_node.deploy.form.aliyun_apigw_group_id.placeholder": "Please enter Alibaba Cloud API group ID",
+ "workflow_node.deploy.form.aliyun_apigw_group_id.tooltip": "For more information, see https://apigateway.console.aliyun.com",
+ "workflow_node.deploy.form.aliyun_apigw_domain.label": "Alibaba Cloud API gateway domain",
+ "workflow_node.deploy.form.aliyun_apigw_domain.placeholder": "Please enter Alibaba Cloud API gateway domain",
+ "workflow_node.deploy.form.aliyun_apigw_domain.tooltip": "For more information, see https://apigw.console.aliyun.com or https://apigateway.console.aliyun.com",
"workflow_node.deploy.form.aliyun_cas_region.label": "Alibaba Cloud CAS region",
"workflow_node.deploy.form.aliyun_cas_region.placeholder": "Please enter Alibaba Cloud CAS region (e.g. cn-hangzhou)",
"workflow_node.deploy.form.aliyun_cas_region.tooltip": "For more information, see https://www.alibabacloud.com/help/en/ssl-certificate/developer-reference/endpoints",
@@ -156,6 +194,12 @@
"workflow_node.deploy.form.aliyun_dcdn_domain.label": "Alibaba Cloud DCDN domain",
"workflow_node.deploy.form.aliyun_dcdn_domain.placeholder": "Please enter Alibaba Cloud DCDN domain name",
"workflow_node.deploy.form.aliyun_dcdn_domain.tooltip": "For more information, see https://dcdn.console.aliyun.com",
+ "workflow_node.deploy.form.aliyun_ddos_region.label": "Alibaba Cloud Anti-DDoS region",
+ "workflow_node.deploy.form.aliyun_ddos_region.placeholder": "Please enter Alibaba Cloud Anti-DDoS region (e.g. cn-hangzhou)",
+ "workflow_node.deploy.form.aliyun_ddos_region.tooltip": "For more information, see https://www.alibabacloud.com/help/en/anti-ddos/anti-ddos-pro-and-premium/developer-reference/api-ddoscoo-2020-01-01-endpoint",
+ "workflow_node.deploy.form.aliyun_ddos_domain.label": "Alibaba Cloud Anti-DDoS domain",
+ "workflow_node.deploy.form.aliyun_ddos_domain.placeholder": "Please enter Alibaba Cloud Anti-DDoS domain name",
+ "workflow_node.deploy.form.aliyun_ddos_domain.tooltip": "For more information, see https://yundun.console.aliyun.com/?p=ddoscoo",
"workflow_node.deploy.form.aliyun_esa_region.label": "Alibaba Cloud ESA region",
"workflow_node.deploy.form.aliyun_esa_region.placeholder": "Please enter Alibaba Cloud ESA region (e.g. cn-hangzhou)",
"workflow_node.deploy.form.aliyun_esa_region.tooltip": "For more information, see https://www.alibabacloud.com/help/en/edge-security-acceleration/esa/api-esa-2024-09-10-endpoint",
@@ -227,6 +271,10 @@
"workflow_node.deploy.form.azure_keyvault_name.label": "Azure KeyVault name",
"workflow_node.deploy.form.azure_keyvault_name.placeholder": "Please enter Azure KeyVault name",
"workflow_node.deploy.form.azure_keyvault_name.tooltip": "For more information, see https://learn.microsoft.com/en-us/azure/key-vault/general/about-keys-secrets-certificates",
+ "workflow_node.deploy.form.azure_keyvault_certificate_name.label": "Azure KeyVault certificate name (Optional)",
+ "workflow_node.deploy.form.azure_keyvault_certificate_name.placeholder": "Please enter Azure KeyVault certificate name",
+ "workflow_node.deploy.form.azure_keyvault_certificate_name.tooltip": "Leave it blank to use a default name generated by Certimate.",
+ "workflow_node.deploy.form.azure_keyvault_certificate_name.errmsg.invalid": "Certificate name can only contain letters, numbers, and hyphens (-), with a length limit of 1 to 127 characters",
"workflow_node.deploy.form.baiducloud_appblb_resource_type.label": "Resource type",
"workflow_node.deploy.form.baiducloud_appblb_resource_type.placeholder": "Please select resource type",
"workflow_node.deploy.form.baiducloud_appblb_resource_type.option.loadbalancer.label": "BLB load balancer",
@@ -262,9 +310,12 @@
"workflow_node.deploy.form.baiducloud_cdn_domain.label": "Baidu Cloud CDN domain",
"workflow_node.deploy.form.baiducloud_cdn_domain.placeholder": "Please enter Baidu Cloud CDN domain name",
"workflow_node.deploy.form.baiducloud_cdn_domain.tooltip": "For more information, see https://console.bce.baidu.com/cdn",
- "workflow_node.deploy.form.baishan_cdn_domain.label": "Baishan CDN domain",
- "workflow_node.deploy.form.baishan_cdn_domain.placeholder": "Please enter Baishan CDN domain name",
+ "workflow_node.deploy.form.baishan_cdn_domain.label": "Baishan Cloud CDN domain",
+ "workflow_node.deploy.form.baishan_cdn_domain.placeholder": "Please enter Baishan Cloud CDN domain name",
"workflow_node.deploy.form.baishan_cdn_domain.tooltip": "For more information, see https://cdnx.console.baishan.com",
+ "workflow_node.deploy.form.baishan_cdn_certificate_id.label": "Baishan Cloud CDN certificate ID (Optional)",
+ "workflow_node.deploy.form.baishan_cdn_certificate_id.placeholder": "Please enter Baishan Cloud CDN certificate ID",
+ "workflow_node.deploy.form.baishan_cdn_certificate_id.tooltip": "For more information, see https://cdnx.console.baishan.com/#/cdn/cert",
"workflow_node.deploy.form.baotapanel_console_auto_restart.label": "Auto restart after deployment",
"workflow_node.deploy.form.baotapanel_site_type.label": "aaPanel site type",
"workflow_node.deploy.form.baotapanel_site_type.placeholder": "Please select aaPanel site type",
@@ -279,6 +330,12 @@
"workflow_node.deploy.form.baotapanel_site_names.tooltip": "Usually equal to the websites domain name.",
"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.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 https://dash.bunny.net/cdn",
+ "workflow_node.deploy.form.bunny_cdn_hostname.label": "Bunny CDN hostname",
+ "workflow_node.deploy.form.bunny_cdn_hostname.placeholder": "Please enter Bunny CDN hostname",
+ "workflow_node.deploy.form.bunny_cdn_hostname.tooltip": "What is this? See https://dash.bunny.net/cdn",
"workflow_node.deploy.form.byteplus_cdn_domain.label": "BytePlus CDN domain",
"workflow_node.deploy.form.byteplus_cdn_domain.placeholder": "Please enter BytePlus CDN domain name",
"workflow_node.deploy.form.byteplus_cdn_domain.tooltip": "For more information, see https://console.byteplus.com/cdn",
@@ -299,6 +356,11 @@
"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 https://cdn.gcore.com/resources/list",
+ "workflow_node.deploy.form.goedge_resource_type.label": "Resource type",
+ "workflow_node.deploy.form.goedge_resource_type.placeholder": "Please select resource type",
+ "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.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 https://console-intl.huaweicloud.com/apiexplorer/#/endpoint",
@@ -409,11 +471,15 @@
"workflow_node.deploy.form.local_post_command.label": "Post-command (Optional)",
"workflow_node.deploy.form.local_post_command.placeholder": "Please enter command to be executed after saving files",
"workflow_node.deploy.form.local_preset_scripts.button": "Use preset scripts",
- "workflow_node.deploy.form.local_preset_scripts.option.backup_files.label": "POSIX Bash - Backup certificate files",
- "workflow_node.deploy.form.local_preset_scripts.option.reload_nginx.label": "POSIX Bash - Reload nginx",
- "workflow_node.deploy.form.local_preset_scripts.option.binding_iis.label": "PowerShell - Binding IIS",
- "workflow_node.deploy.form.local_preset_scripts.option.binding_netsh.label": "PowerShell - Binding netsh",
- "workflow_node.deploy.form.local_preset_scripts.option.binding_rdp.label": "PowerShell - Binding RDP",
+ "workflow_node.deploy.form.local_preset_scripts.option.sh_backup_files.label": "POSIX Bash - Backup certificate files",
+ "workflow_node.deploy.form.local_preset_scripts.option.ps_backup_files.label": "PowerShell - Backup certificate files",
+ "workflow_node.deploy.form.local_preset_scripts.option.sh_reload_nginx.label": "POSIX Bash - Reload nginx",
+ "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.proxmoxve_node_name.label": "Proxmox VE cluster node name",
+ "workflow_node.deploy.form.proxmoxve_node_name.placeholder": "Please enter Proxmox VE cluster node name",
+ "workflow_node.deploy.form.proxmoxve_auto_restart.label": "Auto restart after deployment",
"workflow_node.deploy.form.qiniu_cdn_domain.label": "Qiniu CDN domain",
"workflow_node.deploy.form.qiniu_cdn_domain.placeholder": "Please enter Qiniu CDN domain name",
"workflow_node.deploy.form.qiniu_cdn_domain.tooltip": "For more information, see https://portal.qiniu.com/cdn",
@@ -426,6 +492,12 @@
"workflow_node.deploy.form.qiniu_pili_domain.label": "Qiniu Pili streaming domain",
"workflow_node.deploy.form.qiniu_pili_domain.placeholder": "Please enter Qiniu Pili streaming domain name",
"workflow_node.deploy.form.qiniu_pili_domain.tooltip": "For more information, see https://portal.qiniu.com/hub",
+ "workflow_node.deploy.form.rainyun_rcdn_instance_id.label": "Rain Yun RCDN instance ID",
+ "workflow_node.deploy.form.rainyun_rcdn_instance_id.placeholder": "Please enter Rain Yun RCDN instance ID",
+ "workflow_node.deploy.form.rainyun_rcdn_instance_id.tooltip": "For more information, see https://app.rainyun.com/apps/rcdn/list",
+ "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 https://app.rainyun.com/apps/rcdn/list",
"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",
@@ -461,8 +533,12 @@
"workflow_node.deploy.form.ssh_post_command.label": "Post-command (Optional)",
"workflow_node.deploy.form.ssh_post_command.placeholder": "Please enter command to be executed after uploading files",
"workflow_node.deploy.form.ssh_preset_scripts.button": "Use preset scripts",
- "workflow_node.deploy.form.ssh_preset_scripts.option.backup_files.label": "POSIX Bash - Backup certificate files",
- "workflow_node.deploy.form.ssh_preset_scripts.option.reload_nginx.label": "POSIX Bash - Reload nginx",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.sh_backup_files.label": "POSIX Bash - Backup certificate files",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.ps_backup_files.label": "PowerShell - Backup certificate files",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.sh_reload_nginx.label": "POSIX Bash - Reload nginx",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.ps_binding_iis.label": "PowerShell - Binding IIS",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.ps_binding_netsh.label": "PowerShell - Binding netsh",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.ps_binding_rdp.label": "PowerShell - Binding RDP",
"workflow_node.deploy.form.ssh_use_scp.label": "Fallback to use SCP",
"workflow_node.deploy.form.ssh_use_scp.tooltip": "If the remote server does not support SFTP, please enable this option to fallback to SCP.",
"workflow_node.deploy.form.tencentcloud_cdn_domain.label": "Tencent Cloud CDN domain",
@@ -623,11 +699,24 @@
"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 https://console.volcengine.com/tos",
- "workflow_node.deploy.form.webhook_data.label": "Webhook data (JSON format)",
- "workflow_node.deploy.form.webhook_data.placeholder": "Please enter Webhook data",
- "workflow_node.deploy.form.webhook_data.guide": "Tips: The Webhook data should be a key-value pair in JSON format. The values in JSON support template variables, which will be replaced by actual values when sent to the Webhook URL.
Supported variables:
${DOMAIN}: The primary domain of the certificate (CommonName).
${DOMAINS}: The domain list of the certificate (SubjectAltNames).
${CERTIFICATE}: The PEM format content of the certificate file.
${PRIVATE_KEY}: The PEM format content of the private key file.",
+ "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",
+ "workflow_node.deploy.form.wangsu_cdnpro_environment.option.staging.label": "Staging environment",
+ "workflow_node.deploy.form.wangsu_cdnpro_domain.label": "Wangsu Cloud CDN domain",
+ "workflow_node.deploy.form.wangsu_cdnpro_domain.placeholder": "Please enter Wangsu Cloud CDN domain name",
+ "workflow_node.deploy.form.wangsu_cdnpro_domain.tooltip": "For more information, see https://cdnpro.console.wangsu.com/v2/index/#/properties",
+ "workflow_node.deploy.form.wangsu_cdnpro_certificate_id.label": "Wangsu Cloud CDN certificate ID (Optional)",
+ "workflow_node.deploy.form.wangsu_cdnpro_certificate_id.placeholder": "Please enter Wangsu Cloud CDN certificate ID",
+ "workflow_node.deploy.form.wangsu_cdnpro_certificate_id.tooltip": "For more information, see https://cdnpro.console.wangsu.com/v2/index/#/certificate",
+ "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 https://cdnpro.console.wangsu.com/v2/index/#/certificate",
+ "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.",
+ "workflow_node.deploy.form.webhook_data.guide": "Supported variables:
- ${DOMAIN}: The primary domain of the certificate (CommonName).
- ${DOMAINS}: The domain list of the certificate (SubjectAltNames).
- ${CERTIFICATE}: The PEM format content of the certificate file.
- ${PRIVATE_KEY}: The PEM format content of the private key file.
Please visit the authorization management page for addtional notes.",
"workflow_node.deploy.form.webhook_data.errmsg.json_invalid": "Please enter a valiod JSON string",
- "workflow_node.deploy.form.webhook_data_preset.button": "Use preset template",
"workflow_node.deploy.form.strategy_config.label": "Strategy settings",
"workflow_node.deploy.form.skip_on_last_succeeded.label": "Repeated deployment",
"workflow_node.deploy.form.skip_on_last_succeeded.prefix": "If the last deployment was successful, ",
@@ -650,9 +739,32 @@
"workflow_node.notify.form.subject.placeholder": "Please enter subject",
"workflow_node.notify.form.message.label": "Message",
"workflow_node.notify.form.message.placeholder": "Please enter message",
- "workflow_node.notify.form.channel.label": "Channel",
+ "workflow_node.notify.form.channel.label": "Channel (Deprecated)",
"workflow_node.notify.form.channel.placeholder": "Please select channel",
"workflow_node.notify.form.channel.button": "Configure",
+ "workflow_node.notify.form.provider.label": "Notification channel",
+ "workflow_node.notify.form.provider.placeholder": "Please select notification channel",
+ "workflow_node.notify.form.provider_access.label": "Notification provider authorization",
+ "workflow_node.notify.form.provider_access.placeholder": "Please select an authorization of notification provider",
+ "workflow_node.notify.form.provider_access.button": "Create",
+ "workflow_node.notify.form.params_config.label": "Parameter settings",
+ "workflow_node.notify.form.email_sender_address.label": "Sender email address (Optional)",
+ "workflow_node.notify.form.email_sender_address.placeholder": "Please enter sender email address to override the default value",
+ "workflow_node.notify.form.email_sender_address.tooltip": "Leave it blank to use the default sender email address provided by the authorization.",
+ "workflow_node.notify.form.email_receiver_address.label": "Receiver email address (Optional)",
+ "workflow_node.notify.form.email_receiver_address.placeholder": "Please enter receiver email address to override the default value",
+ "workflow_node.notify.form.email_receiver_address.tooltip": "Leave it blank to use the default receiver email address provided by the selected authorization.",
+ "workflow_node.notify.form.mattermost_channel_id.label": "Mattermost channel ID (Optional)",
+ "workflow_node.notify.form.mattermost_channel_id.placeholder": "Please enter Mattermost channel ID to override the default value",
+ "workflow_node.notify.form.mattermost_channel_id.tooltip": "Leave it blank to use the default channel ID provided by the authorization.",
+ "workflow_node.notify.form.telegram_chat_id.label": "Telegram chat ID (Optional)",
+ "workflow_node.notify.form.telegram_chat_id.placeholder": "Please enter Telegram chat ID to override the default value",
+ "workflow_node.notify.form.telegram_chat_id.tooltip": "Leave it blank to use the default chat ID provided by the selected authorization.",
+ "workflow_node.notify.form.webhook_data.label": "Webhook data (Optional)",
+ "workflow_node.notify.form.webhook_data.placeholder": "Please enter Webhook data to override the default value",
+ "workflow_node.notify.form.webhook_data.tooltip": "Leave it blank to use the default Webhook data provided by the authorization.",
+ "workflow_node.notify.form.webhook_data.guide": "Supported variables:
- ${SUBJECT}: The subject of notification.
- ${MESSAGE}: The message of notification.
Please visit the authorization management page for addtional notes.",
+ "workflow_node.notify.form.webhook_data.errmsg.json_invalid": "Please enter a valiod JSON string",
"workflow_node.end.label": "End",
diff --git a/ui/src/i18n/locales/en/nls.workflow.runs.json b/ui/src/i18n/locales/en/nls.workflow.runs.json
index e177dcb3..551a1e90 100644
--- a/ui/src/i18n/locales/en/nls.workflow.runs.json
+++ b/ui/src/i18n/locales/en/nls.workflow.runs.json
@@ -5,6 +5,8 @@
"workflow_run.action.delete": "Delete run",
"workflow_run.action.delete.confirm": "Are you sure to delete this run?",
+ "workflow_run.table.alert": "Attention: The workflow run contains the execution results of each node. Deleting it may trigger re-application or re-deployment of certificates due to the inability to find the previous execution result. Please do not delete unless necessary. It is recommended to keep it for at least 180 days.",
+
"workflow_run.props.id": "ID",
"workflow_run.props.status": "Status",
"workflow_run.props.status.pending": "Pending",
@@ -21,6 +23,7 @@
"workflow_run.logs": "Logs",
"workflow_run.logs.menu.show_timestamps": "Show timestamps",
"workflow_run.logs.menu.show_whitespaces": "Show whitespaces",
+ "workflow_run.logs.menu.download_logs": "Download logs",
"workflow_run.artifacts": "Artifacts",
"workflow_run_artifact.props.type": "Type",
diff --git a/ui/src/i18n/locales/zh/nls.access.json b/ui/src/i18n/locales/zh/nls.access.json
index bec170b6..bae29d27 100644
--- a/ui/src/i18n/locales/zh/nls.access.json
+++ b/ui/src/i18n/locales/zh/nls.access.json
@@ -14,7 +14,13 @@
"access.props.name": "名称",
"access.props.provider": "提供商",
"access.props.provider.usage.dns": "DNS 提供商",
- "access.props.provider.usage.host": "主机提供商",
+ "access.props.provider.usage.hosting": "主机提供商",
+ "access.props.provider.usage.ca": "证书颁发机构",
+ "access.props.provider.usage.notification": "通知渠道",
+ "access.props.provider.builtin": "内置",
+ "access.props.usage.both_dns_hosting": "提供商",
+ "access.props.usage.ca_only": "证书颁发机构",
+ "access.props.usage.notification_only": "通知渠道",
"access.props.created_at": "创建时间",
"access.props.updated_at": "更新时间",
@@ -23,14 +29,16 @@
"access.form.provider.label": "提供商",
"access.form.provider.placeholder": "请选择提供商",
"access.form.provider.tooltip": "提供商分为两种类型:
【DNS 提供商】你的 DNS 托管方,通常等同于域名注册商,用于在申请证书时管理您的域名解析记录。
【主机提供商】你的服务器或云服务的托管方,用于部署签发的证书。
该字段保存后不可修改。",
+ "access.form.certificate_authority.label": "证书颁发机构",
+ "access.form.certificate_authority.placeholder": "请选择证书颁发机构",
+ "access.form.notification_channel.label": "通知渠道",
+ "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_url.tooltip": "这是什么?请参阅 https://1panel.cn/docs/dev_manual/api_manual/",
"access.form.1panel_api_key.label": "1Panel 接口密钥",
"access.form.1panel_api_key.placeholder": "请输入 1Panel 接口密钥",
"access.form.1panel_api_key.tooltip": "这是什么?请参阅 https://1panel.cn/docs/dev_manual/api_manual/",
"access.form.1panel_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
- "access.form.1panel_allow_insecure_conns.tooltip": "忽略 SSL/TLS 证书错误可能导致数据泄露或被篡改。建议仅在可信网络下启用。",
"access.form.1panel_allow_insecure_conns.switch.on": "允许",
"access.form.1panel_allow_insecure_conns.switch.off": "不允许",
"access.form.acmehttpreq_endpoint.label": "服务端点",
@@ -39,10 +47,10 @@
"access.form.acmehttpreq_mode.label": "模式",
"access.form.acmehttpreq_mode.placeholder": "请选择模式",
"access.form.acmehttpreq_mode.tooltip": "这是什么?请参阅 https://go-acme.github.io/lego/dns/httpreq/",
- "access.form.acmehttpreq_username.label": "HTTP 基本认证用户名",
+ "access.form.acmehttpreq_username.label": "HTTP 基本认证用户名(可选)",
"access.form.acmehttpreq_username.placeholder": "请输入 HTTP 基本认证用户名",
"access.form.acmehttpreq_username.tooltip": "这是什么?请参阅 https://go-acme.github.io/lego/dns/httpreq/",
- "access.form.acmehttpreq_password.label": "HTTP 基本认证密码",
+ "access.form.acmehttpreq_password.label": "HTTP 基本认证密码(可选)",
"access.form.acmehttpreq_password.placeholder": "请输入 HTTP 基本认证密码",
"access.form.acmehttpreq_password.tooltip": "这是什么?请参阅 https://go-acme.github.io/lego/dns/httpreq/",
"access.form.aliyun_access_key_id.label": "阿里云 AccessKeyId",
@@ -79,14 +87,15 @@
"access.form.baishan_api_token.placeholder": "请输入白山云 API Token",
"access.form.baotapanel_api_url.label": "宝塔面板 URL",
"access.form.baotapanel_api_url.placeholder": "请输入宝塔面板 URL",
- "access.form.baotapanel_api_url.tooltip": "这是什么?请参阅 https://www.bt.cn/bbs/thread-20376-1-1.html",
"access.form.baotapanel_api_key.label": "宝塔面板接口密钥",
"access.form.baotapanel_api_key.placeholder": "请输入宝塔面板接口密钥",
"access.form.baotapanel_api_key.tooltip": "这是什么?请参阅 https://www.bt.cn/bbs/thread-113890-1-1.html",
"access.form.baotapanel_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
- "access.form.baotapanel_allow_insecure_conns.tooltip": "忽略 SSL/TLS 证书错误可能导致数据泄露或被篡改。建议仅在可信网络下启用。",
"access.form.baotapanel_allow_insecure_conns.switch.on": "允许",
"access.form.baotapanel_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": "这是什么?请参阅 https://docs.bunny.net/reference/bunnynet-api-overview",
"access.form.byteplus_access_key.label": "BytePlus AccessKey",
"access.form.byteplus_access_key.placeholder": "请输入 BytePlus AccessKey",
"access.form.byteplus_access_key.tooltip": "这是什么?请参阅 https://docs.byteplus.com/zh-CN/docs/byteplus-platform/docs-managing-keys",
@@ -98,16 +107,21 @@
"access.form.cachefly_api_token.tooltip": "这是什么?请参阅 https://kb.cachefly.com/kb/guide/en/generating-tokens-and-keys-Oll9Irt5TI/Steps/2460228",
"access.form.cdnfly_api_url.label": "Cdnfly API URL",
"access.form.cdnfly_api_url.placeholder": "请输入 Cdnfly API URL",
- "access.form.cdnfly_api_url.tooltip": "这是什么?请参阅 https://doc.cdnfly.cn/anzhuangshuoming.html",
"access.form.cdnfly_api_key.label": "Cdnfly 用户端 API Key",
"access.form.cdnfly_api_key.placeholder": "请输入 Cdnfly 用户端 API Key",
"access.form.cdnfly_api_key.tooltip": "这是什么?请参阅 https://doc.cdnfly.cn/shiyongjieshao.html",
"access.form.cdnfly_api_secret.label": "Cdnfly 用户端 API Secret",
"access.form.cdnfly_api_secret.placeholder": "请输入 Cdnfly 用户端 API Secret",
"access.form.cdnfly_api_secret.tooltip": "这是什么?请参阅 https://doc.cdnfly.cn/shiyongjieshao.html",
- "access.form.cloudflare_dns_api_token.label": "Cloudflare API Token",
- "access.form.cloudflare_dns_api_token.placeholder": "请输入 Cloudflare API Token",
+ "access.form.cdnfly_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
+ "access.form.cdnfly_allow_insecure_conns.switch.on": "允许",
+ "access.form.cdnfly_allow_insecure_conns.switch.off": "不允许",
+ "access.form.cloudflare_dns_api_token.label": "Cloudflare DNS API 令牌",
+ "access.form.cloudflare_dns_api_token.placeholder": "请输入 Cloudflare DNS API 令牌",
"access.form.cloudflare_dns_api_token.tooltip": "这是什么?请参阅 https://developers.cloudflare.com/fundamentals/api/get-started/create-token/",
+ "access.form.cloudflare_zone_api_token.label": "Cloudflare Zone API 令牌(可选)",
+ "access.form.cloudflare_zone_api_token.placeholder": "请输入 Cloudflare Zone API 令牌",
+ "access.form.cloudflare_zone_api_token.tooltip": "这是什么?请参阅 https://developers.cloudflare.com/fundamentals/api/get-started/create-token/
仅当你将 DNS API 令牌范围指定为特定域时需要填写,请将 Zone API 令牌范围指定为全部域,并分配 Zone/Zone/Read 权限。",
"access.form.cloudns_auth_id.label": "ClouDNS API 用户 ID",
"access.form.cloudns_auth_id.placeholder": "请输入 ClouDNS API 用户 ID",
"access.form.cloudns_auth_id.tooltip": "这是什么?请参阅 https://www.cloudns.net/wiki/article/42/",
@@ -123,6 +137,12 @@
"access.form.desec_token.label": "deSEC Token",
"access.form.desec_token.placeholder": "请输入 deSEC Token",
"access.form.desec_token.tooltip": "这是什么?请参阅 https://desec.readthedocs.io/en/latest/auth/tokens.html",
+ "access.form.dingtalkbot_webhook_url.label": "钉钉群机器人 Webhook 地址",
+ "access.form.dingtalkbot_webhook_url.placeholder": "请输入钉钉群机器人 Webhook 地址",
+ "access.form.dingtalkbot_webhook_url.tooltip": "这是什么?请参阅 https://open.dingtalk.com/document/orgapp/obtain-the-webhook-address-of-a-custom-robot",
+ "access.form.dingtalkbot_secret.label": "钉钉群机器人加签密钥",
+ "access.form.dingtalkbot_secret.placeholder": "请输入钉钉群机器人加签密钥",
+ "access.form.dingtalkbot_secret.tooltip": "这是什么?请参阅 https://open.dingtalk.com/document/orgapp/customize-robot-security-settings",
"access.form.dnsla_api_id.label": "DNS.LA API ID",
"access.form.dnsla_api_id.placeholder": "请输入 DNS.LA API ID",
"access.form.dnsla_api_id.tooltip": "这是什么?请参阅 https://www.dns.la/docs/ApiDoc",
@@ -144,6 +164,19 @@
"access.form.edgio_client_secret.label": "Edgio 客户端密码",
"access.form.edgio_client_secret.placeholder": "请输入 Edgio 客户端密码",
"access.form.edgio_client_secret.tooltip": "这是什么?请参阅 https://docs.edg.io/applications/v7/rest_api/authentication#administering-api-clients",
+ "access.form.email_smtp_host.label": "SMTP 服务器地址",
+ "access.form.email_smtp_host.placeholder": "请输入 SMTP 服务器地址",
+ "access.form.email_smtp_port.label": "SMTP 服务器端口",
+ "access.form.email_smtp_port.placeholder": "请输入 SMTP 服务器端口",
+ "access.form.email_smtp_tls.label": "SSL/TLS 连接",
+ "access.form.email_username.label": "用户名",
+ "access.form.email_username.placeholder": "请输入用户名",
+ "access.form.email_password.label": "密码",
+ "access.form.email_password.placeholder": "请输入密码",
+ "access.form.email_default_sender_address.label": "默认的发送邮箱地址(可选)",
+ "access.form.email_default_sender_address.placeholder": "请输入默认的发送邮箱地址",
+ "access.form.email_default_receiver_address.label": "默认的接收邮箱地址(可选)",
+ "access.form.email_default_receiver_address.placeholder": "请输入默认的接收邮箱地址",
"access.form.gcore_api_token.label": "Gcore API Token",
"access.form.gcore_api_token.placeholder": "请输入 Gcore API Token",
"access.form.gcore_api_token.tooltip": "这是什么?请参阅 https://api.gcore.com/docs/iam#section/Authentication",
@@ -159,6 +192,23 @@
"access.form.godaddy_api_secret.label": "GoDaddy API Secret",
"access.form.godaddy_api_secret.placeholder": "请输入 GoDaddy API Secret",
"access.form.godaddy_api_secret.tooltip": "这是什么?请参阅 https://developer.godaddy.com/",
+ "access.form.goedge_api_url.label": "GoEdge API URL",
+ "access.form.goedge_api_url.placeholder": "请输入 GoEdge API URL",
+ "access.form.goedge_access_key_id.label": "GoEdge 用户 AccessKeyId",
+ "access.form.goedge_access_key_id.placeholder": "请输入 GoEdge 用户 AccessKeyId",
+ "access.form.goedge_access_key_id.tooltip": "这是什么?请参阅 https://goedge.cloud/docs/API/Auth.md",
+ "access.form.goedge_access_key.label": "GoEdge 用户 AccessKey",
+ "access.form.goedge_access_key.placeholder": "请输入 GoEdge 用户 AccessKey",
+ "access.form.goedge_access_key.tooltip": "这是什么?请参阅 https://goedge.cloud/docs/API/Auth.md",
+ "access.form.goedge_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
+ "access.form.goedge_allow_insecure_conns.switch.on": "允许",
+ "access.form.goedge_allow_insecure_conns.switch.off": "不允许",
+ "access.form.googletrustservices_eab_kid.label": "ACME EAB KID",
+ "access.form.googletrustservices_eab_kid.placeholder": "请输入 ACME EAB KID",
+ "access.form.googletrustservices_eab_kid.tooltip": "这是什么?请参阅 https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
+ "access.form.googletrustservices_eab_hmac_key.label": "ACME EAB HMAC Key",
+ "access.form.googletrustservices_eab_hmac_key.placeholder": "请输入 ACME EAB HMAC Key",
+ "access.form.googletrustservices_eab_hmac_key.tooltip": "这是什么?请参阅 https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
"access.form.huaweicloud_access_key_id.label": "华为云 AccessKeyId",
"access.form.huaweicloud_access_key_id.placeholder": "请输入华为云 AccessKeyId",
"access.form.huaweicloud_access_key_id.tooltip": "这是什么?请参阅 https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html",
@@ -175,6 +225,18 @@
"access.form.k8s_kubeconfig.placeholder": "请选择 KubeConfig 文件",
"access.form.k8s_kubeconfig.upload": "选择文件",
"access.form.k8s_kubeconfig.tooltip": "这是什么?请参阅 https://kubernetes.io/zh-cn/docs/concepts/configuration/organize-cluster-access-kubeconfig/
为空时,将使用 Pod 的 ServiceAccount 作为凭证。",
+ "access.form.larkbot_webhook_url.label": "飞书群机器人 Webhook 地址",
+ "access.form.larkbot_webhook_url.placeholder": "请输入飞书群机器人 Webhook 地址",
+ "access.form.larkbot_webhook_url.tooltip": "这是什么?请参阅 https://www.feishu.cn/hc/zh-CN/articles/807992406756",
+ "access.form.mattermost_server_url.label": "Mattermost 服务地址",
+ "access.form.mattermost_server_url.placeholder": "请输入 Mattermost 服务地址",
+ "access.form.mattermost_username.label": "Mattermost 用户名",
+ "access.form.mattermost_username.placeholder": "请输入 Mattermost 用户名",
+ "access.form.mattermost_password.label": "Mattermost 密码",
+ "access.form.mattermost_password.placeholder": "请输入 Mattermost 密码",
+ "access.form.mattermost_default_channel_id.label": "默认的 Mattermost 频道 ID(可选)",
+ "access.form.mattermost_default_channel_id.placeholder": "请输入默认的 Mattermost 频道 ID",
+ "access.form.mattermost_default_channel_id.tooltip": "如何获取频道 ID?从左侧边栏中选择目标频道,点击顶部的频道名称,选择“频道详情”,即可在弹出页面中直接看到频道 ID。",
"access.form.namecheap_username.label": "Namecheap 用户名",
"access.form.namecheap_username.placeholder": "请输入 Namecheap 用户名",
"access.form.namecheap_username.tooltip": "这是什么?请参阅 https://www.namecheap.com/support/api/intro/",
@@ -201,10 +263,23 @@
"access.form.porkbun_secret_api_key.tooltip": "这是什么?请参阅 https://porkbun.com/api/json/v3/documentation",
"access.form.powerdns_api_url.label": "PowerDNS API URL",
"access.form.powerdns_api_url.placeholder": "请输入 PowerDNS API URL",
- "access.form.powerdns_api_url.tooltip": "这是什么?请参阅 https://doc.powerdns.com/authoritative/http-api/index.html#endpoints-and-objects-in-the-api",
"access.form.powerdns_api_key.label": "PowerDNS API Key",
"access.form.powerdns_api_key.placeholder": "请输入 PowerDNS API Key",
"access.form.powerdns_api_key.tooltip": "这是什么?请参阅 https://doc.powerdns.com/authoritative/http-api/index.html#enabling-the-api",
+ "access.form.powerdns_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
+ "access.form.powerdns_allow_insecure_conns.switch.on": "允许",
+ "access.form.powerdns_allow_insecure_conns.switch.off": "不允许",
+ "access.form.proxmoxve_api_url.label": "Proxmox VE URL",
+ "access.form.proxmoxve_api_url.placeholder": "请输入 Proxmox VE URL",
+ "access.form.proxmoxve_api_token.label": "Proxmox VE API Token",
+ "access.form.proxmoxve_api_token.placeholder": "请输入 Proxmox VE API Token",
+ "access.form.proxmoxve_api_token.tooltip": "这是什么?请参阅 https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pveum_tokens",
+ "access.form.proxmoxve_api_token_secret.label": "Proxmox VE API Token Secret(可选)",
+ "access.form.proxmoxve_api_token_secret.placeholder": "请输入 Proxmox VE API Token Secret",
+ "access.form.proxmoxve_api_token_secret.tooltip": "这是什么?请参阅 https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pveum_tokens",
+ "access.form.proxmoxve_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
+ "access.form.proxmoxve_allow_insecure_conns.switch.on": "允许",
+ "access.form.proxmoxve_allow_insecure_conns.switch.off": "不允许",
"access.form.qiniu_access_key.label": "七牛云 AccessKey",
"access.form.qiniu_access_key.placeholder": "请输入七牛云 AccessKey",
"access.form.qiniu_access_key.tooltip": "这是什么?请参阅 https://portal.qiniu.com/",
@@ -213,15 +288,13 @@
"access.form.qiniu_secret_key.tooltip": "这是什么?请参阅 https://portal.qiniu.com/",
"access.form.rainyun_api_key.label": "雨云 API 密钥",
"access.form.rainyun_api_key.placeholder": "请输入雨云 API 密钥",
- "access.form.rainyun_api_key.tooltip": "这是什么?请参阅 https://www.rainyun.com/docs/account/racc/setting",
+ "access.form.rainyun_api_key.tooltip": "这是什么?请参阅 https://app.rainyun.com/account/settings/api-key",
"access.form.safeline_api_url.label": "雷池 URL",
"access.form.safeline_api_url.placeholder": "请输入雷池 URL",
- "access.form.safeline_api_url.tooltip": "这是什么?请参阅 https://docs.waf-ce.chaitin.cn/zh/上手指南/安装雷池",
"access.form.safeline_api_token.label": "雷池 API Token",
"access.form.safeline_api_token.placeholder": "请输入雷池 API Token",
"access.form.safeline_api_token.tooltip": "这是什么?请参阅 https://docs.waf-ce.chaitin.cn/zh/更多技术文档/OPENAPI",
"access.form.safeline_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
- "access.form.safeline_allow_insecure_conns.tooltip": "忽略 SSL/TLS 证书错误可能导致数据泄露或被篡改。建议仅在可信网络下启用。",
"access.form.safeline_allow_insecure_conns.switch.on": "允许",
"access.form.safeline_allow_insecure_conns.switch.off": "不允许",
"access.form.ssh_host.label": "服务器地址",
@@ -230,16 +303,28 @@
"access.form.ssh_port.placeholder": "请输入服务器端口",
"access.form.ssh_username.label": "用户名",
"access.form.ssh_username.placeholder": "请输入用户名",
- "access.form.ssh_password.label": "密码",
+ "access.form.ssh_password.label": "密码(可选)",
"access.form.ssh_password.placeholder": "请输入密码",
"access.form.ssh_password.tooltip": "使用密码连接到 SSH 时必填。
该字段与密钥文件字段二选一,如果同时填写优先使用 SSH 密钥登录。",
- "access.form.ssh_key.label": "SSH 密钥",
+ "access.form.ssh_key.label": "SSH 密钥(可选)",
"access.form.ssh_key.placeholder": "请输入 SSH 密钥文件",
"access.form.ssh_key.upload": "选择文件",
"access.form.ssh_key.tooltip": "使用 SSH 密钥连接到 SSH 时必填。
该字段与密码字段二选一,如果同时填写优先使用 SSH 密钥登录。",
- "access.form.ssh_key_passphrase.label": "SSH 密钥口令",
+ "access.form.ssh_key_passphrase.label": "SSH 密钥口令(可选)",
"access.form.ssh_key_passphrase.placeholder": "请输入 SSH 密钥口令",
"access.form.ssh_key_passphrase.tooltip": "使用 SSH 密钥连接到 SSH 时选填。",
+ "access.form.sslcom_eab_kid.label": "ACME EAB KID",
+ "access.form.sslcom_eab_kid.placeholder": "请输入 ACME EAB KID",
+ "access.form.sslcom_eab_kid.tooltip": "这是什么?请参阅 https://www.ssl.com/how-to/generate-acme-credentials-for-reseller-customers/",
+ "access.form.sslcom_eab_hmac_key.label": "ACME EAB HMAC key",
+ "access.form.sslcom_eab_hmac_key.placeholder": "请输入 ACME EAB HMAC key",
+ "access.form.sslcom_eab_hmac_key.tooltip": "这是什么?请参阅 https://www.ssl.com/how-to/generate-acme-credentials-for-reseller-customers/",
+ "access.form.telegram_bot_token.label": "Telegram 机器人 API Token",
+ "access.form.telegram_bot_token.placeholder": "请输入 Telegram 机器人 API Token",
+ "access.form.telegram_bot_token.tooltip": "如何获取机器人 API Token?请参阅 https://gist.github.com/nafiesl/4ad622f344cd1dc3bb1ecbe468ff9f8a",
+ "access.form.telegram_default_chat_id.label": "默认的 Telegram 会话 ID(可选)",
+ "access.form.telegram_default_chat_id.placeholder": "请输入默认的 Telegram 会话 ID",
+ "access.form.telegram_default_chat_id.tooltip": "如何获取会话 ID?请参阅 https://gist.github.com/nafiesl/4ad622f344cd1dc3bb1ecbe468ff9f8a",
"access.form.tencentcloud_secret_id.label": "腾讯云 SecretId",
"access.form.tencentcloud_secret_id.placeholder": "请输入腾讯云 SecretId",
"access.form.tencentcloud_secret_id.tooltip": "这是什么?请参阅 https://cloud.tencent.com/document/product/598/40488",
@@ -273,16 +358,54 @@
"access.form.volcengine_secret_access_key.label": "火山引擎 SecretAccessKey",
"access.form.volcengine_secret_access_key.placeholder": "请输入火山引擎 SecretAccessKey",
"access.form.volcengine_secret_access_key.tooltip": "这是什么?请参阅 https://www.volcengine.com/docs/6291/216571",
+ "access.form.wangsu_access_key_id.label": "网宿云 AccessKeyId",
+ "access.form.wangsu_access_key_id.placeholder": "请输入网宿云 AccessKeyId",
+ "access.form.wangsu_access_key_id.tooltip": "这是什么?请参阅 https://www.wangsu.com/document/account-manage/15775",
+ "access.form.wangsu_access_key_secret.label": "网宿云 AccessKeySecret",
+ "access.form.wangsu_access_key_secret.placeholder": "请输入网宿云 AccessKeySecret",
+ "access.form.wangsu_access_key_secret.tooltip": "这是什么?请参阅 https://www.wangsu.com/document/account-manage/15775",
+ "access.form.wangsu_api_key.label": "网宿云 API 接口密码",
+ "access.form.wangsu_api_key.placeholder": "请输入网宿云 API 接口密码",
+ "access.form.wangsu_api_key.tooltip": "这是什么?请参阅 https://www.wangsu.com/document/account-manage/15776",
"access.form.webhook_url.label": "Webhook 回调地址",
"access.form.webhook_url.placeholder": "请输入 Webhook 回调地址",
+ "access.form.webhook_method.label": "Webhook 请求谓词",
+ "access.form.webhook_method.placeholder": "请选择 Webhook 请求谓词",
+ "access.form.webhook_headers.label": "Webhook 请求标头(可选)",
+ "access.form.webhook_headers.placeholder": "请输入 Webhook 请求标头",
+ "access.form.webhook_headers.errmsg.invalid": "请输入有效的请求标头",
+ "access.form.webhook_headers.tooltip": "格式:
key1: val2
key2: val2
示例:
Content-Type: application/json
User-Agent: certimate",
+ "access.form.webhook_default_data.errmsg.json_invalid": "请输入有效的 JSON 格式字符串",
+ "access.form.webhook_default_data_for_deployment.label": "默认的 Webhook 部署证书回调数据(可选)",
+ "access.form.webhook_default_data_for_deployment.placeholder": "请输入默认的 Webhook 回调数据",
+ "access.form.webhook_default_data_for_deployment.guide": "小贴士:回调数据是一个 JSON 格式的数据。
其中值支持模板变量,将在被发送到指定的 Webhook URL 时被替换为实际值;其他内容将保持原样。支持的变量:
- ${DOMAIN}:证书的主域名(即 CommonName)。
- ${DOMAINS}:证书的多域名列表(即 SubjectAltNames)。
- ${CERTIFICATE}:证书文件 PEM 格式内容。
- ${PRIVATE_KEY}:私钥文件 PEM 格式内容。
当请求谓词为 GET 时,回调数据将作为查询参数;否则,回调数据将按照请求标头中 Content-Type 所指示的格式进行编码。支持的格式:
- application/json(默认)。
- application/x-www-form-urlencoded:不支持嵌套数据。
- multipart/form-data:不支持嵌套数据。
",
+ "access.form.webhook_default_data_for_notification.label": "默认的 Webhook 推送通知回调数据(可选)",
+ "access.form.webhook_default_data_for_notification.placeholder": "请输入默认的 Webhook 回调数据",
+ "access.form.webhook_default_data_for_notification.guide": "小贴士:回调数据是一个 JSON 格式的数据。
其中值支持模板变量,将在被发送到指定的 Webhook URL 时被替换为实际值;其他内容将保持原样。支持的变量:
- ${DOMAIN}:证书的主域名(即 CommonName)。
- ${SUBJECT}:通知主题。
- ${MESSAGE}:通知内容。
当请求谓词为 GET 时,回调数据将作为查询参数;否则,回调数据将按照请求标头中 Content-Type 所指示的格式进行编码。支持的格式:
- application/json(默认)。
- application/x-www-form-urlencoded:不支持嵌套数据。
- multipart/form-data:不支持嵌套数据。
",
+ "access.form.webhook_preset_data.button": "使用预设模板",
+ "access.form.webhook_preset_data.option.bark.label": "Bark",
+ "access.form.webhook_preset_data.option.gotify.label": "Gotify",
+ "access.form.webhook_preset_data.option.ntfy.label": "ntfy",
+ "access.form.webhook_preset_data.option.pushover.label": "Pushover",
+ "access.form.webhook_preset_data.option.pushplus.label": "PushPlus 推送加",
+ "access.form.webhook_preset_data.option.serverchan.label": "Server 酱",
+ "access.form.webhook_preset_data.option.common.label": "通用模板",
"access.form.webhook_allow_insecure_conns.label": "忽略 SSL/TLS 证书错误",
- "access.form.webhook_allow_insecure_conns.tooltip": "忽略 SSL/TLS 证书错误可能导致数据泄露或被篡改。建议仅在可信网络下启用。",
"access.form.webhook_allow_insecure_conns.switch.on": "允许",
"access.form.webhook_allow_insecure_conns.switch.off": "不允许",
+ "access.form.wecombot_webhook_url.label": "企业微信群机器人 Webhook 地址",
+ "access.form.wecombot_webhook_url.placeholder": "请输入企业微信群机器人 Webhook 地址",
+ "access.form.wecombot_webhook_url.tooltip": "这是什么?请参阅 https://open.work.weixin.qq.com/help2/pc/18401",
"access.form.westcn_username.label": "西部数码用户名",
"access.form.westcn_username.placeholder": "请输入西部数码用户名",
"access.form.westcn_username.tooltip": "这是什么?请参阅 https://www.west.cn/CustomerCenter/doc/apiv2.html",
"access.form.westcn_api_password.label": "西部数码 API 密码",
"access.form.westcn_api_password.placeholder": "请输入西部数码 API 密码",
- "access.form.westcn_api_password.tooltip": "这是什么?请参阅 https://www.west.cn/CustomerCenter/doc/apiv2.html"
+ "access.form.westcn_api_password.tooltip": "这是什么?请参阅 https://www.west.cn/CustomerCenter/doc/apiv2.html",
+ "access.form.zerossl_eab_kid.label": "ACME EAB KID",
+ "access.form.zerossl_eab_kid.placeholder": "请输入 ACME EAB KID",
+ "access.form.zerossl_eab_kid.tooltip": "这是什么?请参阅 https://zerossl.com/documentation/acme/",
+ "access.form.zerossl_eab_hmac_key.label": "ACME EAB HMAC Key",
+ "access.form.zerossl_eab_hmac_key.placeholder": "请输入 ACME EAB HMAC Key",
+ "access.form.zerossl_eab_hmac_key.tooltip": "这是什么?请参阅 https://zerossl.com/documentation/acme/"
}
diff --git a/ui/src/i18n/locales/zh/nls.common.json b/ui/src/i18n/locales/zh/nls.common.json
index 7e9b9036..fe3a9e06 100644
--- a/ui/src/i18n/locales/zh/nls.common.json
+++ b/ui/src/i18n/locales/zh/nls.common.json
@@ -16,6 +16,7 @@
"common.text.operation_succeeded": "操作成功",
"common.text.operation_failed": "操作失败",
"common.text.request_error": "请求错误",
+ "common.text.search": "搜索 ……",
"common.menu.theme": "切换主题",
"common.menu.locale": "切换语言",
@@ -38,7 +39,11 @@
"common.notifier.bark": "Bark",
"common.notifier.dingtalk": "钉钉",
"common.notifier.email": "邮件",
+ "common.notifier.gotify": "Gotify",
"common.notifier.lark": "飞书",
+ "common.notifier.mattermost": "Mattermost",
+ "common.notifier.pushover": "Pushover",
+ "common.notifier.pushplus": "PushPlus推送加",
"common.notifier.serverchan": "Server 酱",
"common.notifier.telegram": "Telegram",
"common.notifier.webhook": "Webhook",
diff --git a/ui/src/i18n/locales/zh/nls.provider.json b/ui/src/i18n/locales/zh/nls.provider.json
index 62806a9d..5626426e 100644
--- a/ui/src/i18n/locales/zh/nls.provider.json
+++ b/ui/src/i18n/locales/zh/nls.provider.json
@@ -5,14 +5,16 @@
"provider.acmehttpreq": "Http Request (ACME Proxy)",
"provider.aliyun": "阿里云",
"provider.aliyun.alb": "阿里云 - 应用型负载均衡 ALB",
- "provider.aliyun.cas": "阿里云 - 上传到数字证书管理服务 CAS",
+ "provider.aliyun.apigw": "阿里云 - API 网关",
+ "provider.aliyun.cas_upload": "阿里云 - 上传到数字证书管理服务 CAS",
"provider.aliyun.cas_deploy": "阿里云 - 通过数字证书管理服务 CAS 创建部署任务",
"provider.aliyun.cdn": "阿里云 - 内容分发网络 CDN",
"provider.aliyun.clb": "阿里云 - 传统型负载均衡 CLB",
"provider.aliyun.dcdn": "阿里云 - 全站加速 DCDN",
+ "provider.aliyun.ddos": "阿里云 - DDoS 高防",
+ "provider.aliyun.dns": "阿里云 - 云解析 DNS",
"provider.aliyun.esa": "阿里云 - 边缘安全加速 ESA",
"provider.aliyun.fc": "阿里云 - 函数计算 FC",
- "provider.aliyun.dns": "阿里云 - 云解析 DNS",
"provider.aliyun.live": "阿里云 - 视频直播 Live",
"provider.aliyun.nlb": "阿里云 - 网络型负载均衡 NLB",
"provider.aliyun.oss": "阿里云 - 对象存储 OSS",
@@ -31,15 +33,18 @@
"provider.baiducloud.appblb": "百度智能云 - 应用型负载均衡 BLB",
"provider.baiducloud.blb": "百度智能云 - 普通型负载均衡 BLB",
"provider.baiducloud.cdn": "百度智能云 - 内容分发网络 CDN",
- "provider.baiducloud.cert": "百度智能云 - 上传到 SSL 证书服务",
+ "provider.baiducloud.cert_upload": "百度智能云 - 上传到 SSL 证书服务",
"provider.baiducloud.dns": "百度智能云 - 智能云解析 DNS",
"provider.baishan": "白山云",
"provider.baishan.cdn": "白山云 - 内容分发网络 CDN",
"provider.baotapanel": "宝塔面板",
"provider.baotapanel.console": "宝塔面板 - 面板",
"provider.baotapanel.site": "宝塔面板 - 网站",
+ "provider.bunny": "Bunny",
+ "provider.bunny.cdn": "Bunny - 内容分发网络 CDN",
"provider.byteplus": "BytePlus",
"provider.byteplus.cdn": "BytePlus - 内容分发网络 CDN",
+ "provider.buypass": "Buypass AS",
"provider.cachefly": "CacheFly",
"provider.cdnfly": "Cdnfly",
"provider.cloudflare": "Cloudflare",
@@ -48,24 +53,26 @@
"provider.ctcccloud": "联通云",
"provider.cucccloud": "天翼云",
"provider.desec": "deSEC",
+ "provider.dingtalkbot": "钉钉群机器人",
"provider.dnsla": "DNS.LA",
"provider.dogecloud": "多吉云",
"provider.dogecloud.cdn": "多吉云 - 内容分发网络 CDN",
"provider.dynv6": "dynv6",
"provider.edgio": "Edgio",
"provider.edgio.applications": "Edgio - Applications",
+ "provider.email": "邮件",
"provider.fastly": "Fastly",
"provider.gcore": "Gcore",
"provider.gcore.cdn": "Gcore - 内容分发网络 CDN",
"provider.gname": "GNAME",
"provider.godaddy": "GoDaddy",
"provider.goedge": "GoEdge",
- "provider.goedge.cdn": "GoEdge - 内容分发网络 CDN",
+ "provider.googletrustservices": "Google Trust Services",
"provider.huaweicloud": "华为云",
"provider.huaweicloud.cdn": "华为云 - 内容分发网络 CDN",
"provider.huaweicloud.dns": "华为云 - 云解析 DNS",
"provider.huaweicloud.elb": "华为云 - 弹性负载均衡 ELB",
- "provider.huaweicloud.scm": "华为云 - 上传到云证书管理服务 SCM",
+ "provider.huaweicloud.scm_upload": "华为云 - 上传到云证书管理服务 SCM",
"provider.huaweicloud.waf": "华为云 - Web 应用防火墙 WAF",
"provider.jdcloud": "京东云",
"provider.jdcloud.alb": "京东云 - 应用负载均衡 ALB",
@@ -75,20 +82,28 @@
"provider.jdcloud.vod": "京东云 - 视频点播",
"provider.kubernetes": "Kubernetes",
"provider.kubernetes.secret": "Kubernetes - Secret",
+ "provider.larkbot": "飞书群机器人",
+ "provider.letsencrypt": "Let's Encrypt",
+ "provider.letsencryptstaging": "Let's Encrypt 测试环境",
"provider.local": "本地部署",
+ "provider.mattermost": "Mattermost",
"provider.namecheap": "Namecheap",
"provider.namedotcom": "Name.com",
"provider.namesilo": "NameSilo",
- "provider.ns1": "NS1(IBM NS1 Connect)",
+ "provider.ns1": "NS1 (IBM NS1 Connect)",
"provider.porkbun": "Porkbun",
"provider.powerdns": "PowerDNS",
+ "provider.proxmoxve": "Proxmox VE",
"provider.qiniu": "七牛云",
"provider.qiniu.cdn": "七牛云 - 内容分发网络 CDN",
"provider.qiniu.kodo": "七牛云 - 对象存储 Kodo",
"provider.qiniu.pili": "七牛云 - 视频直播 Pili",
"provider.rainyun": "雨云",
+ "provider.rainyun.rcdn": "雨云 - 雨盾 CDN",
"provider.safeline": "雷池",
"provider.ssh": "SSH 部署",
+ "provider.sslcom": "SSL.com",
+ "provider.telegram": "Telegram",
"provider.tencentcloud": "腾讯云",
"provider.tencentcloud.cdn": "腾讯云 - 内容分发网络 CDN",
"provider.tencentcloud.clb": "腾讯云 - 负载均衡 CLB",
@@ -98,7 +113,7 @@
"provider.tencentcloud.ecdn": "腾讯云 - 全站加速网络 ECDN",
"provider.tencentcloud.eo": "腾讯云 - 边缘安全加速平台 EdgeOne",
"provider.tencentcloud.scf": "腾讯云 - 云函数 SCF",
- "provider.tencentcloud.ssl": "腾讯云 - 上传到 SSL 证书服务",
+ "provider.tencentcloud.ssl_upload": "腾讯云 - 上传到 SSL 证书服务",
"provider.tencentcloud.ssl_deploy": "腾讯云 - 通过 SSL 证书服务创建部署任务",
"provider.tencentcloud.vod": "腾讯云 - 云点播 VOD",
"provider.tencentcloud.waf": "腾讯云 - Web 应用防火墙 WAF",
@@ -107,20 +122,24 @@
"provider.ucloud.us3": "优刻得 - 对象存储 US3",
"provider.upyun": "又拍云",
"provider.upyun.cdn": "又拍云 - 云分发 CDN",
- "provider.upyun.file": "又拍云 - 云存储",
+ "provider.upyun.file": "又拍云 - 云存储 USS",
"provider.vercel": "Vercel",
"provider.volcengine": "火山引擎",
"provider.volcengine.alb": "火山引擎 - 应用型负载均衡 ALB",
"provider.volcengine.cdn": "火山引擎 - 内容分发网络 CDN",
- "provider.volcengine.certcenter": "火山引擎 - 上传到证书中心",
+ "provider.volcengine.certcenter_upload": "火山引擎 - 上传到证书中心",
"provider.volcengine.clb": "火山引擎 - 负载均衡 CLB",
"provider.volcengine.dcdn": "火山引擎 - 全站加速 DCDN",
"provider.volcengine.dns": "火山引擎 - 云解析 DNS",
"provider.volcengine.imagex": "火山引擎 - 图片服务 ImageX",
"provider.volcengine.live": "火山引擎 - 视频直播 Live",
"provider.volcengine.tos": "火山引擎 - 对象存储 TOS",
+ "provider.wangsu": "网宿云",
+ "provider.wangsu.cdnpro": "网宿云 - CDN Pro",
"provider.webhook": "Webhook",
+ "provider.wecombot": "企业微信群机器人",
"provider.westcn": "西部数码",
+ "provider.zerossl": "ZeroSSL",
"provider.category.all": "全部",
"provider.category.cdn": "CDN",
@@ -130,5 +149,8 @@
"provider.category.av": "音视频",
"provider.category.serverless": "Serverless",
"provider.category.website": "网站托管",
- "provider.category.other": "其他"
+ "provider.category.nas": "NAS",
+ "provider.category.other": "其他",
+
+ "provider.default_ca_provider.label": "(默认)不指定,跟随全局设置"
}
diff --git a/ui/src/i18n/locales/zh/nls.settings.json b/ui/src/i18n/locales/zh/nls.settings.json
index 0c51d33e..cde8ec0f 100644
--- a/ui/src/i18n/locales/zh/nls.settings.json
+++ b/ui/src/i18n/locales/zh/nls.settings.json
@@ -53,14 +53,43 @@
"settings.notification.channel.form.email_sender_address.placeholder": "请输入发送邮箱地址",
"settings.notification.channel.form.email_receiver_address.label": "接收邮箱地址",
"settings.notification.channel.form.email_receiver_address.placeholder": "请输入接收邮箱地址",
+ "settings.notification.channel.form.gotify_url.label": "服务地址",
+ "settings.notification.channel.form.gotify_url.placeholder": "请输入服务地址",
+ "settings.notification.channel.form.gotify_url.tooltip": "这是什么?请参阅 https://gotify.net/docs/pushmsg
示例: https://gotify.exmaple.com,不要包含末尾的'/'。",
+ "settings.notification.channel.form.gotify_token.label": "应用 Token",
+ "settings.notification.channel.form.gotify_token.placeholder": "请输入应用 Token",
+ "settings.notification.channel.form.gotify_token.tooltip": "这是什么?请参阅 https://gotify.net/docs/pushmsg",
+ "settings.notification.channel.form.gotify_priority.label": "消息优先级(可选)",
+ "settings.notification.channel.form.gotify_priority.placeholder": "请输入消息优先级",
+ "settings.notification.channel.form.gotify_priority.tooltip": "这是什么?请参阅 https://gotify.net/docs/pushmsg、https://github.com/gotify/android/issues/18#issuecomment-437403888",
+ "settings.notification.channel.form.gotify_priority.error.gte0": "消息优先级需要大于等于 0",
"settings.notification.channel.form.lark_webhook_url.label": "机器人 Webhook 地址",
"settings.notification.channel.form.lark_webhook_url.placeholder": "请输入机器人 Webhook 地址",
"settings.notification.channel.form.lark_webhook_url.tooltip": "这是什么?请参阅 https://www.feishu.cn/hc/zh-CN/articles/807992406756",
+ "settings.notification.channel.form.mattermost_server_url.label": "服务地址",
+ "settings.notification.channel.form.mattermost_server_url.placeholder": "请输入服务地址",
+ "settings.notification.channel.form.mattermost_server_url.tooltip": "示例: https://exmaple.com,需要包含协议但不要包含末尾的'/'",
+ "settings.notification.channel.form.mattermost_channel_id.label": "频道ID",
+ "settings.notification.channel.form.mattermost_channel_id.placeholder": "请输入频道ID",
+ "settings.notification.channel.form.mattermost_channel_id.tooltip": "频道ID怎么获取?从左侧边栏中选择目标频道,点击顶部的频道名称,选择“频道详情”,即可在弹出页面中直接看到频道ID",
+ "settings.notification.channel.form.mattermost_username.label": "用户名",
+ "settings.notification.channel.form.mattermost_username.placeholder": "请输入用户名",
+ "settings.notification.channel.form.mattermost_password.label": "密码",
+ "settings.notification.channel.form.mattermost_password.placeholder": "请输入密码",
+ "settings.notification.channel.form.pushover_token.placeholder": "请输入应用 API Token",
+ "settings.notification.channel.form.pushover_token.label": "应用 API Token",
+ "settings.notification.channel.form.pushover_token.tooltip": "这是什么?请参阅 https://pushover.net/api#registration",
+ "settings.notification.channel.form.pushover_user.placeholder": "请输入用户/分组 Key",
+ "settings.notification.channel.form.pushover_user.label": "用户/分组 Key",
+ "settings.notification.channel.form.pushover_user.tooltip": "这是什么?请参阅 https://pushover.net/api#identifiers",
+ "settings.notification.channel.form.pushplus_token.label": "Token",
+ "settings.notification.channel.form.pushplus_token.placeholder": "请输入 Token",
+ "settings.notification.channel.form.pushplus_token.tooltip": "这是什么?请参阅 https://www.pushplus.plus/push1.html",
"settings.notification.channel.form.serverchan_url.label": "服务器地址",
"settings.notification.channel.form.serverchan_url.placeholder": "请输入服务器地址(形如: https://sctapi.ftqq.com/*****.send)",
"settings.notification.channel.form.serverchan_url.tooltip": "这是什么?请参阅 https://sct.ftqq.com/forward",
"settings.notification.channel.form.telegram_api_token.label": "机器人 API Token",
- "settings.notification.channel.form.telegram_api_token.placeholder": "请输入机器人 API token",
+ "settings.notification.channel.form.telegram_api_token.placeholder": "请输入机器人 API Token",
"settings.notification.channel.form.telegram_api_token.tooltip": "这是什么?请参阅 https://gist.github.com/nafiesl/4ad622f344cd1dc3bb1ecbe468ff9f8a",
"settings.notification.channel.form.telegram_chat_id.label": "会话 ID",
"settings.notification.channel.form.telegram_chat_id.placeholder": "请输入会话 ID",
@@ -72,25 +101,27 @@
"settings.notification.channel.form.wecom_webhook_url.tooltip": "这是什么?请参阅 https://open.work.weixin.qq.com/help2/pc/18401",
"settings.sslprovider.tab": "证书颁发机构",
- "settings.sslprovider.form.provider.label": "ACME 服务商",
- "settings.sslprovider.form.provider.option.letsencrypt.label": "Let's Encrypt",
- "settings.sslprovider.form.provider.option.letsencrypt_staging.label": "Let's Encrypt 测试环境",
- "settings.sslprovider.form.provider.option.zerossl.label": "ZeroSSL",
- "settings.sslprovider.form.provider.option.gts.label": "Google Trust Services",
+ "settings.sslprovider.form.provider.label": "ACME 服务商(全局)",
"settings.sslprovider.form.provider.alert": "注意:不同服务商所支持的证书有效期、证书算法、多域名数量上限、是否允许泛域名等可能不同,切换服务商后请注意检查已有工作流的配置是否需要调整。",
- "settings.sslprovider.form.letsencrypt_staging_alert": "测试环境比生产环境有更宽松的速率限制,可进行测试性部署。
点击下方链接了解更多:
https://letsencrypt.org/zh-cn/docs/staging-environment/",
+ "settings.sslprovider.form.letsencryptstaging_alert": "测试环境比生产环境有更宽松的速率限制,可进行测试性部署。
点击下方链接了解更多:
https://letsencrypt.org/zh-cn/docs/staging-environment/",
"settings.sslprovider.form.zerossl_eab_kid.label": "EAB KID",
"settings.sslprovider.form.zerossl_eab_kid.placeholder": "请输入 EAB KID",
"settings.sslprovider.form.zerossl_eab_kid.tooltip": "这是什么?请参阅 https://zerossl.com/documentation/acme/",
"settings.sslprovider.form.zerossl_eab_hmac_key.label": "EAB HMAC Key",
"settings.sslprovider.form.zerossl_eab_hmac_key.placeholder": "请输入 EAB HMAC Key",
"settings.sslprovider.form.zerossl_eab_hmac_key.tooltip": "这是什么?请参阅 https://zerossl.com/documentation/acme/",
- "settings.sslprovider.form.gts_eab_kid.label": "EAB KID",
- "settings.sslprovider.form.gts_eab_kid.placeholder": "请输入 EAB KID",
- "settings.sslprovider.form.gts_eab_kid.tooltip": "这是什么?请参阅 https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
- "settings.sslprovider.form.gts_eab_hmac_key.label": "EAB HMAC Key",
- "settings.sslprovider.form.gts_eab_hmac_key.placeholder": "请输入 EAB HMAC Key",
- "settings.sslprovider.form.gts_eab_hmac_key.tooltip": "这是什么?请参阅 https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
+ "settings.sslprovider.form.googletrustservices_eab_kid.label": "EAB KID",
+ "settings.sslprovider.form.googletrustservices_eab_kid.placeholder": "请输入 EAB KID",
+ "settings.sslprovider.form.googletrustservices_eab_kid.tooltip": "这是什么?请参阅 https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
+ "settings.sslprovider.form.googletrustservices_eab_hmac_key.label": "EAB HMAC Key",
+ "settings.sslprovider.form.googletrustservices_eab_hmac_key.placeholder": "请输入 EAB HMAC Key",
+ "settings.sslprovider.form.googletrustservices_eab_hmac_key.tooltip": "这是什么?请参阅 https://cloud.google.com/certificate-manager/docs/public-ca-tutorial",
+ "settings.sslprovider.form.sslcom_eab_kid.label": "EAB KID",
+ "settings.sslprovider.form.sslcom_eab_kid.placeholder": "请输入 EAB KID",
+ "settings.sslprovider.form.sslcom_eab_kid.tooltip": "这是什么?请参阅 https://www.ssl.com/how-to/generate-acme-credentials-for-reseller-customers/",
+ "settings.sslprovider.form.sslcom_eab_hmac_key.label": "EAB HMAC Key",
+ "settings.sslprovider.form.sslcom_eab_hmac_key.placeholder": "请输入 EAB HMAC Key",
+ "settings.sslprovider.form.sslcom_eab_hmac_key.tooltip": "这是什么?请参阅 https://www.ssl.com/how-to/generate-acme-credentials-for-reseller-customers/",
"settings.persistence.tab": "数据持久化",
"settings.persistence.form.workflow_runs_max_days.label": "工作流执行历史保留天数",
diff --git a/ui/src/i18n/locales/zh/nls.workflow.nodes.json b/ui/src/i18n/locales/zh/nls.workflow.nodes.json
index efab84a2..3f38a490 100644
--- a/ui/src/i18n/locales/zh/nls.workflow.nodes.json
+++ b/ui/src/i18n/locales/zh/nls.workflow.nodes.json
@@ -39,6 +39,9 @@
"workflow_node.apply.form.provider_access.placeholder": "请选择 DNS 提供商授权",
"workflow_node.apply.form.provider_access.tooltip": "用于 ACME DNS-01 质询时操作域名解析记录,注意与部署阶段所需的主机提供商相区分。",
"workflow_node.apply.form.provider_access.button": "新建",
+ "workflow_node.apply.form.aliyun_esa_region.label": "阿里云 ESA 服务地域",
+ "workflow_node.apply.form.aliyun_esa_region.placeholder": "请输入阿里云 ESA 服务地域(例如:cn-hangzhou)",
+ "workflow_node.apply.form.aliyun_esa_region.tooltip": "这是什么?请参阅 https://help.aliyun.com/zh/edge-security-acceleration/esa/api-esa-2024-09-10-endpoint",
"workflow_node.apply.form.aws_route53_region.label": "AWS Route53 服务区域",
"workflow_node.apply.form.aws_route53_region.placeholder": "请输入 AWS Route53 服务区域(例如:us-east-1)",
"workflow_node.apply.form.aws_route53_region.tooltip": "这是什么?请参阅 https://docs.aws.amazon.com/zh_cn/general/latest/gr/rande.html#regional-endpoints",
@@ -54,31 +57,42 @@
"workflow_node.apply.form.tencentcloud_eo_zone_id.label": "腾讯云 EdgeOne 站点 ID",
"workflow_node.apply.form.tencentcloud_eo_zone_id.placeholder": "请输入腾讯云 EdgeOne 站点 ID",
"workflow_node.apply.form.tencentcloud_eo_zone_id.tooltip": "这是什么?请参阅 https://console.cloud.tencent.com/edgeone",
+ "workflow_node.apply.form.certificate_config.label": "证书设置",
+ "workflow_node.apply.form.ca_provider.label": "证书颁发机构(可选)",
+ "workflow_node.apply.form.ca_provider.placeholder": "请选择证书颁发机构",
+ "workflow_node.apply.form.ca_provider.button": "设置",
+ "workflow_node.apply.form.ca_provider_access.label": "证书颁发机构授权",
+ "workflow_node.apply.form.ca_provider_access.placeholder": "请选择证书颁发机构授权",
+ "workflow_node.apply.form.ca_provider_access.button": "新建",
+ "workflow_node.apply.form.key_algorithm.label": "证书算法",
+ "workflow_node.apply.form.key_algorithm.placeholder": "请选择证书算法",
"workflow_node.apply.form.advanced_config.label": "高级设置",
- "workflow_node.apply.form.key_algorithm.label": "数字证书算法",
- "workflow_node.apply.form.key_algorithm.placeholder": "请选择数字证书算法",
"workflow_node.apply.form.nameservers.label": "DNS 递归服务器(可选)",
"workflow_node.apply.form.nameservers.placeholder": "请输入 DNS 递归服务器(多个值请用半角分号隔开)",
- "workflow_node.apply.form.nameservers.tooltip": "在 ACME DNS-01 质询时使用自定义的 DNS 递归服务器。如果你不了解该选项的用途,保持默认即可。点此了解更多。",
+ "workflow_node.apply.form.nameservers.tooltip": "表示在 ACME DNS-01 质询时使用自定义的 DNS 递归服务器。如果你不了解该选项的用途,保持默认即可。点此了解更多。",
"workflow_node.apply.form.nameservers.multiple_input_modal.title": "修改 DNS 递归服务器",
"workflow_node.apply.form.nameservers.multiple_input_modal.placeholder": "请输入 DNS 递归服务器",
+ "workflow_node.apply.form.dns_propagation_wait.label": "DNS 传播等待时间(可选)",
+ "workflow_node.apply.form.dns_propagation_wait.placeholder": "请输入 DNS 传播等待时间",
+ "workflow_node.apply.form.dns_propagation_wait.unit": "秒",
+ "workflow_node.apply.form.dns_propagation_wait.tooltip": "表示在 ACME DNS-01 质询时 DNS 传播的等待时间。如果你不了解此选项的用途,保持默认即可。",
"workflow_node.apply.form.dns_propagation_timeout.label": "DNS 传播检查超时时间(可选)",
"workflow_node.apply.form.dns_propagation_timeout.placeholder": "请输入 DNS 传播检查超时时间",
"workflow_node.apply.form.dns_propagation_timeout.unit": "秒",
- "workflow_node.apply.form.dns_propagation_timeout.tooltip": "在 ACME DNS-01 质询时等待 DNS 传播检查的最长时间。如果你不了解此选项的用途,保持默认即可。
不填写时,将使用提供商提供的默认值。",
- "workflow_node.apply.form.dns_ttl.label": "DNS 解析 TTL(可选)",
- "workflow_node.apply.form.dns_ttl.placeholder": "请输入 DNS 解析 TTL",
+ "workflow_node.apply.form.dns_propagation_timeout.tooltip": "表示在 ACME DNS-01 质询时 DNS 传播检查的超时时间。如果你不了解此选项的用途,保持默认即可。
不填写时,将使用提供商提供的默认值。",
+ "workflow_node.apply.form.dns_ttl.label": "DNS 解析记录 TTL(可选)",
+ "workflow_node.apply.form.dns_ttl.placeholder": "请输入 DNS 解析记录 TTL",
"workflow_node.apply.form.dns_ttl.unit": "秒",
- "workflow_node.apply.form.dns_ttl.tooltip": "在 ACME DNS-01 质询时 DNS 解析记录的 TTL。如果你不了解此选项的用途,保持默认即可。
不填写时,将使用提供商提供的默认值。",
- "workflow_node.apply.form.disable_follow_cname.label": "关闭 CNAME 跟随",
- "workflow_node.apply.form.disable_follow_cname.tooltip": "在 ACME DNS-01 质询时是否关闭 CNAME 跟随。如果你不了解该选项的用途,保持默认即可。点此了解更多。",
- "workflow_node.apply.form.disable_ari.label": "关闭 ARI 续期",
- "workflow_node.apply.form.disable_ari.tooltip": "在 ACME 证书续期时是否关闭 ARI(ACME Renewal Information)。如果你不了解该选项的用途,保持默认即可。点此了解更多。",
+ "workflow_node.apply.form.dns_ttl.tooltip": "表示在 ACME DNS-01 质询时 DNS 解析记录的 TTL。如果你不了解此选项的用途,保持默认即可。
不填写时,将使用提供商提供的默认值。",
+ "workflow_node.apply.form.disable_follow_cname.label": "阻止 CNAME 跟随",
+ "workflow_node.apply.form.disable_follow_cname.tooltip": "在 ACME DNS-01 质询时是否阻止 CNAME 跟随。如果你不了解该选项的用途,保持默认即可。点此了解更多。",
+ "workflow_node.apply.form.disable_ari.label": "阻止 ARI 续期",
+ "workflow_node.apply.form.disable_ari.tooltip": "在 ACME 证书续期时是否阻止 ARI(ACME Renewal Information)。如果你不了解该选项的用途,保持默认即可。点此了解更多。",
"workflow_node.apply.form.strategy_config.label": "执行策略",
- "workflow_node.apply.form.skip_before_expiry_days.label": "续期间隔",
+ "workflow_node.apply.form.skip_before_expiry_days.label": "重复申请",
"workflow_node.apply.form.skip_before_expiry_days.placeholder": "请输入续期间隔",
- "workflow_node.apply.form.skip_before_expiry_days.prefix": "当上次签发的证书距到期时间超过",
- "workflow_node.apply.form.skip_before_expiry_days.suffix": "时,跳过重新申请。",
+ "workflow_node.apply.form.skip_before_expiry_days.prefix": "当上次签发的证书剩余有效期大于",
+ "workflow_node.apply.form.skip_before_expiry_days.suffix": "时,再次执行工作流时跳过此申请节点。",
"workflow_node.apply.form.skip_before_expiry_days.unit": "天",
"workflow_node.apply.form.skip_before_expiry_days.tooltip": "注意不要超过颁发的证书最大有效期,否则证书可能永远不会续期。",
@@ -88,17 +102,24 @@
"workflow_node.deploy.form.provider.placeholder": "请选择部署目标",
"workflow_node.deploy.form.provider_access.label": "主机提供商授权",
"workflow_node.deploy.form.provider_access.placeholder": "请选择主机提供商授权",
- "workflow_node.deploy.form.provider_access.tooltip": "用于部署证书,注意与申请阶段所需的 DNS 提供商相区分。",
+ "workflow_node.deploy.form.provider_access.tooltip": "用于部署证书时调用相关 API,注意与申请阶段所需的 DNS 提供商相区分。",
"workflow_node.deploy.form.provider_access.button": "新建",
- "workflow_node.deploy.form.provider_access.guide_for_local": "小贴士:由于表单限制,你同样需要为本地部署选择一个授权 —— 即使它是空白的。
请注意,如果你使用 Docker 安装 Certimate,“本地部署”将会部署到容器内而非宿主机上。",
+ "workflow_node.deploy.form.provider_access.guide_for_local": "小贴士:如果你正在使用 Docker 运行 Certimate,“本地”指的是容器内而非宿主机。",
"workflow_node.deploy.form.certificate.label": "待部署证书",
"workflow_node.deploy.form.certificate.placeholder": "请选择待部署证书",
"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_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.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_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.aliyun_alb_resource_type.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS/QUIC 监听的证书",
@@ -114,7 +135,23 @@
"workflow_node.deploy.form.aliyun_alb_listener_id.tooltip": "这是什么?请参阅 https://slb.console.aliyun.com/alb",
"workflow_node.deploy.form.aliyun_alb_snidomain.label": "阿里云 ALB 扩展域名(可选)",
"workflow_node.deploy.form.aliyun_alb_snidomain.placeholder": "请输入阿里云 ALB 扩展域名(支持泛域名)",
- "workflow_node.deploy.form.aliyun_alb_snidomain.tooltip": "这是什么?请参阅 https://slb.console.aliyun.com/alb
不填写时,将替换监听器的默认证书。",
+ "workflow_node.deploy.form.aliyun_alb_snidomain.tooltip": "这是什么?请参阅 https://slb.console.aliyun.com/alb
不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
+ "workflow_node.deploy.form.aliyun_apigw_service_type.label": "阿里云 API 网关服务类型",
+ "workflow_node.deploy.form.aliyun_apigw_service_type.placeholder": "请选择阿里云 API 网关服务类型",
+ "workflow_node.deploy.form.aliyun_apigw_service_type.option.cloudnative.label": "云原生 API 网关",
+ "workflow_node.deploy.form.aliyun_apigw_service_type.option.traditional.label": "原 API 网关",
+ "workflow_node.deploy.form.aliyun_apigw_region.label": "阿里云 API 网关服务地域",
+ "workflow_node.deploy.form.aliyun_apigw_region.placeholder": "请输入阿里云 API 网关地域(例如:cn-hangzhou)",
+ "workflow_node.deploy.form.aliyun_apigw_region.tooltip": "这是什么?请参阅 https://help.aliyun.com/zh/api-gateway/cloud-native-api-gateway/product-overview/regions",
+ "workflow_node.deploy.form.aliyun_apigw_gateway_id.label": "阿里云 API 网关 ID",
+ "workflow_node.deploy.form.aliyun_apigw_gateway_id.placeholder": "请输入阿里云 API 网关 ID",
+ "workflow_node.deploy.form.aliyun_apigw_gateway_id.tooltip": "这是什么?请参阅 https://apigw.console.aliyun.com",
+ "workflow_node.deploy.form.aliyun_apigw_group_id.label": "阿里云 API 分组 ID",
+ "workflow_node.deploy.form.aliyun_apigw_group_id.placeholder": "请输入阿里云 API 分组 ID",
+ "workflow_node.deploy.form.aliyun_apigw_group_id.tooltip": "这是什么?请参阅 https://apigateway.console.aliyun.com",
+ "workflow_node.deploy.form.aliyun_apigw_domain.label": "阿里云 API 网关自定义域名",
+ "workflow_node.deploy.form.aliyun_apigw_domain.placeholder": "请输入阿里云 API 网关自定义域名(支持泛域名)",
+ "workflow_node.deploy.form.aliyun_apigw_domain.tooltip": "这是什么?请参阅 https://apigw.console.aliyun.com 或 https://apigateway.console.aliyun.com",
"workflow_node.deploy.form.aliyun_cas_region.label": "阿里云 CAS 服务地域",
"workflow_node.deploy.form.aliyun_cas_region.placeholder": "请输入阿里云 CAS 服务地域(例如:cn-hangzhou)",
"workflow_node.deploy.form.aliyun_cas_region.tooltip": "这是什么?请参阅 https://help.aliyun.com/zh/ssl-certificate/developer-reference/endpoints",
@@ -149,13 +186,19 @@
"workflow_node.deploy.form.aliyun_clb_listener_port.tooltip": "这是什么?请参阅 https://slb.console.aliyun.com/clb",
"workflow_node.deploy.form.aliyun_clb_snidomain.label": "阿里云 CLB 扩展域名(可选)",
"workflow_node.deploy.form.aliyun_clb_snidomain.placeholder": "请输入阿里云 CLB 扩展域名(支持泛域名)",
- "workflow_node.deploy.form.aliyun_clb_snidomain.tooltip": "这是什么?请参阅 https://slb.console.aliyun.com/clb
不填写时,将替换监听器的默认证书。",
+ "workflow_node.deploy.form.aliyun_clb_snidomain.tooltip": "这是什么?请参阅 https://slb.console.aliyun.com/clb
不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
"workflow_node.deploy.form.aliyun_cdn_domain.label": "阿里云 CDN 加速域名",
"workflow_node.deploy.form.aliyun_cdn_domain.placeholder": "请输入阿里云 CDN 加速域名(支持泛域名)",
"workflow_node.deploy.form.aliyun_cdn_domain.tooltip": "这是什么?请参阅 https://cdn.console.aliyun.com",
"workflow_node.deploy.form.aliyun_dcdn_domain.label": "阿里云 DCDN 加速域名",
"workflow_node.deploy.form.aliyun_dcdn_domain.placeholder": "请输入阿里云 DCDN 加速域名(支持泛域名)",
"workflow_node.deploy.form.aliyun_dcdn_domain.tooltip": "这是什么?请参阅 https://dcdn.console.aliyun.com",
+ "workflow_node.deploy.form.aliyun_ddos_region.label": "阿里云 DDoS 高防服务地域",
+ "workflow_node.deploy.form.aliyun_ddos_region.placeholder": "请输入阿里云 DDoS 高防服务地域(例如:cn-hangzhou)",
+ "workflow_node.deploy.form.aliyun_ddos_region.tooltip": "这是什么?请参阅 https://help.aliyun.com/zh/anti-ddos/anti-ddos-pro-and-premium/developer-reference/api-ddoscoo-2020-01-01-endpoint",
+ "workflow_node.deploy.form.aliyun_ddos_domain.label": "阿里云 DDoS 高防网站域名",
+ "workflow_node.deploy.form.aliyun_ddos_domain.placeholder": "请输入阿里云 DDoS 高防网站域名(支持泛域名)",
+ "workflow_node.deploy.form.aliyun_ddos_domain.tooltip": "这是什么?请参阅 https://yundun.console.aliyun.com/?p=ddoscoo",
"workflow_node.deploy.form.aliyun_esa_region.label": "阿里云 ESA 服务地域",
"workflow_node.deploy.form.aliyun_esa_region.placeholder": "请输入阿里云 ESA 服务地域(例如:cn-hangzhou)",
"workflow_node.deploy.form.aliyun_esa_region.tooltip": "这是什么?请参阅 https://help.aliyun.com/zh/edge-security-acceleration/esa/api-esa-2024-09-10-endpoint",
@@ -214,7 +257,7 @@
"workflow_node.deploy.form.aliyun_waf_instance_id.tooltip": "这是什么?请参阅 https://waf.console.aliyun.com
仅支持 CNAME 接入。",
"workflow_node.deploy.form.aliyun_waf_domain.label": "阿里云 WAF 接入域名(可选)",
"workflow_node.deploy.form.aliyun_waf_domain.placeholder": "请输入阿里云 WAF 接入域名(支持泛域名)",
- "workflow_node.deploy.form.aliyun_waf_domain.tooltip": "这是什么?请参阅 waf.console.aliyun.com
不填写时,将替换实例的默认证书。",
+ "workflow_node.deploy.form.aliyun_waf_domain.tooltip": "这是什么?请参阅 waf.console.aliyun.com
不填写时,将替换实例的默认证书;否则,将替换扩展域名证书。",
"workflow_node.deploy.form.aws_acm_region.label": "AWS ACM 服务区域",
"workflow_node.deploy.form.aws_acm_region.placeholder": "请输入 AWS ACM 服务区域(例如:us-east-1)",
"workflow_node.deploy.form.aws_acm_region.tooltip": "这是什么?请参阅 https://docs.aws.amazon.com/zh_cn/general/latest/gr/rande.html#regional-endpoints",
@@ -227,6 +270,10 @@
"workflow_node.deploy.form.azure_keyvault_name.label": "Azure KeyVault 名称",
"workflow_node.deploy.form.azure_keyvault_name.placeholder": "请输入 Azure KeyVault 名称",
"workflow_node.deploy.form.azure_keyvault_name.tooltip": "这是什么?请参阅 https://learn.microsoft.com/zh-cn/azure/key-vault/general/about-keys-secrets-certificates",
+ "workflow_node.deploy.form.azure_keyvault_certificate_name.label": "Azure KeyVault 证书名称(可选)",
+ "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.option.loadbalancer.label": "替换指定负载均衡器下的全部 HTTPS/SSL 监听的证书",
@@ -242,7 +289,7 @@
"workflow_node.deploy.form.baiducloud_appblb_listener_port.tooltip": "这是什么?请参阅 https://console.bce.baidu.com/blb/#/appblb/list",
"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": "这是什么?请参阅 https://console.bce.baidu.com/blb/#/appblb/list
不填写时,将替换监听器的默认证书。",
+ "workflow_node.deploy.form.baiducloud_appblb_snidomain.tooltip": "这是什么?请参阅 https://console.bce.baidu.com/blb/#/appblb/list
不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
"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 监听的证书",
@@ -258,14 +305,17 @@
"workflow_node.deploy.form.baiducloud_blb_listener_port.tooltip": "这是什么?请参阅 https://console.bce.baidu.com/blb/#/blb/list",
"workflow_node.deploy.form.baiducloud_blb_snidomain.label": "百度智能云 BLB 扩展域名(可选)",
"workflow_node.deploy.form.baiducloud_blb_snidomain.placeholder": "请输入百度智能云 BLB 扩展域名(支持泛域名)",
- "workflow_node.deploy.form.baiducloud_blb_snidomain.tooltip": "这是什么?请参阅 https://console.bce.baidu.com/blb/#/blb/list
不填写时,将替换监听器的默认证书。",
+ "workflow_node.deploy.form.baiducloud_blb_snidomain.tooltip": "这是什么?请参阅 https://console.bce.baidu.com/blb/#/blb/list
不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
"workflow_node.deploy.form.baiducloud_cdn_domain.label": "百度智能云 CDN 加速域名",
"workflow_node.deploy.form.baiducloud_cdn_domain.placeholder": "请输入百度智能云 CDN 加速域名(支持泛域名)",
"workflow_node.deploy.form.baiducloud_cdn_domain.tooltip": "这是什么?请参阅 https://console.bce.baidu.com/cdn",
"workflow_node.deploy.form.baishan_cdn_domain.label": "白山云 CDN 加速域名",
"workflow_node.deploy.form.baishan_cdn_domain.placeholder": "请输入白山云 CDN 加速域名(支持泛域名)",
"workflow_node.deploy.form.baishan_cdn_domain.tooltip": "这是什么?请参阅 https://cdnx.console.baishan.com",
- "workflow_node.deploy.form.baotapanel_console_auto_restart.label": "部署后自动重启面板服务",
+ "workflow_node.deploy.form.baishan_cdn_certificate_id.label": "白山云 CDN 原证书 ID(可选)",
+ "workflow_node.deploy.form.baishan_cdn_certificate_id.placeholder": "请输入白山云 CDN 原证书 ID",
+ "workflow_node.deploy.form.baishan_cdn_certificate_id.tooltip": "这是什么?请参阅 https://cdnx.console.baishan.com/#/cdn/cert
不填写时,将上传新证书;否则,将替换原证书。",
+ "workflow_node.deploy.form.baotapanel_console_auto_restart.label": "部署后自动重启 1Panel 服务",
"workflow_node.deploy.form.baotapanel_site_type.label": "宝塔面板网站类型",
"workflow_node.deploy.form.baotapanel_site_type.placeholder": "请选择宝塔面板网站类型",
"workflow_node.deploy.form.baotapanel_site_type.option.php.label": "PHP",
@@ -279,6 +329,12 @@
"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.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": "这是什么?请参阅 https://dash.bunny.net/cdn",
+ "workflow_node.deploy.form.bunny_cdn_hostname.label": "Bunny CDN 主机名",
+ "workflow_node.deploy.form.bunny_cdn_hostname.placeholder": "请输入 Bunny CDN 主机名",
+ "workflow_node.deploy.form.bunny_cdn_hostname.tooltip": "这是什么?请参阅 https://dash.bunny.net/cdn",
"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": "这是什么?请参阅 https://console.byteplus.com/cdn",
@@ -299,6 +355,11 @@
"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": "这是什么?请参阅 https://cdn.gcore.com/resources/list",
+ "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.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": "这是什么?请参阅 https://console.huaweicloud.com/apiexplorer/#/endpoint",
@@ -351,7 +412,7 @@
"workflow_node.deploy.form.jdcloud_alb_listener_id.tooltip": "这是什么?请参阅 https://cns-console.jdcloud.com/host/loadBalance/list",
"workflow_node.deploy.form.jdcloud_alb_snidomain.label": "京东云 ALB 扩展域名(可选)",
"workflow_node.deploy.form.jdcloud_alb_snidomain.placeholder": "请输入京东云 ALB 扩展域名(支持泛域名)",
- "workflow_node.deploy.form.jdcloud_alb_snidomain.tooltip": "这是什么?请参阅 https://cns-console.jdcloud.com/host/loadBalance/list
不填写时,将替换监听器的默认证书。",
+ "workflow_node.deploy.form.jdcloud_alb_snidomain.tooltip": "这是什么?请参阅 https://cns-console.jdcloud.com/host/loadBalance/list
不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
"workflow_node.deploy.form.jdcloud_cdn_domain.label": "京东云 CDN 加速域名",
"workflow_node.deploy.form.jdcloud_cdn_domain.placeholder": "请输入京东云 CDN 加速域名(支持泛域名)",
"workflow_node.deploy.form.jdcloud_cdn_domain.tooltip": "这是什么?请参阅 https://cdn-console.jdcloud.com/",
@@ -409,11 +470,15 @@
"workflow_node.deploy.form.local_post_command.label": "后置命令(可选)",
"workflow_node.deploy.form.local_post_command.placeholder": "请输入保存文件后执行的命令",
"workflow_node.deploy.form.local_preset_scripts.button": "使用预设脚本",
- "workflow_node.deploy.form.local_preset_scripts.option.backup_files.label": "POSIX Bash - 备份原证书文件",
- "workflow_node.deploy.form.local_preset_scripts.option.reload_nginx.label": "POSIX Bash - 重启 nginx 进程",
- "workflow_node.deploy.form.local_preset_scripts.option.binding_iis.label": "PowerShell - 导入并绑定到 IIS(需管理员权限)",
- "workflow_node.deploy.form.local_preset_scripts.option.binding_netsh.label": "PowerShell - 导入并绑定到 netsh(需管理员权限)",
- "workflow_node.deploy.form.local_preset_scripts.option.binding_rdp.label": "PowerShell - 导入并绑定到 远程桌面连接(需管理员权限)",
+ "workflow_node.deploy.form.local_preset_scripts.option.sh_backup_files.label": "POSIX Bash - 备份原证书文件",
+ "workflow_node.deploy.form.local_preset_scripts.option.ps_backup_files.label": "PowerShell - 备份原证书文件",
+ "workflow_node.deploy.form.local_preset_scripts.option.sh_reload_nginx.label": "POSIX Bash - 重启 nginx 进程",
+ "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.proxmoxve_node_name.label": "Proxmox VE 集群节点名称",
+ "workflow_node.deploy.form.proxmoxve_node_name.placeholder": "请输入 Proxmox VE 集群节点名称",
+ "workflow_node.deploy.form.proxmoxve_auto_restart.label": "部署后自动重启 Proxmox VE 服务",
"workflow_node.deploy.form.qiniu_cdn_domain.label": "七牛云 CDN 加速域名",
"workflow_node.deploy.form.qiniu_cdn_domain.placeholder": "请输入七牛云 CDN 加速域名(支持泛域名)",
"workflow_node.deploy.form.qiniu_cdn_domain.tooltip": "这是什么?请参阅 https://portal.qiniu.com/cdn",
@@ -426,6 +491,12 @@
"workflow_node.deploy.form.qiniu_pili_domain.label": "七牛云视频直播流域名",
"workflow_node.deploy.form.qiniu_pili_domain.placeholder": "请输入七牛云视频直播流域名",
"workflow_node.deploy.form.qiniu_pili_domain.tooltip": "这是什么?请参阅 https://portal.qiniu.com/hub",
+ "workflow_node.deploy.form.rainyun_rcdn_instance_id.label": "雨云 RCDN 实例 ID",
+ "workflow_node.deploy.form.rainyun_rcdn_instance_id.placeholder": "请输入雨云 RCDN 实例 ID",
+ "workflow_node.deploy.form.rainyun_rcdn_instance_id.tooltip": "这是什么?请参阅 https://app.rainyun.com/apps/rcdn/list",
+ "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": "这是什么?请参阅 https://app.rainyun.com/apps/rcdn/list",
"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": "替换指定证书",
@@ -461,8 +532,12 @@
"workflow_node.deploy.form.ssh_post_command.label": "后置命令(可选)",
"workflow_node.deploy.form.ssh_post_command.placeholder": "请输入保存文件后执行的命令",
"workflow_node.deploy.form.ssh_preset_scripts.button": "使用预设脚本",
- "workflow_node.deploy.form.ssh_preset_scripts.option.backup_files.label": "POSIX Bash - 备份原证书文件",
- "workflow_node.deploy.form.ssh_preset_scripts.option.reload_nginx.label": "POSIX Bash - 重启 nginx 进程",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.sh_backup_files.label": "POSIX Bash - 备份原证书文件",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.ps_backup_files.label": "PowerShell - 备份原证书文件",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.sh_reload_nginx.label": "POSIX Bash - 重启 nginx 进程",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.ps_binding_iis.label": "PowerShell - 导入并绑定到 IIS",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.ps_binding_netsh.label": "PowerShell - 导入并绑定到 netsh",
+ "workflow_node.deploy.form.ssh_preset_scripts.option.ps_binding_rdp.label": "PowerShell - 导入并绑定到 RDP",
"workflow_node.deploy.form.ssh_use_scp.label": "回退使用 SCP",
"workflow_node.deploy.form.ssh_use_scp.tooltip": "如果你的远程服务器不支持 SFTP,请开启此选项回退为 SCP。",
"workflow_node.deploy.form.tencentcloud_cdn_domain.label": "腾讯云 CDN 加速域名",
@@ -485,7 +560,7 @@
"workflow_node.deploy.form.tencentcloud_clb_listener_id.tooltip": "这是什么?请参阅 https://console.cloud.tencent.com/clb",
"workflow_node.deploy.form.tencentcloud_clb_snidomain.label": "腾讯云 CLB SNI 域名(可选)",
"workflow_node.deploy.form.tencentcloud_clb_snidomain.placeholder": "请输入腾讯云 CLB SNI 域名",
- "workflow_node.deploy.form.tencentcloud_clb_snidomain.tooltip": "这是什么?请参阅 https://console.cloud.tencent.com/clb
不填写时,将替换监听器的默认证书。",
+ "workflow_node.deploy.form.tencentcloud_clb_snidomain.tooltip": "这是什么?请参阅 https://console.cloud.tencent.com/clb
不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
"workflow_node.deploy.form.tencentcloud_clb_ruledomain.label": "腾讯云 CLB 七层转发规则域名",
"workflow_node.deploy.form.tencentcloud_clb_ruledomain.placeholder": "请输入腾讯云 CLB 七层转发规则域名",
"workflow_node.deploy.form.tencentcloud_clb_ruledomain.tooltip": "这是什么?请参阅 https://console.cloud.tencent.com/clb",
@@ -580,7 +655,7 @@
"workflow_node.deploy.form.volcengine_alb_listener_id.tooltip": "这是什么?请参阅 https://console.volcengine.com/alb",
"workflow_node.deploy.form.volcengine_alb_snidomain.label": "火山引擎 ALB 扩展域名(可选)",
"workflow_node.deploy.form.volcengine_alb_snidomain.placeholder": "请输入火山引擎 ALB 扩展域名(支持泛域名)",
- "workflow_node.deploy.form.volcengine_alb_snidomain.tooltip": "这是什么?请参阅 https://console.volcengine.com/alb
不填写时,将替换监听器的默认证书。",
+ "workflow_node.deploy.form.volcengine_alb_snidomain.tooltip": "这是什么?请参阅 https://console.volcengine.com/alb
不填写时,将替换监听器的默认证书;否则,将替换扩展域名证书。",
"workflow_node.deploy.form.volcengine_cdn_domain.label": "火山引擎 CDN 加速域名",
"workflow_node.deploy.form.volcengine_cdn_domain.placeholder": "请输入火山引擎 CDN 加速域名(支持泛域名)",
"workflow_node.deploy.form.volcengine_cdn_domain.tooltip": "这是什么?请参阅 https://console.volcengine.com/cdn/homepage",
@@ -623,15 +698,28 @@
"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 https://console.volcengine.com/tos",
- "workflow_node.deploy.form.webhook_data.label": "Webhook 回调数据(JSON 格式)",
+ "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": "生产环境",
+ "workflow_node.deploy.form.wangsu_cdnpro_environment.option.staging.label": "演练环境",
+ "workflow_node.deploy.form.wangsu_cdnpro_domain.label": "网宿云 CDN Pro 加速域名",
+ "workflow_node.deploy.form.wangsu_cdnpro_domain.placeholder": "请输入网宿云 CDN Pro 加速域名(支持泛域名)",
+ "workflow_node.deploy.form.wangsu_cdnpro_domain.tooltip": "这是什么?请参阅 https://cdnpro.console.wangsu.com/v2/index/#/properties",
+ "workflow_node.deploy.form.wangsu_cdnpro_certificate_id.label": "网宿云 CDN Pro 原证书 ID(可选)",
+ "workflow_node.deploy.form.wangsu_cdnpro_certificate_id.placeholder": "请输入网宿云 CDN Pro 原证书 ID",
+ "workflow_node.deploy.form.wangsu_cdnpro_certificate_id.tooltip": "这是什么?请参阅 https://cdnpro.console.wangsu.com/v2/index/#/certificate
不填写时,将上传新证书;否则,将替换原证书。",
+ "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": "这是什么?请参阅 https://cdnpro.console.wangsu.com/v2/index/#/certificate",
+ "workflow_node.deploy.form.webhook_data.label": "Webhook 回调数据(可选)",
"workflow_node.deploy.form.webhook_data.placeholder": "请输入 Webhook 回调数据",
- "workflow_node.deploy.form.webhook_data.guide": "小贴士:回调数据是一个 JSON 格式的键值对。其中值支持模板变量,将在被发送到指定的 Webhook URL 时被替换为实际值;其他内容将保持原样。
支持的变量:
${DOMAIN}:证书的主域名(即 CommonName)
${DOMAINS}:证书的多域名列表(即 SubjectAltNames)
${CERTIFICATE}:证书文件 PEM 格式内容
${PRIVATE_KEY}:私钥文件 PEM 格式内容",
+ "workflow_node.deploy.form.webhook_data.tooltip": "不填写时,将使用所选部署目标授权的默认 Webhook 回调数据。",
+ "workflow_node.deploy.form.webhook_data.guide": "支持的变量:
- ${DOMAIN}:证书的主域名(即 CommonName)。
- ${DOMAINS}:证书的多域名列表(即 SubjectAltNames)。
- ${CERTIFICATE}:证书文件 PEM 格式内容。
- ${PRIVATE_KEY}:私钥文件 PEM 格式内容。
其他注意事项请前往授权管理页面查看。",
"workflow_node.deploy.form.webhook_data.errmsg.json_invalid": "请输入有效的 JSON 格式字符串",
- "workflow_node.deploy.form.webhook_data_preset.button": "使用预设模板",
"workflow_node.deploy.form.strategy_config.label": "执行策略",
"workflow_node.deploy.form.skip_on_last_succeeded.label": "重复部署",
- "workflow_node.deploy.form.skip_on_last_succeeded.prefix": "当上次部署已成功时",
- "workflow_node.deploy.form.skip_on_last_succeeded.suffix": "重新部署。",
+ "workflow_node.deploy.form.skip_on_last_succeeded.prefix": "当上次部署相同证书成功时,再次执行工作流时",
+ "workflow_node.deploy.form.skip_on_last_succeeded.suffix": "此部署节点。",
"workflow_node.deploy.form.skip_on_last_succeeded.switch.on": "跳过",
"workflow_node.deploy.form.skip_on_last_succeeded.switch.off": "不跳过",
@@ -650,9 +738,32 @@
"workflow_node.notify.form.subject.placeholder": "请输入通知主题",
"workflow_node.notify.form.message.label": "通知内容",
"workflow_node.notify.form.message.placeholder": "请输入通知内容",
- "workflow_node.notify.form.channel.label": "通知渠道",
+ "workflow_node.notify.form.channel.label": "通知渠道(已废弃,请使用「通知渠道授权」字段)",
"workflow_node.notify.form.channel.placeholder": "请选择通知渠道",
- "workflow_node.notify.form.channel.button": "去配置",
+ "workflow_node.notify.form.channel.button": "设置",
+ "workflow_node.notify.form.provider.label": "通知渠道",
+ "workflow_node.notify.form.provider.placeholder": "请选择通知渠道",
+ "workflow_node.notify.form.provider_access.label": "通知渠道授权",
+ "workflow_node.notify.form.provider_access.placeholder": "请选择通知渠道授权",
+ "workflow_node.notify.form.provider_access.button": "新建",
+ "workflow_node.notify.form.params_config.label": "参数设置",
+ "workflow_node.notify.form.email_sender_address.label": "发送邮箱地址(可选)",
+ "workflow_node.notify.form.email_sender_address.placeholder": "请输入发送邮箱地址以覆盖默认值",
+ "workflow_node.notify.form.email_sender_address.tooltip": "不填写时,将使用所选通知渠道授权的默认发送邮箱地址。",
+ "workflow_node.notify.form.email_receiver_address.label": "接收邮箱地址(可选)",
+ "workflow_node.notify.form.email_receiver_address.placeholder": "请输入接收邮箱地址以覆盖默认值",
+ "workflow_node.notify.form.email_receiver_address.tooltip": "不填写时,将使用所选通知渠道授权的默认接收邮箱地址。",
+ "workflow_node.notify.form.mattermost_channel_id.label": "Mattermost 频道 ID(可选)",
+ "workflow_node.notify.form.mattermost_channel_id.placeholder": "请输入 Mattermost 频道 ID 以覆盖默认值",
+ "workflow_node.notify.form.mattermost_channel_id.tooltip": "不填写时,将使用所选通知渠道授权的默认频道 ID。",
+ "workflow_node.notify.form.telegram_chat_id.label": "Telegram 会话 ID(可选)",
+ "workflow_node.notify.form.telegram_chat_id.placeholder": "请输入 Telegram 会话 ID 以覆盖默认值",
+ "workflow_node.notify.form.telegram_chat_id.tooltip": "不填写时,将使用所选通知渠道授权的默认会话 ID。",
+ "workflow_node.notify.form.webhook_data.label": "Webhook 回调数据(可选)",
+ "workflow_node.notify.form.webhook_data.placeholder": "请输入 Webhook 回调数据以覆盖默认值",
+ "workflow_node.notify.form.webhook_data.tooltip": "不填写时,将使用所选部署目标授权的默认 Webhook 回调数据。",
+ "workflow_node.notify.form.webhook_data.guide": "支持的变量:
- ${DOMAIN}:证书的主域名(即 CommonName)。
- ${DOMAINS}:证书的多域名列表(即 SubjectAltNames)。
- ${CERTIFICATE}:证书文件 PEM 格式内容。
- ${PRIVATE_KEY}:私钥文件 PEM 格式内容。
其他注意事项请前往授权管理页面查看。",
+ "workflow_node.notify.form.webhook_data.errmsg.json_invalid": "请输入有效的 JSON 格式字符串",
"workflow_node.end.label": "结束",
diff --git a/ui/src/i18n/locales/zh/nls.workflow.runs.json b/ui/src/i18n/locales/zh/nls.workflow.runs.json
index 79d46abe..4f8640e6 100644
--- a/ui/src/i18n/locales/zh/nls.workflow.runs.json
+++ b/ui/src/i18n/locales/zh/nls.workflow.runs.json
@@ -5,6 +5,8 @@
"workflow_run.action.delete": "删除执行",
"workflow_run.action.delete.confirm": "确定要删除此执行吗?请注意此操作仅清除日志历史,但不会影响签发的证书。",
+ "workflow_run.table.alert": "注意:执行记录中包含工作流各节点的执行结果,删除后可能导致因找不到前次执行结果而触发重新申请或部署证书。如无必要请勿提前删除,建议保留至少 180 天。",
+
"workflow_run.props.id": "ID",
"workflow_run.props.status": "状态",
"workflow_run.props.status.pending": "等待执行",
@@ -21,6 +23,7 @@
"workflow_run.logs": "日志",
"workflow_run.logs.menu.show_timestamps": "显示日期时间",
"workflow_run.logs.menu.show_whitespaces": "显示转义换行符",
+ "workflow_run.logs.menu.download_logs": "下载日志",
"workflow_run.artifacts": "输出产物",
"workflow_run_artifact.props.type": "类型",
diff --git a/ui/src/pages/accesses/AccessList.tsx b/ui/src/pages/accesses/AccessList.tsx
index 66cdeab8..f815812e 100644
--- a/ui/src/pages/accesses/AccessList.tsx
+++ b/ui/src/pages/accesses/AccessList.tsx
@@ -14,13 +14,15 @@ import { Avatar, Button, Card, Empty, Flex, Input, Modal, Space, Table, type Tab
import dayjs from "dayjs";
import { ClientResponseError } from "pocketbase";
-import AccessEditModal from "@/components/access/AccessEditModal";
+import AccessEditDrawer, { type AccessEditDrawerProps } from "@/components/access/AccessEditDrawer";
import { type AccessModel } from "@/domain/access";
-import { accessProvidersMap } from "@/domain/provider";
+import { ACCESS_USAGES, accessProvidersMap } from "@/domain/provider";
import { useZustandShallowSelector } from "@/hooks";
import { useAccessesStore } from "@/stores/access";
import { getErrMsg } from "@/utils/error";
+type AccessUsageProp = AccessEditDrawerProps["usage"];
+
const AccessList = () => {
const [searchParams] = useSearchParams();
@@ -83,9 +85,10 @@ const AccessList = () => {
width: 120,
render: (_, record) => (
-
} variant="text" />
@@ -93,9 +96,10 @@ const AccessList = () => {
}
/>
-
} variant="text" />
@@ -122,6 +126,7 @@ const AccessList = () => {
const [filters, setFilters] = useState>(() => {
return {
+ usage: "both-dns-hosting" satisfies AccessUsageProp,
keyword: searchParams.get("keyword"),
};
});
@@ -144,14 +149,26 @@ const AccessList = () => {
() => {
const startIndex = (page - 1) * pageSize;
const endIndex = startIndex + pageSize;
- const list = accesses.filter((e) => {
- const keyword = (filters["keyword"] as string | undefined)?.trim();
- if (keyword) {
- return e.name.includes(keyword);
- }
+ const list = accesses
+ .filter((e) => {
+ const keyword = (filters["keyword"] as string | undefined)?.trim();
+ if (keyword) {
+ return e.name.includes(keyword);
+ }
- return true;
- });
+ return true;
+ })
+ .filter((e) => {
+ const provider = accessProvidersMap.get(e.provider);
+ switch (filters["usage"] as AccessUsageProp) {
+ case "both-dns-hosting":
+ return !e.reserve && (provider?.usages?.includes(ACCESS_USAGES.DNS) || provider?.usages?.includes(ACCESS_USAGES.HOSTING));
+ case "ca-only":
+ return e.reserve === "ca" && provider?.usages?.includes(ACCESS_USAGES.CA);
+ case "notification-only":
+ return e.reserve === "notification" && provider?.usages?.includes(ACCESS_USAGES.NOTIFICATION);
+ }
+ });
return Promise.resolve({
items: list.slice(startIndex, endIndex),
totalItems: list.length,
@@ -166,8 +183,14 @@ const AccessList = () => {
}
);
+ const handleTabChange = (key: string) => {
+ setFilters((prev) => ({ ...prev, usage: key }));
+ setPage(1);
+ };
+
const handleSearch = (value: string) => {
setFilters((prev) => ({ ...prev, keyword: value }));
+ setPage(1);
};
const handleReloadClick = () => {
@@ -201,9 +224,10 @@ const AccessList = () => {
}>
{t("access.action.add")}
@@ -213,7 +237,32 @@ const AccessList = () => {
]}
/>
-
+ handleTabChange(key)}
+ />
+
+
diff --git a/ui/src/pages/certificates/CertificateList.tsx b/ui/src/pages/certificates/CertificateList.tsx
index 049069a3..6e28459d 100644
--- a/ui/src/pages/certificates/CertificateList.tsx
+++ b/ui/src/pages/certificates/CertificateList.tsx
@@ -251,6 +251,7 @@ const CertificateList = () => {
const handleSearch = (value: string) => {
setFilters((prev) => ({ ...prev, keyword: value.trim() }));
+ setPage(1);
};
const handleReloadClick = () => {
diff --git a/ui/src/pages/dashboard/Dashboard.tsx b/ui/src/pages/dashboard/Dashboard.tsx
index 83f8cd47..9915a8a7 100644
--- a/ui/src/pages/dashboard/Dashboard.tsx
+++ b/ui/src/pages/dashboard/Dashboard.tsx
@@ -285,7 +285,7 @@ const Dashboard = () => {
}}
pagination={false}
rowKey={(record) => record.id}
- scroll={{ x: "max(100%, 960px)" }}
+ scroll={{ x: "max(100%, 720px)" }}
size="small"
/>
diff --git a/ui/src/pages/settings/SettingsNotification.tsx b/ui/src/pages/settings/SettingsNotification.tsx
index 950149e2..2c9d593a 100644
--- a/ui/src/pages/settings/SettingsNotification.tsx
+++ b/ui/src/pages/settings/SettingsNotification.tsx
@@ -1,11 +1,14 @@
import { useTranslation } from "react-i18next";
-import { Card, Divider } from "antd";
+import { Alert, Card, Divider } from "antd";
import NotifyChannels from "@/components/notification/NotifyChannels";
import NotifyTemplate from "@/components/notification/NotifyTemplate";
import { useZustandShallowSelector } from "@/hooks";
import { useNotifyChannelsStore } from "@/stores/notify";
+/**
+ * @deprecated
+ */
const SettingsNotification = () => {
const { t } = useTranslation();
@@ -22,6 +25,7 @@ const SettingsNotification = () => {
+
diff --git a/ui/src/pages/settings/SettingsSSLProvider.tsx b/ui/src/pages/settings/SettingsSSLProvider.tsx
index c082c4e7..2be6162f 100644
--- a/ui/src/pages/settings/SettingsSSLProvider.tsx
+++ b/ui/src/pages/settings/SettingsSSLProvider.tsx
@@ -7,7 +7,8 @@ import { produce } from "immer";
import { z } from "zod";
import Show from "@/components/Show";
-import { SETTINGS_NAMES, SSLPROVIDERS, type SSLProviderSettingsContent, type SSLProviders, type SettingsModel } from "@/domain/settings";
+import { type CAProviderType, CA_PROVIDERS } from "@/domain/provider";
+import { SETTINGS_NAMES, type SSLProviderSettingsContent, type SettingsModel } from "@/domain/settings";
import { useAntdForm } from "@/hooks";
import { get as getSettings, save as saveSettings } from "@/repository/settings";
import { getErrMsg } from "@/utils/error";
@@ -26,14 +27,14 @@ const SSLProviderEditFormLetsEncryptConfig = () => {
const { pending, settings, updateSettings } = useContext(SSLProviderContext);
const { form: formInst, formProps } = useAntdForm>({
- initialValues: settings?.content?.config?.[SSLPROVIDERS.LETS_ENCRYPT],
+ initialValues: settings?.content?.config?.[CA_PROVIDERS.LETSENCRYPT],
onSubmit: async (values) => {
const newSettings = produce(settings, (draft) => {
draft.content ??= {} as SSLProviderSettingsContent;
- draft.content.provider = SSLPROVIDERS.LETS_ENCRYPT;
+ draft.content.provider = CA_PROVIDERS.LETSENCRYPT;
draft.content.config ??= {} as SSLProviderSettingsContent["config"];
- draft.content.config[SSLPROVIDERS.LETS_ENCRYPT] = values;
+ draft.content.config[CA_PROVIDERS.LETSENCRYPT] = values;
});
await updateSettings(newSettings);
@@ -43,7 +44,7 @@ const SSLProviderEditFormLetsEncryptConfig = () => {
const [formChanged, setFormChanged] = useState(false);
useEffect(() => {
- setFormChanged(settings?.content?.provider !== SSLPROVIDERS.LETS_ENCRYPT);
+ setFormChanged(settings?.content?.provider !== CA_PROVIDERS.LETSENCRYPT);
}, [settings?.content?.provider]);
const handleFormChange = () => {
@@ -67,14 +68,14 @@ const SSLProviderEditFormLetsEncryptStagingConfig = () => {
const { pending, settings, updateSettings } = useContext(SSLProviderContext);
const { form: formInst, formProps } = useAntdForm>({
- initialValues: settings?.content?.config?.[SSLPROVIDERS.LETS_ENCRYPT_STAGING],
+ initialValues: settings?.content?.config?.[CA_PROVIDERS.LETSENCRYPTSTAGING],
onSubmit: async (values) => {
const newSettings = produce(settings, (draft) => {
draft.content ??= {} as SSLProviderSettingsContent;
- draft.content.provider = SSLPROVIDERS.LETS_ENCRYPT_STAGING;
+ draft.content.provider = CA_PROVIDERS.LETSENCRYPTSTAGING;
draft.content.config ??= {} as SSLProviderSettingsContent["config"];
- draft.content.config[SSLPROVIDERS.LETS_ENCRYPT_STAGING] = values;
+ draft.content.config[CA_PROVIDERS.LETSENCRYPTSTAGING] = values;
});
await updateSettings(newSettings);
@@ -84,7 +85,7 @@ const SSLProviderEditFormLetsEncryptStagingConfig = () => {
const [formChanged, setFormChanged] = useState(false);
useEffect(() => {
- setFormChanged(settings?.content?.provider !== SSLPROVIDERS.LETS_ENCRYPT_STAGING);
+ setFormChanged(settings?.content?.provider !== CA_PROVIDERS.LETSENCRYPTSTAGING);
}, [settings?.content?.provider]);
const handleFormChange = () => {
@@ -94,7 +95,188 @@ const SSLProviderEditFormLetsEncryptStagingConfig = () => {
return (
- } />
+ } />
+
+
+
+
+
+
+ );
+};
+
+const SSLProviderEditFormBuypassConfig = () => {
+ const { t } = useTranslation();
+
+ const { pending, settings, updateSettings } = useContext(SSLProviderContext);
+
+ const { form: formInst, formProps } = useAntdForm>({
+ initialValues: settings?.content?.config?.[CA_PROVIDERS.BUYPASS],
+ onSubmit: async (values) => {
+ const newSettings = produce(settings, (draft) => {
+ draft.content ??= {} as SSLProviderSettingsContent;
+ draft.content.provider = CA_PROVIDERS.BUYPASS;
+
+ draft.content.config ??= {} as SSLProviderSettingsContent["config"];
+ draft.content.config[CA_PROVIDERS.BUYPASS] = values;
+ });
+ await updateSettings(newSettings);
+
+ setFormChanged(false);
+ },
+ });
+
+ const [formChanged, setFormChanged] = useState(false);
+ useEffect(() => {
+ setFormChanged(settings?.content?.provider !== CA_PROVIDERS.LETSENCRYPTSTAGING);
+ }, [settings?.content?.provider]);
+
+ const handleFormChange = () => {
+ setFormChanged(true);
+ };
+
+ return (
+
+
+
+
+ );
+};
+
+const SSLProviderEditFormGoogleTrustServicesConfig = () => {
+ const { t } = useTranslation();
+
+ const { pending, settings, updateSettings } = useContext(SSLProviderContext);
+
+ const formSchema = z.object({
+ eabKid: z
+ .string({ message: t("settings.sslprovider.form.googletrustservices_eab_kid.placeholder") })
+ .min(1, t("settings.sslprovider.form.googletrustservices_eab_kid.placeholder"))
+ .max(256, t("common.errmsg.string_max", { max: 256 })),
+ eabHmacKey: z
+ .string({ message: t("settings.sslprovider.form.googletrustservices_eab_hmac_key.placeholder") })
+ .min(1, t("settings.sslprovider.form.googletrustservices_eab_hmac_key.placeholder"))
+ .max(256, t("common.errmsg.string_max", { max: 256 })),
+ });
+ const formRule = createSchemaFieldRule(formSchema);
+ const { form: formInst, formProps } = useAntdForm>({
+ initialValues: settings?.content?.config?.[CA_PROVIDERS.GOOGLETRUSTSERVICES],
+ onSubmit: async (values) => {
+ const newSettings = produce(settings, (draft) => {
+ draft.content ??= {} as SSLProviderSettingsContent;
+ draft.content.provider = CA_PROVIDERS.GOOGLETRUSTSERVICES;
+
+ draft.content.config ??= {} as SSLProviderSettingsContent["config"];
+ draft.content.config[CA_PROVIDERS.GOOGLETRUSTSERVICES] = values;
+ });
+ await updateSettings(newSettings);
+
+ setFormChanged(false);
+ },
+ });
+
+ const [formChanged, setFormChanged] = useState(false);
+ useEffect(() => {
+ setFormChanged(settings?.content?.provider !== CA_PROVIDERS.GOOGLETRUSTSERVICES);
+ }, [settings?.content?.provider]);
+
+ const handleFormChange = () => {
+ setFormChanged(true);
+ };
+
+ return (
+ }
+ >
+
+
+
+ }
+ >
+
+
+
+
+
+
+
+ );
+};
+
+const SSLProviderEditFormSSLComConfig = () => {
+ const { t } = useTranslation();
+
+ const { pending, settings, updateSettings } = useContext(SSLProviderContext);
+
+ const formSchema = z.object({
+ eabKid: z
+ .string({ message: t("settings.sslprovider.form.sslcom_eab_kid.placeholder") })
+ .min(1, t("settings.sslprovider.form.sslcom_eab_kid.placeholder"))
+ .max(256, t("common.errmsg.string_max", { max: 256 })),
+ eabHmacKey: z
+ .string({ message: t("settings.sslprovider.form.sslcom_eab_hmac_key.placeholder") })
+ .min(1, t("settings.sslprovider.form.sslcom_eab_hmac_key.placeholder"))
+ .max(256, t("common.errmsg.string_max", { max: 256 })),
+ });
+ const formRule = createSchemaFieldRule(formSchema);
+ const { form: formInst, formProps } = useAntdForm>({
+ initialValues: settings?.content?.config?.[CA_PROVIDERS.SSLCOM],
+ onSubmit: async (values) => {
+ const newSettings = produce(settings, (draft) => {
+ draft.content ??= {} as SSLProviderSettingsContent;
+ draft.content.provider = CA_PROVIDERS.SSLCOM;
+
+ draft.content.config ??= {} as SSLProviderSettingsContent["config"];
+ draft.content.config[CA_PROVIDERS.SSLCOM] = values;
+ });
+ await updateSettings(newSettings);
+
+ setFormChanged(false);
+ },
+ });
+
+ const [formChanged, setFormChanged] = useState(false);
+ useEffect(() => {
+ setFormChanged(settings?.content?.provider !== CA_PROVIDERS.SSLCOM);
+ }, [settings?.content?.provider]);
+
+ const handleFormChange = () => {
+ setFormChanged(true);
+ };
+
+ return (
+ }
+ >
+
+
+
+ }
+ >
+
@@ -123,14 +305,14 @@ const SSLProviderEditFormZeroSSLConfig = () => {
});
const formRule = createSchemaFieldRule(formSchema);
const { form: formInst, formProps } = useAntdForm>({
- initialValues: settings?.content?.config?.[SSLPROVIDERS.ZERO_SSL],
+ initialValues: settings?.content?.config?.[CA_PROVIDERS.ZEROSSL],
onSubmit: async (values) => {
const newSettings = produce(settings, (draft) => {
draft.content ??= {} as SSLProviderSettingsContent;
- draft.content.provider = SSLPROVIDERS.ZERO_SSL;
+ draft.content.provider = CA_PROVIDERS.ZEROSSL;
draft.content.config ??= {} as SSLProviderSettingsContent["config"];
- draft.content.config[SSLPROVIDERS.ZERO_SSL] = values;
+ draft.content.config[CA_PROVIDERS.ZEROSSL] = values;
});
await updateSettings(newSettings);
@@ -140,7 +322,7 @@ const SSLProviderEditFormZeroSSLConfig = () => {
const [formChanged, setFormChanged] = useState(false);
useEffect(() => {
- setFormChanged(settings?.content?.provider !== SSLPROVIDERS.ZERO_SSL);
+ setFormChanged(settings?.content?.provider !== CA_PROVIDERS.ZEROSSL);
}, [settings?.content?.provider]);
const handleFormChange = () => {
@@ -176,76 +358,6 @@ const SSLProviderEditFormZeroSSLConfig = () => {
);
};
-const SSLProviderEditFormGoogleTrustServicesConfig = () => {
- const { t } = useTranslation();
-
- const { pending, settings, updateSettings } = useContext(SSLProviderContext);
-
- const formSchema = z.object({
- eabKid: z
- .string({ message: t("settings.sslprovider.form.gts_eab_kid.placeholder") })
- .min(1, t("settings.sslprovider.form.gts_eab_kid.placeholder"))
- .max(256, t("common.errmsg.string_max", { max: 256 })),
- eabHmacKey: z
- .string({ message: t("settings.sslprovider.form.gts_eab_hmac_key.placeholder") })
- .min(1, t("settings.sslprovider.form.gts_eab_hmac_key.placeholder"))
- .max(256, t("common.errmsg.string_max", { max: 256 })),
- });
- const formRule = createSchemaFieldRule(formSchema);
- const { form: formInst, formProps } = useAntdForm>({
- initialValues: settings?.content?.config?.[SSLPROVIDERS.GOOGLE_TRUST_SERVICES],
- onSubmit: async (values) => {
- const newSettings = produce(settings, (draft) => {
- draft.content ??= {} as SSLProviderSettingsContent;
- draft.content.provider = SSLPROVIDERS.GOOGLE_TRUST_SERVICES;
-
- draft.content.config ??= {} as SSLProviderSettingsContent["config"];
- draft.content.config[SSLPROVIDERS.GOOGLE_TRUST_SERVICES] = values;
- });
- await updateSettings(newSettings);
-
- setFormChanged(false);
- },
- });
-
- const [formChanged, setFormChanged] = useState(false);
- useEffect(() => {
- setFormChanged(settings?.content?.provider !== SSLPROVIDERS.GOOGLE_TRUST_SERVICES);
- }, [settings?.content?.provider]);
-
- const handleFormChange = () => {
- setFormChanged(true);
- };
-
- return (
- }
- >
-
-
-
- }
- >
-
-
-
-
-
-
-
- );
-};
-
const SettingsSSLProvider = () => {
const { t } = useTranslation();
@@ -271,17 +383,21 @@ const SettingsSSLProvider = () => {
fetchData();
}, []);
- const [providerType, setProviderType] = useState(SSLPROVIDERS.LETS_ENCRYPT);
+ const [providerType, setProviderType] = useState(CA_PROVIDERS.LETSENCRYPT);
const providerFormEl = useMemo(() => {
switch (providerType) {
- case SSLPROVIDERS.LETS_ENCRYPT:
+ case CA_PROVIDERS.LETSENCRYPT:
return ;
- case SSLPROVIDERS.LETS_ENCRYPT_STAGING:
+ case CA_PROVIDERS.LETSENCRYPTSTAGING:
return ;
- case SSLPROVIDERS.ZERO_SSL:
- return ;
- case SSLPROVIDERS.GOOGLE_TRUST_SERVICES:
+ case CA_PROVIDERS.BUYPASS:
+ return ;
+ case CA_PROVIDERS.GOOGLETRUSTSERVICES:
return ;
+ case CA_PROVIDERS.SSLCOM:
+ return ;
+ case CA_PROVIDERS.ZEROSSL:
+ return ;
}
}, [providerType]);
@@ -315,34 +431,48 @@ const SettingsSSLProvider = () => {
}>
- setProviderType(value as SSLProviders)}>
+ setProviderType(value as CAProviderType)}>
}
+ avatar={
}
size="small"
- title={t("settings.sslprovider.form.provider.option.letsencrypt.label")}
+ title={t("provider.letsencrypt")}
description="letsencrypt.org"
- value={SSLPROVIDERS.LETS_ENCRYPT}
+ value={CA_PROVIDERS.LETSENCRYPT}
/>
}
+ avatar={
}
size="small"
- title={t("settings.sslprovider.form.provider.option.letsencrypt_staging.label")}
+ title={t("provider.letsencryptstaging")}
description="letsencrypt.org"
- value={SSLPROVIDERS.LETS_ENCRYPT_STAGING}
+ value={CA_PROVIDERS.LETSENCRYPTSTAGING}
/>
}
+ avatar={
}
size="small"
- title={t("settings.sslprovider.form.provider.option.zerossl.label")}
- description="zerossl.com"
- value={SSLPROVIDERS.ZERO_SSL}
+ title={t("provider.buypass")}
+ description="buypass.com"
+ value={CA_PROVIDERS.BUYPASS}
/>
}
+ avatar={
}
size="small"
- title={t("settings.sslprovider.form.provider.option.gts.label")}
+ title={t("provider.googletrustservices")}
description="pki.goog"
- value={SSLPROVIDERS.GOOGLE_TRUST_SERVICES}
+ value={CA_PROVIDERS.GOOGLETRUSTSERVICES}
+ />
+ }
+ size="small"
+ title={t("provider.sslcom")}
+ description="ssl.com"
+ value={CA_PROVIDERS.SSLCOM}
+ />
+ }
+ size="small"
+ title={t("provider.zerossl")}
+ description="zerossl.com"
+ value={CA_PROVIDERS.ZEROSSL}
/>
diff --git a/ui/src/pages/workflows/WorkflowList.tsx b/ui/src/pages/workflows/WorkflowList.tsx
index 09bca7fc..f7a350fd 100644
--- a/ui/src/pages/workflows/WorkflowList.tsx
+++ b/ui/src/pages/workflows/WorkflowList.tsx
@@ -281,6 +281,7 @@ const WorkflowList = () => {
const handleSearch = (value: string) => {
setFilters((prev) => ({ ...prev, keyword: value.trim() }));
+ setPage(1);
};
const handleCreateClick = () => {
diff --git a/ui/src/stores/notify/index.ts b/ui/src/stores/notify/index.ts
index c8f0356f..d144aff4 100644
--- a/ui/src/stores/notify/index.ts
+++ b/ui/src/stores/notify/index.ts
@@ -4,6 +4,9 @@ import { create } from "zustand";
import { type NotifyChannelsSettingsContent, SETTINGS_NAMES, type SettingsModel } from "@/domain/settings";
import { get as getSettings, save as saveSettings } from "@/repository/settings";
+/**
+ * @deprecated
+ */
export interface NotifyChannelsState {
channels: NotifyChannelsSettingsContent;
loading: boolean;
@@ -14,6 +17,9 @@ export interface NotifyChannelsState {
setChannels: (channels: NotifyChannelsSettingsContent) => Promise;
}
+/**
+ * @deprecated
+ */
export const useNotifyChannelsStore = create((set, get) => {
let fetcher: Promise> | null = null; // 防止多次重复请求
let settings: SettingsModel; // 记录当前设置的其他字段,保存回数据库时用