| const uap = require('ua-parser-js'); | |
| const { handleError } = require('../utils'); | |
| const { logViolation } = require('../../cache'); | |
| /** | |
| * Middleware to parse User-Agent header and check if it's from a recognized browser. | |
| * If the User-Agent is not recognized as a browser, logs a violation and sends an error response. | |
| * | |
| * @function | |
| * @async | |
| * @param {Object} req - Express request object. | |
| * @param {Object} res - Express response object. | |
| * @param {Function} next - Express next middleware function. | |
| * @returns {void} Sends an error response if the User-Agent is not recognized as a browser. | |
| * | |
| * @example | |
| * app.use(uaParser); | |
| */ | |
| async function uaParser(req, res, next) { | |
| const { NON_BROWSER_VIOLATION_SCORE: score = 20 } = process.env; | |
| const ua = uap(req.headers['user-agent']); | |
| if (!ua.browser.name) { | |
| const type = 'non_browser'; | |
| await logViolation(req, res, type, { type }, score); | |
| return handleError(res, { message: 'Illegal request' }); | |
| } | |
| next(); | |
| } | |
| module.exports = uaParser; | |