chore: 支持从domain中查询子域名托管

This commit is contained in:
xiaojunnuo
2026-01-31 02:39:28 +08:00
parent 8b96f218d5
commit 873654669e
7 changed files with 115 additions and 67 deletions
@@ -1,17 +1,49 @@
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 {
userId: number;
subDomainService: SubDomainService;
domainService: DomainService;
constructor(userId: number, subDomainService: SubDomainService) {
constructor(userId: number, subDomainService: SubDomainService, domainService: DomainService) {
this.userId = userId;
this.subDomainService = subDomainService;
this.domainService = domainService;
}
async getSubDomains() {
return await this.subDomainService.getListByUserId(this.userId)
}
async hasSubDomain(fullDomain: string) {
const subDomains = await this.getSubDomains()
if (subDomains && subDomains.length > 0) {
const fullDomainDot = "." + fullDomain;
for (const subDomain of subDomains) {
if (fullDomainDot.endsWith("." + subDomain)) {
//找到子域名托管
return subDomain;
}
}
}
let arr = fullDomain.split(".")
while(arr.length>0){
const subDomain = arr.join(".")
const domain = await this.domainService.findOne({
where: {
userId: this.userId,
domain: subDomain,
challengeType: "dns",
}
})
if(domain){
return subDomain
}
arr = arr.slice(1)
}
return null
}
}
@@ -45,7 +45,8 @@ export class TaskServiceGetter implements IServiceGetter{
async getSubDomainsGetter(): Promise<SubDomainsGetter> {
const subDomainsService:SubDomainService = await this.appCtx.getAsync("subDomainService")
return new SubDomainsGetter(this.userId, subDomainsService)
const domainService:DomainService = await this.appCtx.getAsync("domainService")
return new SubDomainsGetter(this.userId, subDomainsService,domainService)
}
async getAccessService(): Promise<AccessGetter> {