From 23715c649cd91b73f2acbb973921f72e69df2d7c Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Sat, 25 Apr 2026 22:39:16 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20change=20bare=20activity.actor=20to=20ge?= =?UTF-8?q?tApId(activity.actor)=20in=20InboxPr=E2=80=A6=20(#17340)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: change bare activity.actor to getApId(activity.actor) in InboxProcessorService (closes #17338) * doc: update CHANGELOG.md to note fix for #17338 * fix: additional activity.actor wrappers in ApInboxService * Update CHANGELOG.md --------- Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> --- CHANGELOG.md | 1 + .../backend/src/core/activitypub/ApInboxService.ts | 10 +++++----- .../src/queue/processors/InboxProcessorService.ts | 10 +++++----- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d3b3295a9..9526f67760 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ - Fix: robots.txtの内容を調整 - Fix: 特定のユーザーに管理者権限を持つロールが複数ついている際に、取得できるユーザーIDが重複する問題を修正 (Cherry-picked from https://github.com/lqvp/misskey-tempura/commit/17ed4108cec4b6bd2fd989db5a9091db91fa37a7) +- Fix: support activity with `actor` as an id string or embedded object in inbox processor and ActivityPub inbox service - Fix: コンフィグファイルに `meilisearch` の設定がある状態でほかの検索プロバイダを利用すると、UI上からリモートのノートの検索ができない問題を修正 ## 2026.3.2 diff --git a/packages/backend/src/core/activitypub/ApInboxService.ts b/packages/backend/src/core/activitypub/ApInboxService.ts index 4f926b99d4..27ab0e3447 100644 --- a/packages/backend/src/core/activitypub/ApInboxService.ts +++ b/packages/backend/src/core/activitypub/ApInboxService.ts @@ -259,7 +259,7 @@ export class ApInboxService { @bindThis private async add(actor: MiRemoteUser, activity: IAdd, resolver?: Resolver): Promise { - if (actor.uri !== activity.actor) { + if (actor.uri !== getApId(activity.actor)) { return 'invalid actor'; } @@ -469,7 +469,7 @@ export class ApInboxService { @bindThis private async delete(actor: MiRemoteUser, activity: IDelete): Promise { - if (actor.uri !== activity.actor) { + if (actor.uri !== getApId(activity.actor)) { return 'invalid actor'; } @@ -623,7 +623,7 @@ export class ApInboxService { @bindThis private async remove(actor: MiRemoteUser, activity: IRemove, resolver?: Resolver): Promise { - if (actor.uri !== activity.actor) { + if (actor.uri !== getApId(activity.actor)) { return 'invalid actor'; } @@ -643,7 +643,7 @@ export class ApInboxService { @bindThis private async undo(actor: MiRemoteUser, activity: IUndo, resolver?: Resolver): Promise { - if (actor.uri !== activity.actor) { + if (actor.uri !== getApId(activity.actor)) { return 'invalid actor'; } @@ -777,7 +777,7 @@ export class ApInboxService { @bindThis private async update(actor: MiRemoteUser, activity: IUpdate, resolver?: Resolver): Promise { - if (actor.uri !== activity.actor) { + if (actor.uri !== getApId(activity.actor)) { return 'skip: invalid actor'; } diff --git a/packages/backend/src/queue/processors/InboxProcessorService.ts b/packages/backend/src/queue/processors/InboxProcessorService.ts index 73fad43eb4..98af3477a8 100644 --- a/packages/backend/src/queue/processors/InboxProcessorService.ts +++ b/packages/backend/src/queue/processors/InboxProcessorService.ts @@ -115,9 +115,9 @@ export class InboxProcessorService implements OnApplicationShutdown { // 対象が4xxならスキップ if (err instanceof StatusError) { if (!err.isRetryable) { - throw new Bull.UnrecoverableError(`skip: Ignored deleted actors on both ends ${activity.actor} - ${err.statusCode}`); + throw new Bull.UnrecoverableError(`skip: Ignored deleted actors on both ends ${getApId(activity.actor)} - ${err.statusCode}`); } - throw new Error(`Error in actor ${activity.actor} - ${err.statusCode}`); + throw new Error(`Error in actor ${getApId(activity.actor)} - ${err.statusCode}`); } } } @@ -136,7 +136,7 @@ export class InboxProcessorService implements OnApplicationShutdown { const httpSignatureValidated = httpSignature.verifySignature(signature, authUser.key.keyPem); // また、signatureのsignerは、activity.actorと一致する必要がある - if (!httpSignatureValidated || authUser.user.uri !== activity.actor) { + if (!httpSignatureValidated || authUser.user.uri !== getApId(activity.actor)) { // 一致しなくても、でもLD-Signatureがありそうならそっちも見る const ldSignature = activity.signature; if (ldSignature) { @@ -187,8 +187,8 @@ export class InboxProcessorService implements OnApplicationShutdown { //#endregion // もう一度actorチェック - if (authUser.user.uri !== activity.actor) { - throw new Bull.UnrecoverableError(`skip: LD-Signature user(${authUser.user.uri}) !== activity.actor(${activity.actor})`); + if (authUser.user.uri !== getApId(activity.actor)) { + throw new Bull.UnrecoverableError(`skip: LD-Signature user(${authUser.user.uri}) !== activity.actor(${getApId(activity.actor)})`); } const ldHost = this.utilityService.extractDbHost(authUser.user.uri);