Fix substring error if remoteAddress is undefined and replace deprecated `request.connection` with `request.socket` (fixes #308)

This commit is contained in:
schlagmichdoch 2024-07-13 21:32:57 +02:00
parent e6f2c776dc
commit 04d65da779
1 changed files with 7 additions and 4 deletions

View File

@ -44,15 +44,18 @@ export default class Peer {
_setIP(request) { _setIP(request) {
if (request.headers['cf-connecting-ip']) { if (request.headers['cf-connecting-ip']) {
this.ip = request.headers['cf-connecting-ip'].split(/\s*,\s*/)[0]; this.ip = request.headers['cf-connecting-ip'].split(/\s*,\s*/)[0];
} else if (request.headers['x-forwarded-for']) { }
else if (request.headers['x-forwarded-for']) {
this.ip = request.headers['x-forwarded-for'].split(/\s*,\s*/)[0]; this.ip = request.headers['x-forwarded-for'].split(/\s*,\s*/)[0];
} else { }
this.ip = request.connection.remoteAddress; else {
this.ip = request.socket.remoteAddress ?? '';
} }
// remove the prefix used for IPv4-translated addresses // remove the prefix used for IPv4-translated addresses
if (this.ip.substring(0,7) === "::ffff:") if (this.ip.substring(0,7) === "::ffff:") {
this.ip = this.ip.substring(7); this.ip = this.ip.substring(7);
}
let ipv6_was_localized = false; let ipv6_was_localized = false;
if (this.conf.ipv6Localize && this.ip.includes(':')) { if (this.conf.ipv6Localize && this.ip.includes(':')) {