Fix usercounter behind cloudflare

This commit is contained in:
Ajay 2024-02-27 03:33:38 -05:00
parent aec2aa4457
commit 9bcceb7e5b
2 changed files with 6 additions and 3 deletions

View file

@ -12,7 +12,7 @@ export function userCounter(req: Request, res: Response, next: NextFunction): vo
if (Math.random() < 1 / config.userCounterRatio) {
axios({
method: "post",
url: `${config.userCounterURL}/api/v1/addIP?hashedIP=${getIP(req)}`,
url: `${config.userCounterURL}/api/v1/addIP?hashedIP=${getIP(req, true)}`,
httpAgent
}).catch(() => /* instanbul skip next */ Logger.debug(`Failing to connect to user counter at: ${config.userCounterURL}`));
}

View file

@ -2,7 +2,7 @@ import { config } from "../config";
import { Request } from "express";
import { IPAddress } from "../types/segments.model";
export function getIP(req: Request): IPAddress {
export function getIP(req: Request, checkCloudflare = false): IPAddress {
// if in testing mode, return immediately
if (config.mode === "test") return "127.0.0.1" as IPAddress;
@ -10,11 +10,14 @@ export function getIP(req: Request): IPAddress {
config.behindProxy = "X-Forwarded-For";
}
const cloudflareIP = req.headers["cf-connecting-ip"] as IPAddress;
if (checkCloudflare && cloudflareIP) return cloudflareIP;
switch (config.behindProxy as string) {
case "X-Forwarded-For":
return req.headers["x-forwarded-for"] as IPAddress;
case "Cloudflare":
return req.headers["cf-connecting-ip"] as IPAddress;
return cloudflareIP;
case "X-Real-IP":
return req.headers["x-real-ip"] as IPAddress;
default: