diff --git a/packages/ui/certd-client/src/locales/langs/en-US/certd.ts b/packages/ui/certd-client/src/locales/langs/en-US/certd.ts index b1daa1bf4..778ce2893 100644 --- a/packages/ui/certd-client/src/locales/langs/en-US/certd.ts +++ b/packages/ui/certd-client/src/locales/langs/en-US/certd.ts @@ -511,6 +511,7 @@ export default { selectRecordFirst: "Please select records first", subdomainHosted: "Hosted Subdomain", subdomainHelpText: "If you don't understand what subdomain hosting is,Do not set it randomly, as it may result in the inability to apply for the certificate. please refer to the documentation ", + subdomainHelpSupportStart: "Supports * wildcard, indicating that all subdomains of the domain are hosted (free subdomains)", subdomainManagement: "Subdomain Management", isDisabled: "Is Disabled", enabled: "Enabled", diff --git a/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts b/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts index d12f92ff6..09d501223 100644 --- a/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts +++ b/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts @@ -521,6 +521,7 @@ export default { selectRecordFirst: "请先勾选记录", subdomainHosted: "托管的子域名", subdomainHelpText: "如果您不理解什么是子域托管,请不要随意设置(可能导致证书无法申请,以前设置过的cname记录也需要重新配置),可以参考文档", + subdomainHelpSupportStart: "支持*号通配符,表示该域名下的子域名都是托管的(免费子域名)", subdomainManagement: "子域管理", isDisabled: "是否禁用", enabled: "启用", diff --git a/packages/ui/certd-client/src/views/certd/pipeline/sub-domain/crud.tsx b/packages/ui/certd-client/src/views/certd/pipeline/sub-domain/crud.tsx index 6b1d39c1f..8e3544a64 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/sub-domain/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/pipeline/sub-domain/crud.tsx @@ -80,10 +80,13 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat render() { return (
- {t("certd.subdomainHelpText")} - - {t("certd.subdomainManagement")} - +
+ 1. {t("certd.subdomainHelpText")} + + {t("certd.subdomainManagement")} + +
+
2. {t("certd.subdomainHelpSupportStart")}
); }, diff --git a/packages/ui/certd-server/src/modules/pipeline/service/getter/sub-domain-getter.ts b/packages/ui/certd-server/src/modules/pipeline/service/getter/sub-domain-getter.ts index 87092264e..a95a310b4 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/getter/sub-domain-getter.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/getter/sub-domain-getter.ts @@ -1,5 +1,5 @@ -import {ISubDomainsGetter} from "@certd/plugin-cert"; -import {SubDomainService} from "../sub-domain-service.js"; +import { ISubDomainsGetter } from "@certd/plugin-cert"; +import { SubDomainService } from "../sub-domain-service.js"; import { DomainService } from "../../../cert/service/domain-service.js"; export class SubDomainsGetter implements ISubDomainsGetter { @@ -18,18 +18,39 @@ export class SubDomainsGetter implements ISubDomainsGetter { } async hasSubDomain(fullDomain: string) { + let arr = fullDomain.split(".") const subDomains = await this.getSubDomains() - if (subDomains && subDomains.length > 0) { + if (subDomains && subDomains.length > 0) { const fullDomainDot = "." + fullDomain; for (const subDomain of subDomains) { if (fullDomainDot.endsWith("." + subDomain)) { //找到子域名托管 return subDomain; } + + if (subDomain.startsWith("*.")) { + //如果子域名配置的是泛域名,说明这一层及以下的子域名都是托管的 + //以fullDomain在这一层的子域名作为返回值 + const nonStarDomain = subDomain.slice(1) + if (fullDomainDot.endsWith(nonStarDomain)) { + //提取fullDomain在这一层的子域名 + const fullArr = arr.reverse() + const subArr = subDomain.split(".").reverse() + let strBuilder = "" + for (let i =0 ;i0){ + while (arr.length > 0) { const subDomain = arr.join(".") const domain = await this.domainService.findOne({ where: { @@ -38,10 +59,10 @@ export class SubDomainsGetter implements ISubDomainsGetter { challengeType: "dns", } }) - if(domain){ + if (domain) { return subDomain } - arr = arr.slice(1) + arr = arr.slice(1) } return null }