From fa77dc01df115265eefe1959ee5328c521af2dca Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Thu, 13 Jun 2024 21:01:18 -0400 Subject: [PATCH] apply nits for rate limits --- ...327_custom-rate-limits-for-self-hosting.ts | 2 +- backend/src/server/config/rateLimiter.ts | 30 +++++++++---------- .../services/rate-limit/rate-limit-service.ts | 2 +- .../admin/DashboardPage/RateLimitPanel.tsx | 18 +++++------ 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/backend/src/db/migrations/20240611151327_custom-rate-limits-for-self-hosting.ts b/backend/src/db/migrations/20240611151327_custom-rate-limits-for-self-hosting.ts index 84ad9b5604..c34b2d1968 100644 --- a/backend/src/db/migrations/20240611151327_custom-rate-limits-for-self-hosting.ts +++ b/backend/src/db/migrations/20240611151327_custom-rate-limits-for-self-hosting.ts @@ -20,7 +20,7 @@ export async function up(knex: Knex): Promise { await createOnUpdateTrigger(knex, TableName.RateLimit); - // create rate limit entry + // create init rate limit entry with defaults await knex(TableName.RateLimit).insert({}); } } diff --git a/backend/src/server/config/rateLimiter.ts b/backend/src/server/config/rateLimiter.ts index 0e406da886..819aa617f3 100644 --- a/backend/src/server/config/rateLimiter.ts +++ b/backend/src/server/config/rateLimiter.ts @@ -4,6 +4,21 @@ import { Redis } from "ioredis"; import { getConfig } from "@app/lib/config/env"; import { getRateLimiterConfig } from "@app/services/rate-limit/rate-limit-service"; +export const globalRateLimiterCfg = (): RateLimitPluginOptions => { + const appCfg = getConfig(); + const redis = appCfg.isRedisConfigured + ? new Redis(appCfg.REDIS_URL, { connectTimeout: 500, maxRetriesPerRequest: 1 }) + : null; + + return { + timeWindow: 60 * 1000, + max: 600, + redis, + allowList: (req) => req.url === "/healthcheck" || req.url === "/api/status", + keyGenerator: (req) => req.realIp + }; +}; + // GET endpoints export const readLimit: RateLimitOptions = { timeWindow: 60 * 1000, @@ -60,18 +75,3 @@ export const publicEndpointLimit: RateLimitOptions = { max: () => getRateLimiterConfig().publicEndpointLimit, keyGenerator: (req) => req.realIp }; - -export const globalRateLimiterCfg = (): RateLimitPluginOptions => { - const appCfg = getConfig(); - const redis = appCfg.isRedisConfigured - ? new Redis(appCfg.REDIS_URL, { connectTimeout: 500, maxRetriesPerRequest: 1 }) - : null; - - return { - timeWindow: 60 * 1000, - max: 600, - redis, - allowList: (req) => req.url === "/healthcheck" || req.url === "/api/status", - keyGenerator: (req) => req.realIp - }; -}; diff --git a/backend/src/services/rate-limit/rate-limit-service.ts b/backend/src/services/rate-limit/rate-limit-service.ts index aac10db081..7426280612 100644 --- a/backend/src/services/rate-limit/rate-limit-service.ts +++ b/backend/src/services/rate-limit/rate-limit-service.ts @@ -69,7 +69,7 @@ export const rateLimitServiceFactory = ({ rateLimitDAL }: TRateLimitServiceFacto creationLimit: rateLimit.creationLimit }; - logger.info(`Rate limit configuration: %o`, newRateLimitMaxConfiguration); + logger.info(`syncRateLimitConfiguration: rate limit configuration: %o`, newRateLimitMaxConfiguration); Object.freeze(newRateLimitMaxConfiguration); rateLimitMaxConfiguration = newRateLimitMaxConfiguration; } diff --git a/frontend/src/views/admin/DashboardPage/RateLimitPanel.tsx b/frontend/src/views/admin/DashboardPage/RateLimitPanel.tsx index 85bef017f7..eacb26203e 100644 --- a/frontend/src/views/admin/DashboardPage/RateLimitPanel.tsx +++ b/frontend/src/views/admin/DashboardPage/RateLimitPanel.tsx @@ -87,7 +87,7 @@ export const RateLimitPanel = () => { >
- Set Rate Limits for your Infisical Instance + Configure rate limits
{ defaultValue={300} render={({ field, fieldState: { error } }) => ( { name="writeRateLimit" render={({ field, fieldState: { error } }) => ( { name="secretsRateLimit" render={({ field, fieldState: { error } }) => ( { name="authRateLimit" render={({ field, fieldState: { error } }) => ( { name="inviteUserRateLimit" render={({ field, fieldState: { error } }) => ( { name="mfaRateLimit" render={({ field, fieldState: { error } }) => ( { name="creationLimit" render={({ field, fieldState: { error } }) => ( { name="publicEndpointLimit" render={({ field, fieldState: { error } }) => (