From 8c9e7875269a990ed3000e1d4995d808e4ff50f7 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 7 Apr 2020 15:27:41 +0200 Subject: Add ability to accept or not remote redundancies --- server/lib/redundancy.ts | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'server/lib/redundancy.ts') diff --git a/server/lib/redundancy.ts b/server/lib/redundancy.ts index 78d84e02e..aa0e37478 100644 --- a/server/lib/redundancy.ts +++ b/server/lib/redundancy.ts @@ -2,7 +2,11 @@ import { VideoRedundancyModel } from '../models/redundancy/video-redundancy' import { sendUndoCacheFile } from './activitypub/send' import { Transaction } from 'sequelize' import { getServerActor } from '../helpers/utils' -import { MVideoRedundancyVideo } from '@server/typings/models' +import { MActorSignature, MVideoRedundancyVideo } from '@server/typings/models' +import { CONFIG } from '@server/initializers/config' +import { logger } from '@server/helpers/logger' +import { ActorFollowModel } from '@server/models/activitypub/actor-follow' +import { Activity } from '@shared/models' async function removeVideoRedundancy (videoRedundancy: MVideoRedundancyVideo, t?: Transaction) { const serverActor = await getServerActor() @@ -21,9 +25,30 @@ async function removeRedundanciesOfServer (serverId: number) { } } +async function isRedundancyAccepted (activity: Activity, byActor: MActorSignature) { + const configAcceptFrom = CONFIG.REMOTE_REDUNDANCY.VIDEOS.ACCEPT_FROM + if (configAcceptFrom === 'nobody') { + logger.info('Do not accept remote redundancy %s due instance accept policy.', activity.id) + return false + } + + if (configAcceptFrom === 'followings') { + const serverActor = await getServerActor() + const allowed = await ActorFollowModel.isFollowedBy(byActor.id, serverActor.id) + + if (allowed !== true) { + logger.info('Do not accept remote redundancy %s because actor %s is not followed by our instance.', activity.id, byActor.url) + return false + } + } + + return true +} + // --------------------------------------------------------------------------- export { + isRedundancyAccepted, removeRedundanciesOfServer, removeVideoRedundancy } -- cgit v1.2.3