| | import { RateLimitPrefix } from 'librechat-data-provider'; |
| | import type { TCustomConfig } from 'librechat-data-provider'; |
| |
|
| | |
| | |
| | |
| | |
| | export const handleRateLimits = (rateLimits?: TCustomConfig['rateLimits']) => { |
| | if (!rateLimits) { |
| | return; |
| | } |
| |
|
| | const rateLimitKeys = { |
| | fileUploads: RateLimitPrefix.FILE_UPLOAD, |
| | conversationsImport: RateLimitPrefix.IMPORT, |
| | tts: RateLimitPrefix.TTS, |
| | stt: RateLimitPrefix.STT, |
| | }; |
| |
|
| | Object.entries(rateLimitKeys).forEach(([key, prefix]) => { |
| | const rateLimit = rateLimits[key as keyof typeof rateLimitKeys]; |
| | if (rateLimit) { |
| | setRateLimitEnvVars(prefix, rateLimit); |
| | } |
| | }); |
| | }; |
| |
|
| | type RateLimitConfig = { |
| | ipMax?: number | undefined; |
| | ipWindowInMinutes?: number | undefined; |
| | userMax?: number | undefined; |
| | userWindowInMinutes?: number | undefined; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | const setRateLimitEnvVars = (prefix: string, rateLimit: RateLimitConfig) => { |
| | const envVarsMapping = { |
| | ipMax: `${prefix}_IP_MAX`, |
| | ipWindowInMinutes: `${prefix}_IP_WINDOW`, |
| | userMax: `${prefix}_USER_MAX`, |
| | userWindowInMinutes: `${prefix}_USER_WINDOW`, |
| | }; |
| |
|
| | Object.entries(envVarsMapping).forEach(([key, envVar]) => { |
| | const value = rateLimit[key as keyof RateLimitConfig]; |
| | if (value !== undefined) { |
| | process.env[envVar] = value.toString(); |
| | } |
| | }); |
| | }; |
| |
|