X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Faudit-logger.ts;h=0bbfbc753e559a3ba89465ff18d43aac6e4268a7;hb=98813e69bccc568eff771cfcaf907ccdd82ce3f1;hp=7db72b69c5226f537beda46a4e532120fc60edb6;hpb=d9eaee3939bf2e93e5d775d32bce77842201faba;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/audit-logger.ts b/server/helpers/audit-logger.ts index 7db72b69c..0bbfbc753 100644 --- a/server/helpers/audit-logger.ts +++ b/server/helpers/audit-logger.ts @@ -1,13 +1,19 @@ import * as path from 'path' +import * as express from 'express' import { diff } from 'deep-object-diff' import { chain } from 'lodash' import * as flatten from 'flat' import * as winston from 'winston' -import { CONFIG } from '../initializers' import { jsonLoggerFormat, labelFormatter } from './logger' -import { VideoDetails, User, VideoChannel, VideoAbuse, VideoImport } from '../../shared' +import { User, VideoAbuse, VideoChannel, VideoDetails, VideoImport } from '../../shared' import { VideoComment } from '../../shared/models/videos/video-comment.model' import { CustomConfig } from '../../shared/models/server/custom-config.model' +import { CONFIG } from '../initializers/config' +import { AUDIT_LOG_FILENAME } from '@server/initializers/constants' + +function getAuditIdFromRes (res: express.Response) { + return res.locals.oauth.token.User.username +} enum AUDIT_TYPE { CREATE = 'create', @@ -24,13 +30,13 @@ const auditLogger = winston.createLogger({ levels: { audit: 0 }, transports: [ new winston.transports.File({ - filename: path.join(CONFIG.STORAGE.LOG_DIR, 'peertube-audit.log'), + filename: path.join(CONFIG.STORAGE.LOG_DIR, AUDIT_LOG_FILENAME), level: 'audit', maxsize: 5242880, maxFiles: 5, format: winston.format.combine( winston.format.timestamp(), - labelFormatter, + labelFormatter(), winston.format.splat(), jsonLoggerFormat ) @@ -75,7 +81,8 @@ function auditLoggerFactory (domain: string) { } abstract class EntityAuditView { - constructor (private keysToKeep: Array, private prefix: string, private entityInfos: object) { } + constructor (private readonly keysToKeep: string[], private readonly prefix: string, private readonly entityInfos: object) { } + toLogKeys (): object { return chain(flatten(this.entityInfos, { delimiter: '-', safe: true })) .pick(this.keysToKeep) @@ -111,10 +118,11 @@ const videoKeysToKeep = [ 'channel-uuid', 'channel-name', 'support', - 'commentsEnabled' + 'commentsEnabled', + 'downloadEnabled' ] class VideoAuditView extends EntityAuditView { - constructor (private video: VideoDetails) { + constructor (private readonly video: VideoDetails) { super(videoKeysToKeep, 'video', video) } } @@ -125,7 +133,7 @@ const videoImportKeysToKeep = [ 'video-name' ] class VideoImportAuditView extends EntityAuditView { - constructor (private videoImport: VideoImport) { + constructor (private readonly videoImport: VideoImport) { super(videoImportKeysToKeep, 'video-import', videoImport) } } @@ -144,7 +152,7 @@ const commentKeysToKeep = [ 'account-name' ] class CommentAuditView extends EntityAuditView { - constructor (private comment: VideoComment) { + constructor (private readonly comment: VideoComment) { super(commentKeysToKeep, 'comment', comment) } } @@ -173,7 +181,7 @@ const userKeysToKeep = [ 'videoChannels' ] class UserAuditView extends EntityAuditView { - constructor (private user: User) { + constructor (private readonly user: User) { super(userKeysToKeep, 'user', user) } } @@ -199,7 +207,7 @@ const channelKeysToKeep = [ 'ownerAccount-displayedName' ] class VideoChannelAuditView extends EntityAuditView { - constructor (private channel: VideoChannel) { + constructor (private readonly channel: VideoChannel) { super(channelKeysToKeep, 'channel', channel) } } @@ -214,7 +222,7 @@ const videoAbuseKeysToKeep = [ 'createdAt' ] class VideoAbuseAuditView extends EntityAuditView { - constructor (private videoAbuse: VideoAbuse) { + constructor (private readonly videoAbuse: VideoAbuse) { super(videoAbuseKeysToKeep, 'abuse', videoAbuse) } } @@ -246,15 +254,20 @@ class CustomConfigAuditView extends EntityAuditView { const infos: any = customConfig const resolutionsDict = infos.transcoding.resolutions const resolutionsArray = [] - Object.entries(resolutionsDict).forEach(([resolution, isEnabled]) => { - if (isEnabled) resolutionsArray.push(resolution) - }) + + Object.entries(resolutionsDict) + .forEach(([ resolution, isEnabled ]) => { + if (isEnabled) resolutionsArray.push(resolution) + }) + Object.assign({}, infos, { transcoding: { resolutions: resolutionsArray } }) super(customConfigKeysToKeep, 'config', infos) } } export { + getAuditIdFromRes, + auditLoggerFactory, VideoImportAuditView, VideoChannelAuditView,