X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fvalidators%2Flogs.ts;h=2d828bb429a9eb603118fe13621205b6fb7e94b2;hb=cea2fd90ddb3bf57c2fed77128938d12d4c2be6b;hp=ba817d9a9e19a418d297511883be3119aa29977a;hpb=70330f63236a3200829f2ba76c10cca88326b858;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/validators/logs.ts b/server/middlewares/validators/logs.ts index ba817d9a9..2d828bb42 100644 --- a/server/middlewares/validators/logs.ts +++ b/server/middlewares/validators/logs.ts @@ -1,23 +1,69 @@ -import * as express from 'express' -import { logger } from '../../helpers/logger' -import { areValidationErrors } from './utils' +import express from 'express' +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 { query } from 'express-validator' -import { isValidLogLevel } from '../../helpers/custom-validators/logs' +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 }