mirror of
https://github.com/certd/certd.git
synced 2026-05-16 21:27:34 +08:00
chore: 支持从domain中查询子域名托管
This commit is contained in:
@@ -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> {
|
||||
|
||||
Reference in New Issue
Block a user