import * as plugins from '../plugins.js'; import type { IChallengeHandler } from './IChallengeHandler.js'; /** * DNS-01 challenge handler using CloudflareAccount and Smartdns. */ export class Dns01Handler implements IChallengeHandler { private cf: plugins.tsclass.network.IConvenientDnsProvider; private smartdns: plugins.smartdnsClient.Smartdns; constructor( convenientDnsProvider: plugins.tsclass.network.IConvenientDnsProvider, smartdnsInstance?: plugins.smartdnsClient.Smartdns, ) { this.cf = convenientDnsProvider; this.smartdns = smartdnsInstance ?? new plugins.smartdnsClient.Smartdns({}); } public getSupportedTypes(): string[] { return ['dns-01']; } public async prepare(ch: plugins.tsclass.network.IDnsChallenge): Promise { // set DNS TXT record await this.cf.convenience.acmeSetDnsChallenge(ch); } public async cleanup(ch: plugins.tsclass.network.IDnsChallenge): Promise { // remove DNS TXT record await this.cf.convenience.acmeRemoveDnsChallenge(ch); } public async checkWetherDomainIsSupported(domainArg: string): Promise { return this.cf.convenience.isDomainSupported(domainArg); } }