X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Flogs.ts;h=2d828bb429a9eb603118fe13621205b6fb7e94b2;hb=2c015b54192f2080f756c424173bac2bd53e7ca9;hp=03c1c4df15bb2ca255864f00cc241ed58f169d88;hpb=41fb13c330de629df2d23379209e79c7af0f2e9a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/logs.ts b/server/middlewares/validators/logs.ts index 03c1c4df1..2d828bb42 100644 --- a/server/middlewares/validators/logs.ts +++ b/server/middlewares/validators/logs.ts @@ -1,23 +1,69 @@ import express from 'express' -import { query } from 'express-validator' -import { isValidLogLevel } from '../../helpers/custom-validators/logs' +import { body, query } from 'express-validator' +import { isUrlValid } from '@server/helpers/custom-validators/activitypub/misc' +import { isStringArray } from '@server/helpers/custom-validators/search' +import { CONFIG } from '@server/initializers/config' +import { arrayify } from '@shared/core-utils' +import { HttpStatusCode } from '@shared/models' +import { + isValidClientLogLevel, + isValidClientLogMessage, + isValidClientLogMeta, + isValidClientLogStackTrace, + isValidClientLogUserAgent, + isValidLogLevel +} from '../../helpers/custom-validators/logs' import { isDateValid } from '../../helpers/custom-validators/misc' -import { logger } from '../../helpers/logger' import { areValidationErrors } from './shared' +const createClientLogValidator = [ + body('message') + .custom(isValidClientLogMessage), + + body('url') + .custom(isUrlValid), + + body('level') + .custom(isValidClientLogLevel), + + body('stackTrace') + .optional() + .custom(isValidClientLogStackTrace), + + body('meta') + .optional() + .custom(isValidClientLogMeta), + + body('userAgent') + .optional() + .custom(isValidClientLogUserAgent), + + (req: express.Request, res: express.Response, next: express.NextFunction) => { + if (CONFIG.LOG.ACCEPT_CLIENT_LOG !== true) { + return res.sendStatus(HttpStatusCode.FORBIDDEN_403) + } + + if (areValidationErrors(req, res)) return + + return next() + } +] + const getLogsValidator = [ query('startDate') .custom(isDateValid).withMessage('Should have a start date that conforms to ISO 8601'), query('level') .optional() - .custom(isValidLogLevel).withMessage('Should have a valid level'), + .custom(isValidLogLevel), + query('tagsOneOf') + .optional() + .customSanitizer(arrayify) + .custom(isStringArray).withMessage('Should have a valid one of tags array'), query('endDate') .optional() .custom(isDateValid).withMessage('Should have an end date that conforms to ISO 8601'), (req: express.Request, res: express.Response, next: express.NextFunction) => { - logger.debug('Checking getLogsValidator parameters.', { parameters: req.query }) - if (areValidationErrors(req, res)) return return next() @@ -32,8 +78,6 @@ const getAuditLogsValidator = [ .custom(isDateValid).withMessage('Should have a end date that conforms to ISO 8601'), (req: express.Request, res: express.Response, next: express.NextFunction) => { - logger.debug('Checking getAuditLogsValidator parameters.', { parameters: req.query }) - if (areValidationErrors(req, res)) return return next() @@ -44,5 +88,6 @@ const getAuditLogsValidator = [ export { getLogsValidator, - getAuditLogsValidator + getAuditLogsValidator, + createClientLogValidator }