From d5a2609f759374e3bd3133621ad83eee084f0433 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Wed, 20 Dec 2017 11:27:42 -0800 Subject: [PATCH] peer: add reverse dns lookup. --- lib/net/peer.js | 20 ++++++++++++++++++++ lib/node/rpc.js | 8 ++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/net/peer.js b/lib/net/peer.js index 53ca78ca..97d4aed1 100644 --- a/lib/net/peer.js +++ b/lib/net/peer.js @@ -12,6 +12,7 @@ const EventEmitter = require('events'); const {Lock} = require('bmutex'); const {format} = require('util'); const tcp = require('btcp'); +const dns = require('bdns'); const Logger = require('blgr'); const {RollingFilter} = require('bfilter'); const util = require('../utils/util'); @@ -87,6 +88,7 @@ class Peer extends EventEmitter { this.loader = false; this.address = new NetAddress(); this.local = new NetAddress(); + this.name = null; this.connected = false; this.destroyed = false; this.ack = false; @@ -375,6 +377,24 @@ class Peer extends EventEmitter { return socket; } + /** + * Do a reverse dns lookup on peer's addr. + * @returns {Promise} + */ + + async getName() { + try { + if (!this.name) { + const {host, port} = this.address; + const {hostname} = await dns.lookupService(host, port); + this.name = hostname; + } + } catch (e) { + ; + } + return this.name; + } + /** * Open and perform initial handshake (without rejection). * @method diff --git a/lib/node/rpc.js b/lib/node/rpc.js index b84d0a22..57a08422 100644 --- a/lib/node/rpc.js +++ b/lib/node/rpc.js @@ -456,23 +456,23 @@ class RPC extends RPCBase { const peers = []; for (let peer = this.pool.peers.head(); peer; peer = peer.next) { - let offset = this.network.time.known.get(peer.hostname()); + const offset = this.network.time.known.get(peer.hostname()) || 0; const hashes = []; - if (offset == null) - offset = 0; - for (const hash in peer.blockMap.keys()) { const str = util.revHex(hash); hashes.push(str); } + peer.getName(); + peers.push({ id: peer.id, addr: peer.hostname(), addrlocal: !peer.local.isNull() ? peer.local.hostname : undefined, + name: peer.name || undefined, services: hex32(peer.services), relaytxes: !peer.noRelay, lastsend: peer.lastSend / 1000 | 0,