const dns = require('dns'); const util = require('util'); exports.handler = async function(event, context) { let hostname = event.queryStringParameters.url; // Handle URLs by extracting hostname if (hostname.startsWith('http://') || hostname.startsWith('https://')) { hostname = new URL(hostname).hostname; } try { const lookupPromise = util.promisify(dns.lookup); const resolve4Promise = util.promisify(dns.resolve4); const resolve6Promise = util.promisify(dns.resolve6); const resolveMxPromise = util.promisify(dns.resolveMx); const resolveTxtPromise = util.promisify(dns.resolveTxt); const resolveNsPromise = util.promisify(dns.resolveNs); const resolveCnamePromise = util.promisify(dns.resolveCname); const resolveSoaPromise = util.promisify(dns.resolveSoa); const resolveSrvPromise = util.promisify(dns.resolveSrv); const resolvePtrPromise = util.promisify(dns.resolvePtr); const [a, aaaa, mx, txt, ns, cname, soa, srv, ptr] = await Promise.all([ lookupPromise(hostname), resolve4Promise(hostname).catch(() => []), // A record resolve6Promise(hostname).catch(() => []), // AAAA record resolveMxPromise(hostname).catch(() => []), // MX record resolveTxtPromise(hostname).catch(() => []), // TXT record resolveNsPromise(hostname).catch(() => []), // NS record resolveCnamePromise(hostname).catch(() => []), // CNAME record resolveSoaPromise(hostname).catch(() => []), // SOA record resolveSrvPromise(hostname).catch(() => []), // SRV record resolvePtrPromise(hostname).catch(() => []) // PTR record ]); return { statusCode: 200, body: JSON.stringify({ A: a, AAAA: aaaa, MX: mx, TXT: txt, NS: ns, CNAME: cname, SOA: soa, SRV: srv, PTR: ptr }) }; } catch (error) { return { statusCode: 500, body: JSON.stringify({ error: error.message }) }; } };