UNPKG

domainlooker

Version:

🕵️ Mission-critical domain intelligence gathering tool with spy-themed interface. Comprehensive WHOIS, DNS, SSL, network analysis, subdomain discovery, and API-ready JSON exports.

105 lines 3.52 kB
import { promises as dns } from 'dns'; export class DNSService { async lookup(domain) { const result = {}; try { // Execute all DNS queries in parallel const dnsPromises = [ this.getARecords(domain), this.getAAAARecords(domain), this.getMXRecords(domain), this.getNSRecords(domain), this.getTXTRecords(domain), this.getSOARecord(domain) ]; const dnsResults = await Promise.allSettled(dnsPromises); // Process A Records if (dnsResults[0].status === 'fulfilled' && dnsResults[0].value && Array.isArray(dnsResults[0].value) && dnsResults[0].value.length > 0) { result.a = dnsResults[0].value; } // Process AAAA Records if (dnsResults[1].status === 'fulfilled' && dnsResults[1].value && Array.isArray(dnsResults[1].value) && dnsResults[1].value.length > 0) { result.aaaa = dnsResults[1].value; } // Process MX Records if (dnsResults[2].status === 'fulfilled' && dnsResults[2].value && Array.isArray(dnsResults[2].value) && dnsResults[2].value.length > 0) { result.mx = dnsResults[2].value; } // Process NS Records if (dnsResults[3].status === 'fulfilled' && dnsResults[3].value && Array.isArray(dnsResults[3].value) && dnsResults[3].value.length > 0) { result.ns = dnsResults[3].value; } // Process TXT Records if (dnsResults[4].status === 'fulfilled' && dnsResults[4].value && Array.isArray(dnsResults[4].value) && dnsResults[4].value.length > 0) { result.txt = dnsResults[4].value; } // Process SOA Record if (dnsResults[5].status === 'fulfilled' && dnsResults[5].value && !Array.isArray(dnsResults[5].value)) { result.soa = dnsResults[5].value; } } catch (error) { console.error('DNS lookup error:', error); } return result; } async getARecords(domain) { try { return await dns.resolve4(domain); } catch { return []; } } async getAAAARecords(domain) { try { return await dns.resolve6(domain); } catch { return []; } } async getMXRecords(domain) { try { return await dns.resolveMx(domain); } catch { return []; } } async getNSRecords(domain) { try { return await dns.resolveNs(domain); } catch { return []; } } async getTXTRecords(domain) { try { const records = await dns.resolveTxt(domain); return records.map(record => record.join('')); } catch { return []; } } async getSOARecord(domain) { try { const soa = await dns.resolveSoa(domain); return { primary: soa.nsname, admin: soa.hostmaster, serial: soa.serial, refresh: soa.refresh, retry: soa.retry, expiration: soa.expire, minimum: soa.minttl }; } catch { return undefined; } } } //# sourceMappingURL=dns.js.map