mirror of https://github.com/Chocobozzz/PeerTube
fix(server/video-view): log invalid currentTime req (#6288)
* fix(server/video-view): log invalid currentTime req relates to #6285 * Styling --------- Co-authored-by: Chocobozzz <me@florianbigard.com>pull/6294/head
parent
855def80f6
commit
26de1467e2
|
@ -1,11 +1,11 @@
|
||||||
|
import { HttpStatusCode } from '@peertube/peertube-models'
|
||||||
|
import { logger } from '@server/helpers/logger.js'
|
||||||
import express from 'express'
|
import express from 'express'
|
||||||
import { ProblemDocument, ProblemDocumentExtension } from 'http-problem-details'
|
import { ProblemDocument, ProblemDocumentExtension } from 'http-problem-details'
|
||||||
import { logger } from '@server/helpers/logger.js'
|
|
||||||
import { HttpStatusCode } from '@peertube/peertube-models'
|
|
||||||
|
|
||||||
function apiFailMiddleware (req: express.Request, res: express.Response, next: express.NextFunction) {
|
function apiFailMiddleware (req: express.Request, res: express.Response, next: express.NextFunction) {
|
||||||
res.fail = options => {
|
res.fail = options => {
|
||||||
const { status = HttpStatusCode.BAD_REQUEST_400, message, title, type, data, instance, tags } = options
|
const { status = HttpStatusCode.BAD_REQUEST_400, message, title, type, data, instance, tags, logLevel = 'debug' } = options
|
||||||
|
|
||||||
const extension = new ProblemDocumentExtension({
|
const extension = new ProblemDocumentExtension({
|
||||||
...data,
|
...data,
|
||||||
|
@ -29,7 +29,7 @@ function apiFailMiddleware (req: express.Request, res: express.Response, next: e
|
||||||
: undefined
|
: undefined
|
||||||
}, extension)
|
}, extension)
|
||||||
|
|
||||||
logger.debug('Bad HTTP request.', { json, tags })
|
logger.log(logLevel, 'Bad HTTP request.', { json, tags })
|
||||||
|
|
||||||
res.status(status)
|
res.status(status)
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import express from 'express'
|
|
||||||
import { body, param } from 'express-validator'
|
|
||||||
import { HttpStatusCode } from '@peertube/peertube-models'
|
import { HttpStatusCode } from '@peertube/peertube-models'
|
||||||
import { isVideoTimeValid } from '@server/helpers/custom-validators/video-view.js'
|
import { isVideoTimeValid } from '@server/helpers/custom-validators/video-view.js'
|
||||||
import { getCachedVideoDuration } from '@server/lib/video.js'
|
import { getCachedVideoDuration } from '@server/lib/video.js'
|
||||||
import { LocalVideoViewerModel } from '@server/models/view/local-video-viewer.js'
|
import { LocalVideoViewerModel } from '@server/models/view/local-video-viewer.js'
|
||||||
|
import express from 'express'
|
||||||
|
import { body, param } from 'express-validator'
|
||||||
import { isIdValid, toIntOrNull } from '../../../helpers/custom-validators/misc.js'
|
import { isIdValid, toIntOrNull } from '../../../helpers/custom-validators/misc.js'
|
||||||
import { areValidationErrors, doesVideoExist, isValidVideoIdParam } from '../shared/index.js'
|
import { areValidationErrors, doesVideoExist, isValidVideoIdParam } from '../shared/index.js'
|
||||||
|
|
||||||
|
@ -42,10 +42,12 @@ const videoViewValidator = [
|
||||||
const video = res.locals.onlyImmutableVideo
|
const video = res.locals.onlyImmutableVideo
|
||||||
const { duration } = await getCachedVideoDuration(video.id)
|
const { duration } = await getCachedVideoDuration(video.id)
|
||||||
|
|
||||||
if (!isVideoTimeValid(req.body.currentTime, duration)) {
|
const currentTime = req.body.currentTime
|
||||||
|
if (!isVideoTimeValid(currentTime, duration)) {
|
||||||
return res.fail({
|
return res.fail({
|
||||||
status: HttpStatusCode.BAD_REQUEST_400,
|
status: HttpStatusCode.BAD_REQUEST_400,
|
||||||
message: 'Current time is invalid'
|
message: `Current time ${currentTime} is invalid (video ${video.uuid} duration: ${duration})`,
|
||||||
|
logLevel: 'warn'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,6 +58,6 @@ const videoViewValidator = [
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
export {
|
export {
|
||||||
videoViewValidator,
|
getVideoLocalViewerValidator, videoViewValidator
|
||||||
getVideoLocalViewerValidator
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { HttpMethodType, PeerTubeProblemDocumentData, VideoCreate } from '@peertube/peertube-models'
|
import { HttpMethodType, PeerTubeProblemDocumentData, ServerLogLevel, VideoCreate } from '@peertube/peertube-models'
|
||||||
import { RegisterServerAuthExternalOptions } from '@server/types/index.js'
|
import { RegisterServerAuthExternalOptions } from '@server/types/index.js'
|
||||||
import {
|
import {
|
||||||
MAbuseMessage,
|
MAbuseMessage,
|
||||||
|
@ -109,6 +109,7 @@ declare module 'express' {
|
||||||
|
|
||||||
data?: PeerTubeProblemDocumentData
|
data?: PeerTubeProblemDocumentData
|
||||||
|
|
||||||
|
logLevel?: ServerLogLevel // Default debug
|
||||||
tags?: string[]
|
tags?: string[]
|
||||||
}) => void
|
}) => void
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue