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,21 +82,40 @@ async function walkDnsChallengeRecord(recordName, resolver = dns) {
} }
export async function walkTxtRecord(recordName) { export async function walkTxtRecord(recordName) {
const txtRecords = []
try { try {
/* Default DNS resolver first */ /* Default DNS resolver first */
log('Attempting to resolve TXT with default DNS resolver first'); log('从本地DNS服务器获取TXT解析记录');
const res = await walkDnsChallengeRecord(recordName); const res = await walkDnsChallengeRecord(recordName);
if (res && res.length > 0) { if (res && res.length > 0) {
return res; for (const item of res) {
txtRecords.push(item)
}
} }
throw new Error('No TXT records found');
} catch (e) {
log(`本地获取TXT解析记录失败:${e.message}`)
} }
catch (e) {
try{
/* Authoritative DNS resolver */ /* 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); 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;
} }
/** /**