summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2024-10-15 17:21:03 -0400
committerHazelnoot <acomputerdog@gmail.com>2024-11-22 09:20:11 -0500
commitd74cf9e4ffdc688e298dc5f77bb7743f6c33cd11 (patch)
treeae698d0066d734c663975e100d6c68da9332fe20
parentmerge: Fix: Center SkModPlayer on big displays (!734) (diff)
downloadsharkey-d74cf9e4ffdc688e298dc5f77bb7743f6c33cd11.tar.gz
sharkey-d74cf9e4ffdc688e298dc5f77bb7743f6c33cd11.tar.bz2
sharkey-d74cf9e4ffdc688e298dc5f77bb7743f6c33cd11.zip
filter Add / Remove activities with non-Note payloads
-rw-r--r--packages/backend/src/core/activitypub/ApInboxService.ts14
-rw-r--r--packages/backend/src/core/activitypub/type.ts1
2 files changed, 12 insertions, 3 deletions
diff --git a/packages/backend/src/core/activitypub/ApInboxService.ts b/packages/backend/src/core/activitypub/ApInboxService.ts
index 0b7ab7e19e..4e4cdc09b5 100644
--- a/packages/backend/src/core/activitypub/ApInboxService.ts
+++ b/packages/backend/src/core/activitypub/ApInboxService.ts
@@ -32,7 +32,7 @@ import { AbuseReportService } from '@/core/AbuseReportService.js';
import { FederatedInstanceService } from '@/core/FederatedInstanceService.js';
import { fromTuple } from '@/misc/from-tuple.js';
import { IdentifiableError } from '@/misc/identifiable-error.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 { getApHrefNullable, getApId, getApIds, getApType, isAccept, isActor, isAdd, isAnnounce, isApObject, isNote, 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';
import { ApDbResolverService } from './ApDbResolverService.js';
@@ -271,8 +271,12 @@ export class ApInboxService {
}
if (activity.target === actor.featured) {
- const object = fromTuple(activity.object);
- const note = await this.apNoteService.resolveNote(object, { resolver });
+ const activityObject = fromTuple(activity.object);
+ if (isApObject(activityObject) && !isNote(activityObject)) {
+ return 'unsupported featured object type';
+ }
+
+ const note = await this.apNoteService.resolveNote(activityObject, { resolver });
if (note == null) return 'note not found';
await this.notePiningService.addPinned(actor, note.id);
return;
@@ -642,6 +646,10 @@ export class ApInboxService {
if (activity.target === actor.featured) {
const activityObject = fromTuple(activity.object);
+ if (isApObject(activityObject) && !isNote(activityObject)) {
+ return 'unsupported featured object type';
+ }
+
const note = await this.apNoteService.resolveNote(activityObject, { resolver });
if (note == null) return 'note not found';
await this.notePiningService.removePinned(actor, note.id);
diff --git a/packages/backend/src/core/activitypub/type.ts b/packages/backend/src/core/activitypub/type.ts
index af5aba9c16..08758aec80 100644
--- a/packages/backend/src/core/activitypub/type.ts
+++ b/packages/backend/src/core/activitypub/type.ts
@@ -340,6 +340,7 @@ export interface IMove extends IActivity {
target: IObject | string;
}
+export const isApObject = (object: string | IObject): object is IObject => typeof(object) === 'object';
export const isCreate = (object: IObject): object is ICreate => getApType(object) === 'Create';
export const isDelete = (object: IObject): object is IDelete => getApType(object) === 'Delete';
export const isUpdate = (object: IObject): object is IUpdate => getApType(object) === 'Update';