diff --git a/config.json.example b/config.json.example index ccda7e2..c548ffc 100644 --- a/config.json.example +++ b/config.json.example @@ -8,7 +8,7 @@ "discordReportChannelWebhookURL": null, //URL from discord if you would like notifications when someone makes a report [optional] "discordFirstTimeSubmissionsWebhookURL": null, //URL from discord if you would like notifications when someone makes a first time submission [optional] "discordCompletelyIncorrectReportWebhookURL": null, //URL from discord if you would like notifications when someone reports a submission as completely incorrect [optional] - "behindProxy": true, + "behindProxy": "X-Forwarded-For", //Options: "X-Forwarded-For", "Cloudflare", "X-Real-IP", anything else will mean it is not behind a proxy. True defaults to "X-Forwarded-For" "db": "./databases/sponsorTimes.db", "privateDB": "./databases/private.db", "createDatabaseIfNotExist": true, //This will run on startup every time (unless readOnly is true) - so ensure "create table if not exists" is used in the schema diff --git a/src/utils/getIP.js b/src/utils/getIP.js index 78244fa..e8d0c26 100644 --- a/src/utils/getIP.js +++ b/src/utils/getIP.js @@ -2,5 +2,16 @@ var fs = require('fs'); var config = require('../config.js'); module.exports = function getIP(req) { - return config.behindProxy ? req.headers['x-forwarded-for'] : req.connection.remoteAddress; + if (config.behindProxy === true) config.behindProxy = "X-Forwarded-For"; + + switch (config.behindProxy) { + case "X-Forwarded-For": + return req.headers['X-Forwarded-For']; + case "Cloudflare": + return req.headers['CF-Connecting-IP']; + case "X-Real-IP": + return req.headers['X-Real-IP']; + default: + return req.connection.remoteAddress; + } } \ No newline at end of file