2016-08-05 14:22:18 +02:00
|
|
|
'use strict'
|
|
|
|
|
|
|
|
const multiaddr = require('multiaddr')
|
|
|
|
const Address6 = require('ip-address').Address6
|
2018-07-23 03:48:26 +00:00
|
|
|
const debug = require('debug')
|
|
|
|
const log = debug('libp2p:tcp:get-multiaddr')
|
2016-08-05 14:22:18 +02:00
|
|
|
|
|
|
|
module.exports = (socket) => {
|
2018-02-07 06:40:00 +00:00
|
|
|
let ma
|
2016-08-05 14:22:18 +02:00
|
|
|
|
2018-07-23 03:48:26 +00:00
|
|
|
try {
|
|
|
|
if (socket.remoteFamily === 'IPv6') {
|
|
|
|
const addr = new Address6(socket.remoteAddress)
|
2018-02-07 06:40:00 +00:00
|
|
|
|
2018-07-23 03:48:26 +00:00
|
|
|
if (addr.v4) {
|
|
|
|
const ip4 = addr.to4().correctForm()
|
|
|
|
ma = multiaddr('/ip4/' + ip4 +
|
|
|
|
'/tcp/' + socket.remotePort
|
|
|
|
)
|
|
|
|
} else {
|
|
|
|
ma = multiaddr('/ip6/' + socket.remoteAddress +
|
|
|
|
'/tcp/' + socket.remotePort
|
|
|
|
)
|
|
|
|
}
|
2016-08-05 14:22:18 +02:00
|
|
|
} else {
|
2018-07-23 03:48:26 +00:00
|
|
|
ma = multiaddr('/ip4/' + socket.remoteAddress +
|
|
|
|
'/tcp/' + socket.remotePort)
|
2016-08-05 14:22:18 +02:00
|
|
|
}
|
2018-07-23 03:48:26 +00:00
|
|
|
} catch (err) {
|
|
|
|
log(err)
|
2016-08-05 14:22:18 +02:00
|
|
|
}
|
2018-02-07 06:40:00 +00:00
|
|
|
return ma
|
2016-08-05 14:22:18 +02:00
|
|
|
}
|