mirror of
https://github.com/fluencelabs/js-libp2p-utils
synced 2025-04-25 23:02:26 +00:00
31 lines
610 B
JavaScript
31 lines
610 B
JavaScript
|
'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')
|
||
|
}
|