diff --git a/index.js b/index.js index c93a001..9848e6e 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,6 @@ const process = require('process') const crypto = require('crypto') const {spawn} = require('child_process') -const net = require('net') // Handle SIGINT process.on('SIGINT', () => { @@ -462,18 +461,21 @@ class Peer { } else { this.ip = request.connection.remoteAddress; } + + // remove the prefix used for IPv4-translated addresses + if (this.ip.substring(0,7) === "::ffff:") + this.ip = this.ip.substring(7); + // IPv4 and IPv6 use different values to refer to localhost // put all peers on the same network as the server into the same room as well - if (this.ip === '::1' || this.ip === '::ffff:127.0.0.1' || this.ip === '::1' || this.ipIsPrivate(this.ip)) { + if (this.ip === '::1' || this.ipIsPrivate(this.ip)) { this.ip = '127.0.0.1'; } } ipIsPrivate(ip) { - if (ip.substring(0,7) === "::ffff:") - ip = ip.substring(7); - - if (net.isIPv4(ip)) { + // if ip is IPv4 + if (!ip.includes(":")) { // 10.0.0.0 - 10.255.255.255 || 172.16.0.0 - 172.31.255.255 || 192.168.0.0 - 192.168.255.255 return /^(10)\.(.*)\.(.*)\.(.*)$/.test(ip) || /^(172)\.(1[6-9]|2[0-9]|3[0-1])\.(.*)\.(.*)$/.test(ip) || /^(192)\.(168)\.(.*)\.(.*)$/.test(ip) } @@ -485,7 +487,7 @@ class Peer { if (/^fe[c-f][0-f]$/.test(firstWord)) return true; - // These days Unique Local Addresses (ULA) are used in place of Site Local. + // These days Unique Local Addresses (ULA) are used in place of Site Local. // Range: fc00 - fcff else if (/^fc[0-f]{2}$/.test(firstWord)) return true;