mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 08:50:15 +01:00
🛠 feat: Enhance Redis Integration, Rate Limiters & Log Headers (#6462)
* feat: Implement Redis-based rate limiting, initially import limits * feat: Enhance rate limiters with Redis support and custom prefixes * chore: import orders * chore: update JSDoc for next middleware parameter type in ban and limiter middleware * feat: add logHeaders middleware to log forwarded headers in requests * refactor: change log level from info to debug for Redis rate limiters * feat: increase Redis max listeners and refactor session storage to use Keyv
This commit is contained in:
parent
e928a8eee4
commit
cbba914290
20 changed files with 337 additions and 63 deletions
32
api/server/middleware/logHeaders.js
Normal file
32
api/server/middleware/logHeaders.js
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
const { logger } = require('~/config');
|
||||
|
||||
/**
|
||||
* Middleware to log Forwarded Headers
|
||||
* @function
|
||||
* @param {ServerRequest} req - Express request object containing user information.
|
||||
* @param {ServerResponse} res - Express response object.
|
||||
* @param {import('express').NextFunction} next - Next middleware function.
|
||||
* @throws {Error} Throws an error if the user exceeds the concurrent request limit.
|
||||
*/
|
||||
const logHeaders = (req, res, next) => {
|
||||
try {
|
||||
const forwardedHeaders = {};
|
||||
if (req.headers['x-forwarded-for']) {
|
||||
forwardedHeaders['x-forwarded-for'] = req.headers['x-forwarded-for'];
|
||||
}
|
||||
if (req.headers['x-forwarded-host']) {
|
||||
forwardedHeaders['x-forwarded-host'] = req.headers['x-forwarded-host'];
|
||||
}
|
||||
if (req.headers['x-forwarded-proto']) {
|
||||
forwardedHeaders['x-forwarded-proto'] = req.headers['x-forwarded-proto'];
|
||||
}
|
||||
if (Object.keys(forwardedHeaders).length > 0) {
|
||||
logger.debug('X-Forwarded headers detected in OAuth request:', forwardedHeaders);
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error('Error logging X-Forwarded headers:', error);
|
||||
}
|
||||
next();
|
||||
};
|
||||
|
||||
module.exports = logHeaders;
|
||||
Loading…
Add table
Add a link
Reference in a new issue