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;