X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Faudit-logger.ts;h=7e8a03e8fc4b974d35feec3c4adf17c0649dd537;hb=ce1b5ba78c35cfd4df123cab49aef1d14ca0f9b7;hp=884bd187d3ae6135b3811ab91c5a7726a625eb94;hpb=2b02c520e66ea452687cab39401b371711caa9ed;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/audit-logger.ts b/server/helpers/audit-logger.ts index 884bd187d..7e8a03e8f 100644 --- a/server/helpers/audit-logger.ts +++ b/server/helpers/audit-logger.ts @@ -1,13 +1,11 @@ import { diff } from 'deep-object-diff' -import * as express from 'express' -import * as flatten from 'flat' +import express from 'express' +import flatten from 'flat' import { chain } from 'lodash' -import * as path from 'path' -import * as winston from 'winston' +import { join } from 'path' +import { addColors, config, createLogger, format, transports } from 'winston' import { AUDIT_LOG_FILENAME } from '@server/initializers/constants' -import { AdminAbuse, User, VideoChannel, VideoDetails, VideoImport } from '../../shared' -import { CustomConfig } from '../../shared/models/server/custom-config.model' -import { VideoComment } from '../../shared/models/videos/comment/video-comment.model' +import { AdminAbuse, CustomConfig, User, VideoChannel, VideoChannelSync, VideoComment, VideoDetails, VideoImport } from '@shared/models' import { CONFIG } from '../initializers/config' import { jsonLoggerFormat, labelFormatter } from './logger' @@ -21,23 +19,23 @@ enum AUDIT_TYPE { DELETE = 'delete' } -const colors = winston.config.npm.colors -colors.audit = winston.config.npm.colors.info +const colors = config.npm.colors +colors.audit = config.npm.colors.info -winston.addColors(colors) +addColors(colors) -const auditLogger = winston.createLogger({ +const auditLogger = createLogger({ levels: { audit: 0 }, transports: [ - new winston.transports.File({ - filename: path.join(CONFIG.STORAGE.LOG_DIR, AUDIT_LOG_FILENAME), + new transports.File({ + filename: join(CONFIG.STORAGE.LOG_DIR, AUDIT_LOG_FILENAME), level: 'audit', maxsize: 5242880, maxFiles: 5, - format: winston.format.combine( - winston.format.timestamp(), + format: format.combine( + format.timestamp(), labelFormatter(), - winston.format.splat(), + format.splat(), jsonLoggerFormat ) }) @@ -84,9 +82,9 @@ abstract class EntityAuditView { constructor (private readonly keysToKeep: string[], private readonly prefix: string, private readonly entityInfos: object) { } toLogKeys (): object { - return chain(flatten(this.entityInfos, { delimiter: '-', safe: true })) + return chain(flatten(this.entityInfos, { delimiter: '-', safe: true })) .pick(this.keysToKeep) - .mapKeys((value, key) => `${this.prefix}-${key}`) + .mapKeys((_value, key) => `${this.prefix}-${key}`) .value() } } @@ -122,7 +120,7 @@ const videoKeysToKeep = [ 'downloadEnabled' ] class VideoAuditView extends EntityAuditView { - constructor (private readonly video: VideoDetails) { + constructor (video: VideoDetails) { super(videoKeysToKeep, 'video', video) } } @@ -133,7 +131,7 @@ const videoImportKeysToKeep = [ 'video-name' ] class VideoImportAuditView extends EntityAuditView { - constructor (private readonly videoImport: VideoImport) { + constructor (videoImport: VideoImport) { super(videoImportKeysToKeep, 'video-import', videoImport) } } @@ -152,7 +150,7 @@ const commentKeysToKeep = [ 'account-name' ] class CommentAuditView extends EntityAuditView { - constructor (private readonly comment: VideoComment) { + constructor (comment: VideoComment) { super(commentKeysToKeep, 'comment', comment) } } @@ -181,7 +179,7 @@ const userKeysToKeep = [ 'videoChannels' ] class UserAuditView extends EntityAuditView { - constructor (private readonly user: User) { + constructor (user: User) { super(userKeysToKeep, 'user', user) } } @@ -207,7 +205,7 @@ const channelKeysToKeep = [ 'ownerAccount-displayedName' ] class VideoChannelAuditView extends EntityAuditView { - constructor (private readonly channel: VideoChannel) { + constructor (channel: VideoChannel) { super(channelKeysToKeep, 'channel', channel) } } @@ -219,7 +217,7 @@ const abuseKeysToKeep = [ 'createdAt' ] class AbuseAuditView extends EntityAuditView { - constructor (private readonly abuse: AdminAbuse) { + constructor (abuse: AdminAbuse) { super(abuseKeysToKeep, 'abuse', abuse) } } @@ -262,6 +260,18 @@ class CustomConfigAuditView extends EntityAuditView { } } +const channelSyncKeysToKeep = [ + 'id', + 'externalChannelUrl', + 'channel-id', + 'channel-name' +] +class VideoChannelSyncAuditView extends EntityAuditView { + constructor (channelSync: VideoChannelSync) { + super(channelSyncKeysToKeep, 'channelSync', channelSync) + } +} + export { getAuditIdFromRes, @@ -272,5 +282,6 @@ export { UserAuditView, VideoAuditView, AbuseAuditView, - CustomConfigAuditView + CustomConfigAuditView, + VideoChannelSyncAuditView }