js-libp2p-utils/src/ip-port-to-multiaddr.js

31 lines
610 B
JavaScript
Raw Normal View History

2019-09-23 17:39:32 +02:00
'use strict'
const multiaddr = require('multiaddr')
const { Address4, Address6 } = require('ip-address')
module.exports = (ip, port) => {
if (typeof ip !== 'string') {
throw new Error('invalid ip')
}
port = parseInt(port)
if (isNaN(port)) {
throw new Error('invalid port')
}
if (new Address4(ip).isValid()) {
return multiaddr(`/ip4/${ip}/tcp/${port}`)
}
const ip6 = new Address6(ip)
if (ip6.isValid()) {
return ip6.is4()
? multiaddr(`/ip4/${ip6.to4().correctForm()}/tcp/${port}`)
: multiaddr(`/ip6/${ip}/tcp/${port}`)
}
throw new Error('invalid ip')
}