peer: add reverse dns lookup.

This commit is contained in:
Christopher Jeffrey 2017-12-20 11:27:42 -08:00
parent 03ddc79dfc
commit d5a2609f75
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
2 changed files with 24 additions and 4 deletions

View File

@ -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

View File

@ -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,