diff options
| author | Marie <github@yuugi.dev> | 2024-10-06 19:39:38 +0000 |
|---|---|---|
| committer | Marie <github@yuugi.dev> | 2024-10-06 19:39:38 +0000 |
| commit | 28bfd875372bb7769e1e303b4153ca2fdd0f2b8d (patch) | |
| tree | a9ddb132cd78c1f99a491bb458f51fae5bceba2f /packages/backend/src/core | |
| parent | merge: Change the recent external url warning popup to the one from Cherrypic... (diff) | |
| parent | Merge branch 'develop' into hazelnoot/579-reject-reports (diff) | |
| download | sharkey-28bfd875372bb7769e1e303b4153ca2fdd0f2b8d.tar.gz sharkey-28bfd875372bb7769e1e303b4153ca2fdd0f2b8d.tar.bz2 sharkey-28bfd875372bb7769e1e303b4153ca2fdd0f2b8d.zip | |
merge: Add option to reject reports from an instance (Resolves #579, #715, #716) (!662)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/662
Closes #579, #715, and #716
Approved-by: dakkar <dakkar@thenautilus.net>
Approved-by: Marie <github@yuugi.dev>
Diffstat (limited to 'packages/backend/src/core')
| -rw-r--r-- | packages/backend/src/core/activitypub/ApInboxService.ts | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/packages/backend/src/core/activitypub/ApInboxService.ts b/packages/backend/src/core/activitypub/ApInboxService.ts index 6a28cbad15..bce67a458f 100644 --- a/packages/backend/src/core/activitypub/ApInboxService.ts +++ b/packages/backend/src/core/activitypub/ApInboxService.ts @@ -5,6 +5,7 @@ import { Inject, Injectable } from '@nestjs/common'; import { In } from 'typeorm'; +import * as Bull from 'bullmq'; import { DI } from '@/di-symbols.js'; import type { Config } from '@/config.js'; import { UserFollowingService } from '@/core/UserFollowingService.js'; @@ -29,6 +30,7 @@ import { bindThis } from '@/decorators.js'; import type { MiRemoteUser } from '@/models/User.js'; import { GlobalEventService } from '@/core/GlobalEventService.js'; import { AbuseReportService } from '@/core/AbuseReportService.js'; +import { FederatedInstanceService } from '@/core/FederatedInstanceService.js'; import { getApHrefNullable, getApId, getApIds, getApType, isAccept, isActor, isAdd, isAnnounce, isBlock, isCollection, isCollectionOrOrderedCollection, isCreate, isDelete, isFlag, isFollow, isLike, isMove, isPost, isReject, isRemove, isTombstone, isUndo, isUpdate, validActor, validPost } from './type.js'; import { ApNoteService } from './models/ApNoteService.js'; import { ApLoggerService } from './ApLoggerService.js'; @@ -83,6 +85,7 @@ export class ApInboxService { private apQuestionService: ApQuestionService, private queueService: QueueService, private globalEventService: GlobalEventService, + private federatedInstanceService: FederatedInstanceService, ) { this.logger = this.apLoggerService.logger; } @@ -530,6 +533,12 @@ export class ApInboxService { @bindThis private async flag(actor: MiRemoteUser, activity: IFlag): Promise<string> { + // Make sure the source instance is allowed to send reports. + const instance = await this.federatedInstanceService.fetch(actor.host); + if (instance.rejectReports) { + throw new Bull.UnrecoverableError(`Rejecting report from instance: ${actor.host}`); + } + // objectは `(User|Note) | (User|Note)[]` だけど、全パターンDBスキーマと対応させられないので // 対象ユーザーは一番最初のユーザー として あとはコメントとして格納する const uris = getApIds(activity.object); |