diff --git a/src/sysinfo.js b/src/sysinfo.js index bd983148a..d5356e819 100644 --- a/src/sysinfo.js +++ b/src/sysinfo.js @@ -28,10 +28,11 @@ async function getServerIPv4() { return await api(config.provider).getServerIPv4(config); } +// returns RFC 5952 formatted address (https://datatracker.ietf.org/doc/html/rfc5952) async function getServerIPv6() { const config = await settings.getSysinfoConfig(); - return await api(config.provider).getServerIPv4(config); + return await api(config.provider).getServerIPv6(config); } function hasIPv6() { diff --git a/src/sysinfo/fixed.js b/src/sysinfo/fixed.js index 7dedee0a2..d9020ef7e 100644 --- a/src/sysinfo/fixed.js +++ b/src/sysinfo/fixed.js @@ -19,7 +19,9 @@ async function getServerIPv4(config) { async function getServerIPv6(config) { assert.strictEqual(typeof config, 'object'); - return config.ipv6; + if ('ipv6' in config) return config.ipv6; + + throw new BoxError(BoxError.NETWORK_ERROR, 'No IPv6 configured'); } async function testConfig(config) { diff --git a/src/sysinfo/generic.js b/src/sysinfo/generic.js index 92281912a..81dfb3e65 100644 --- a/src/sysinfo/generic.js +++ b/src/sysinfo/generic.js @@ -42,7 +42,7 @@ async function getServerIPv4(config) { async function getServerIPv6(config) { assert.strictEqual(typeof config, 'object'); - if (process.env.BOX_ENV === 'test') return '127.0.0.1'; + if (process.env.BOX_ENV === 'test') return '::1'; return await promiseRetry({ times: 10, interval: 5000, debug }, async () => { debug('getServerIPv6: getting server IP'); diff --git a/src/sysinfo/network-interface.js b/src/sysinfo/network-interface.js index a5ea428ff..9fc822eb3 100644 --- a/src/sysinfo/network-interface.js +++ b/src/sysinfo/network-interface.js @@ -34,7 +34,7 @@ async function getServerIPv6(config) { if (!iface) throw new BoxError(BoxError.NETWORK_ERROR, `No interface named ${config.ifname}`); const addresses = iface.filter(i => i.family === 'IPv6').map(i => i.address); - if (addresses.length === 0) throw new BoxError(BoxError.NETWORK_ERROR, `${config.ifname} does not have any IPv4 address`); + if (addresses.length === 0) throw new BoxError(BoxError.NETWORK_ERROR, `${config.ifname} does not have any IPv6 address`); if (addresses.length > 1) debug(`${config.ifname} has multiple ipv6 - ${JSON.stringify(addresses)}. choosing the first one.`); return addresses[0];