From 754d1fb52cb243032daab67428769daba7f6e25d Mon Sep 17 00:00:00 2001 From: Jai Kandepu <73307963+C0oki3s@users.noreply.github.com> Date: Wed, 22 Oct 2025 17:17:59 +0530 Subject: [PATCH] Refactor dns.lookup and address handling logic Updated dns.lookup to return all addresses and adjusted bitwise operations for consistency. --- lib/index.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/index.js b/lib/index.js index 3a55073..dcbb8c5 100644 --- a/lib/index.js +++ b/lib/index.js @@ -242,16 +242,19 @@ async function resolveAll (hostname) { results.push(...v6) } catch {} - // Fallback: dns.lookup if resolvers are blocked + // Fallback: dns.lookup (gives system resolver results) if (!results.length) { - const address = await new Promise((resolve, reject) => { - dns.lookup(hostname, { all: false, family: 0, hints: dns.ADDRCONFIG | dns.V4MAPPED }, (err, address) => { + const addresses = await new Promise((resolve, reject) => { + dns.lookup(hostname, { all: true, family: 0, hints: dns.ADDRCONFIG | dns.V4MAPPED }, (err, addresses) => { if (err) return reject(err) - resolve(address) + resolve(addresses) }) }) - if (typeof address === 'string') results.push(address) - else if (address && address.address) results.push(address.address) + if (Array.isArray(addresses)) { + for (const addr of addresses) { + if (addr && addr.address) results.push(addr.address) + } + } } return results @@ -288,11 +291,11 @@ function normalizeObfuscatedIPv4 (host) { if (nums.every(x => x !== null && x >= 0)) { let dword = null if (nums.length === 4) { - if (nums.every(x => x <= 255)) dword = (nums[0] << 24) | (nums[1] << 16) | (nums[2] << 8) | nums[3] + if (nums.every(x => x <= 255)) dword = ((nums[0] << 24) | (nums[1] << 16) | (nums[2] << 8) | nums[3]) >>> 0 } else if (nums.length === 3) { - if (nums[0] <= 255 && nums[1] <= 255 && nums[2] <= 0xFFFF) dword = (nums[0] << 24) | (nums[1] << 16) | nums[2] + if (nums[0] <= 255 && nums[1] <= 255 && nums[2] <= 0xFFFF) dword = ((nums[0] << 24) | (nums[1] << 16) | nums[2]) >>> 0 } else if (nums.length === 2) { - if (nums[0] <= 255 && nums[1] <= 0xFFFFFF) dword = (nums[0] << 24) | nums[1] + if (nums[0] <= 255 && nums[1] <= 0xFFFFFF) dword = ((nums[0] << 24) | nums[1]) >>> 0 } else if (nums.length === 1) { if (nums[0] <= 0xFFFFFFFF) dword = nums[0] }