Skip to content

Commit

Permalink
Chore: improve domai alive check [skip ci]
Browse files Browse the repository at this point in the history
  • Loading branch information
SukkaW committed Jan 6, 2025
1 parent 20aae1c commit eed8fb1
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 10 deletions.
11 changes: 6 additions & 5 deletions Build/lib/is-domain-alive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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);
}

Expand All @@ -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
Expand Down
25 changes: 20 additions & 5 deletions Build/validate-domain-alive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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) {
Expand All @@ -34,7 +43,7 @@ export async function runAgainstRuleset(filepath: string) {
return;
}

const promises: Array<Promise<[string, boolean]>> = [];
const promises: Array<Promise<void>> = [];

for await (const l of readFileByLine(filepath)) {
const line = processLine(l);
Expand All @@ -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
Expand All @@ -61,12 +73,15 @@ export async function runAgainstDomainset(filepath: string) {
return;
}

const promises: Array<Promise<[string, boolean]>> = [];
const promises: Array<Promise<void>> = [];

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);
Expand Down

0 comments on commit eed8fb1

Please sign in to comment.