From d3a98a523f9526a25ab6803899ad1f177e902d32 Mon Sep 17 00:00:00 2001 From: Pavel Djundik Date: Thu, 11 Jul 2019 23:10:03 +0300 Subject: [PATCH] Verify reverse DNS when looking up hostnames for webirc Fixes #3293 --- src/server.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/server.js b/src/server.js index c0cfbbdf..9b62a7ff 100644 --- a/src/server.js +++ b/src/server.js @@ -744,11 +744,23 @@ function performAuthentication(data) { } function reverseDnsLookup(ip, callback) { - dns.reverse(ip, (err, hostnames) => { - if (!err && hostnames.length) { - return callback(hostnames[0]); + dns.reverse(ip, (reverseErr, hostnames) => { + if (reverseErr || hostnames.length < 1) { + return callback(ip); } - callback(ip); + dns.resolve(hostnames[0], net.isIP(ip) === 6 ? "AAAA" : "A", (resolveErr, resolvedIps) => { + if (resolveErr || resolvedIps.length < 1) { + return callback(ip); + } + + for (const resolvedIp of resolvedIps) { + if (ip === resolvedIp) { + return callback(hostnames[0]); + } + } + + return callback(ip); + }); }); }