diff --git a/Build/lib/is-domain-alive.ts b/Build/lib/is-domain-alive.ts index 6400eeb38..71c4e149b 100644 --- a/Build/lib/is-domain-alive.ts +++ b/Build/lib/is-domain-alive.ts @@ -203,15 +203,13 @@ async function isApexDomainAlive(apexDomain: string): Promise<[string, boolean]> return onDomainAlive(apexDomain); } - console.log(picocolors.gray('[domain check]'), picocolors.gray('no NS records'), { domain: apexDomain }); - let whois; try { whois = await getWhois(apexDomain); } catch (e) { console.log(picocolors.red('[domain dead]'), 'whois error', { domain: apexDomain }, e); - return onDomainDead(apexDomain); + return onDomainAlive(apexDomain); } if (process.env.DEBUG) { @@ -224,7 +222,7 @@ async function isApexDomainAlive(apexDomain: string): Promise<[string, boolean]> return onDomainAlive(apexDomain); } - console.log(picocolors.red('[domain dead]'), 'whois not found', { domain: apexDomain, whoisError }); + console.log(picocolors.red('[domain dead]'), 'whois not found', { domain: apexDomain, err: whoisError }); return onDomainDead(apexDomain); } @@ -241,7 +239,10 @@ const whoisNotFoundKeywordTest = createKeywordFilter([ 'no matching record', 'no information available about domain name', 'not been registered', - 'no match!!' + 'no match!!', + 'status: available', + ' is free', + 'no object found' ]); // whois server can redirect, so whoiser might/will get info from multiple whois servers diff --git a/Build/validate-domain-alive.ts b/Build/validate-domain-alive.ts index ddac080b8..eeb76cfe2 100644 --- a/Build/validate-domain-alive.ts +++ b/Build/validate-domain-alive.ts @@ -9,6 +9,13 @@ import { fdir as Fdir } from 'fdir'; const queue = newQueue(32); +const deadDomains: string[] = []; +function onDomain(args: [string, boolean]) { + if (!args[1]) { + deadDomains.push(args[0]); + } +} + (async () => { const domainSets = await new Fdir() .withFullPaths() @@ -24,7 +31,9 @@ const queue = newQueue(32); ...domainRules.map(runAgainstRuleset) ]); - console.log('done'); + console.log(); + console.log(); + console.log(JSON.stringify(deadDomains)); })(); export async function runAgainstRuleset(filepath: string) { @@ -34,7 +43,7 @@ export async function runAgainstRuleset(filepath: string) { return; } - const promises: Array> = []; + const promises: Array> = []; for await (const l of readFileByLine(filepath)) { const line = processLine(l); @@ -43,7 +52,10 @@ export async function runAgainstRuleset(filepath: string) { switch (type) { case 'DOMAIN-SUFFIX': case 'DOMAIN': { - promises.push(queue.add(() => keyedAsyncMutexWithQueue(domain, () => isDomainAlive(domain, type === 'DOMAIN-SUFFIX')))); + promises.push( + queue.add(() => keyedAsyncMutexWithQueue(domain, () => isDomainAlive(domain, type === 'DOMAIN-SUFFIX'))) + .then(onDomain) + ); break; } // no default @@ -61,12 +73,15 @@ export async function runAgainstDomainset(filepath: string) { return; } - const promises: Array> = []; + const promises: Array> = []; for await (const l of readFileByLine(filepath)) { const line = processLine(l); if (!line) continue; - promises.push(queue.add(() => keyedAsyncMutexWithQueue(line, () => isDomainAlive(line, line[0] === '.')))); + promises.push( + queue.add(() => keyedAsyncMutexWithQueue(line, () => isDomainAlive(line, line[0] === '.'))) + .then(onDomain) + ); } await Promise.all(promises);