perf: 优化txt本地校验效率

pull/361/head
xiaojunnuo 2025-03-25 11:08:25 +08:00
parent 96a39ef9c3
commit fd507f2692
1 changed files with 25 additions and 6 deletions

View File

@ -82,22 +82,41 @@ async function walkDnsChallengeRecord(recordName, resolver = dns) {
}
export async function walkTxtRecord(recordName) {
const txtRecords = []
try {
/* Default DNS resolver first */
log('Attempting to resolve TXT with default DNS resolver first');
log('从本地DNS服务器获取TXT解析记录');
const res = await walkDnsChallengeRecord(recordName);
if (res && res.length > 0) {
return res;
for (const item of res) {
txtRecords.push(item)
}
throw new Error('No TXT records found');
}
catch (e) {
} catch (e) {
log(`本地获取TXT解析记录失败:${e.message}`)
}
try{
/* Authoritative DNS resolver */
log(`Error using default resolver, attempting to resolve TXT with authoritative NS: ${e.message}`);
log(`从域名权威服务器获取TXT解析记录`);
const authoritativeResolver = await util.getAuthoritativeDnsResolver(recordName);
return await walkDnsChallengeRecord(recordName, authoritativeResolver);
const res = await walkDnsChallengeRecord(recordName, authoritativeResolver);
if (res && res.length > 0) {
for (const item of res) {
txtRecords.push(item)
}
}
}catch (e) {
log(`权威服务器获取TXT解析记录失败:${e.message}`)
}
if (txtRecords.length === 0) {
throw new Error(`没有找到TXT解析记录${recordName}`);
}
return txtRecords;
}
/**
* Verify ACME DNS challenge