apply nits for rate limits

This commit is contained in:
Maidul Islam
2024-06-13 21:01:18 -04:00
parent b52aebfd92
commit fa77dc01df
4 changed files with 26 additions and 26 deletions
@@ -20,7 +20,7 @@ export async function up(knex: Knex): Promise<void> {
await createOnUpdateTrigger(knex, TableName.RateLimit); await createOnUpdateTrigger(knex, TableName.RateLimit);
// create rate limit entry // create init rate limit entry with defaults
await knex(TableName.RateLimit).insert({}); await knex(TableName.RateLimit).insert({});
} }
} }
+15 -15
View File
@@ -4,6 +4,21 @@ import { Redis } from "ioredis";
import { getConfig } from "@app/lib/config/env"; import { getConfig } from "@app/lib/config/env";
import { getRateLimiterConfig } from "@app/services/rate-limit/rate-limit-service"; 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 // GET endpoints
export const readLimit: RateLimitOptions = { export const readLimit: RateLimitOptions = {
timeWindow: 60 * 1000, timeWindow: 60 * 1000,
@@ -60,18 +75,3 @@ export const publicEndpointLimit: RateLimitOptions = {
max: () => getRateLimiterConfig().publicEndpointLimit, max: () => getRateLimiterConfig().publicEndpointLimit,
keyGenerator: (req) => req.realIp 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
};
};
@@ -69,7 +69,7 @@ export const rateLimitServiceFactory = ({ rateLimitDAL }: TRateLimitServiceFacto
creationLimit: rateLimit.creationLimit creationLimit: rateLimit.creationLimit
}; };
logger.info(`Rate limit configuration: %o`, newRateLimitMaxConfiguration); logger.info(`syncRateLimitConfiguration: rate limit configuration: %o`, newRateLimitMaxConfiguration);
Object.freeze(newRateLimitMaxConfiguration); Object.freeze(newRateLimitMaxConfiguration);
rateLimitMaxConfiguration = newRateLimitMaxConfiguration; rateLimitMaxConfiguration = newRateLimitMaxConfiguration;
} }
@@ -87,7 +87,7 @@ export const RateLimitPanel = () => {
> >
<div className="mb-8 flex flex-col justify-start"> <div className="mb-8 flex flex-col justify-start">
<div className="mb-4 text-xl font-semibold text-mineshaft-100"> <div className="mb-4 text-xl font-semibold text-mineshaft-100">
Set Rate Limits for your Infisical Instance Configure rate limits
</div> </div>
<Controller <Controller
control={control} control={control}
@@ -95,7 +95,7 @@ export const RateLimitPanel = () => {
defaultValue={300} defaultValue={300}
render={({ field, fieldState: { error } }) => ( render={({ field, fieldState: { error } }) => (
<FormControl <FormControl
label="Global Read Requests per minute" label="Global read requests per minute"
className="w-72" className="w-72"
isError={Boolean(error)} isError={Boolean(error)}
errorText={error?.message} errorText={error?.message}
@@ -114,7 +114,7 @@ export const RateLimitPanel = () => {
name="writeRateLimit" name="writeRateLimit"
render={({ field, fieldState: { error } }) => ( render={({ field, fieldState: { error } }) => (
<FormControl <FormControl
label="Global Write Requests per minute" label="Global write requests per minute"
className="w-72" className="w-72"
isError={Boolean(error)} isError={Boolean(error)}
errorText={error?.message} errorText={error?.message}
@@ -133,7 +133,7 @@ export const RateLimitPanel = () => {
name="secretsRateLimit" name="secretsRateLimit"
render={({ field, fieldState: { error } }) => ( render={({ field, fieldState: { error } }) => (
<FormControl <FormControl
label="Secret Requests per minute" label="Secret requests per minute"
className="w-72" className="w-72"
isError={Boolean(error)} isError={Boolean(error)}
errorText={error?.message} errorText={error?.message}
@@ -152,7 +152,7 @@ export const RateLimitPanel = () => {
name="authRateLimit" name="authRateLimit"
render={({ field, fieldState: { error } }) => ( render={({ field, fieldState: { error } }) => (
<FormControl <FormControl
label="Auth Requests per minute" label="Auth requests per minute"
className="w-72" className="w-72"
isError={Boolean(error)} isError={Boolean(error)}
errorText={error?.message} errorText={error?.message}
@@ -171,7 +171,7 @@ export const RateLimitPanel = () => {
name="inviteUserRateLimit" name="inviteUserRateLimit"
render={({ field, fieldState: { error } }) => ( render={({ field, fieldState: { error } }) => (
<FormControl <FormControl
label="Invite User Requests per minute" label="User invitation requests per minute"
className="w-72" className="w-72"
isError={Boolean(error)} isError={Boolean(error)}
errorText={error?.message} errorText={error?.message}
@@ -190,7 +190,7 @@ export const RateLimitPanel = () => {
name="mfaRateLimit" name="mfaRateLimit"
render={({ field, fieldState: { error } }) => ( render={({ field, fieldState: { error } }) => (
<FormControl <FormControl
label="Multi Factor Auth Requests per minute" label="Multi factor auth requests per minute"
className="w-72" className="w-72"
isError={Boolean(error)} isError={Boolean(error)}
errorText={error?.message} errorText={error?.message}
@@ -209,7 +209,7 @@ export const RateLimitPanel = () => {
name="creationLimit" name="creationLimit"
render={({ field, fieldState: { error } }) => ( render={({ field, fieldState: { error } }) => (
<FormControl <FormControl
label="Creation Requests per minute" label="New resource creation requests per minute"
className="w-72" className="w-72"
isError={Boolean(error)} isError={Boolean(error)}
errorText={error?.message} errorText={error?.message}
@@ -228,7 +228,7 @@ export const RateLimitPanel = () => {
name="publicEndpointLimit" name="publicEndpointLimit"
render={({ field, fieldState: { error } }) => ( render={({ field, fieldState: { error } }) => (
<FormControl <FormControl
label="Secret Sharing Requests per minute" label="Secret sharing requests per minute"
className="w-72" className="w-72"
isError={Boolean(error)} isError={Boolean(error)}
errorText={error?.message} errorText={error?.message}