Skip to content

Commit 2e0f4d3

Browse files
fix: use real ip in throttler [v2] (#20606)
1 parent c2fd990 commit 2e0f4d3

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

apps/api/v2/src/lib/throttler-guard.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,13 @@ export class CustomThrottlerGuard extends ThrottlerGuard {
5454
const { context } = requestProps;
5555

5656
const request = context.switchToHttp().getRequest<Request>();
57+
const IP = request?.headers?.["cf-connecting-ip"] ?? request?.headers?.["CF-Connecting-IP"] ?? request.ip;
5758
const response = context.switchToHttp().getResponse<Response>();
5859
const tracker = await this.getTracker(request);
5960
this.logger.verbose(
6061
`Tracker "${tracker}" generated based on: Bearer token "${request.get(
6162
"Authorization"
62-
)}", OAuth client ID "${request.get(X_CAL_CLIENT_ID)}" and IP "${request.ip}"`
63+
)}", OAuth client ID "${request.get(X_CAL_CLIENT_ID)}" and IP "${IP}"`
6364
);
6465

6566
if (tracker.startsWith("api_key_")) {
@@ -209,6 +210,7 @@ export class CustomThrottlerGuard extends ThrottlerGuard {
209210

210211
protected async getTracker(request: Request): Promise<string> {
211212
const authorizationHeader = request.get("Authorization")?.replace("Bearer ", "");
213+
const IP = request?.headers?.["cf-connecting-ip"] ?? request?.headers?.["CF-Connecting-IP"] ?? request.ip;
212214

213215
if (authorizationHeader) {
214216
const apiKeyPrefix = getEnv("API_KEY_PREFIX", "cal_");
@@ -223,8 +225,8 @@ export class CustomThrottlerGuard extends ThrottlerGuard {
223225
return `oauth_client_${oauthClientId}`;
224226
}
225227

226-
if (request.ip) {
227-
return `ip_${request.ip}`;
228+
if (IP) {
229+
return `ip_${IP}`;
228230
}
229231

230232
this.logger.verbose(`no tracker found: ${request.url}`);

0 commit comments

Comments
 (0)