summaryrefslogtreecommitdiff
path: root/packages/backend/src/queue/processors/InboxProcessorService.ts
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-06-12 19:06:43 +0000
committerHazelnoot <acomputerdog@gmail.com>2025-06-12 19:06:43 +0000
commit20370e5e75c79cc0bc25da6ab2b3331c4b10936f (patch)
tree138d9ec568533845d15b02ea1e5668d79d830198 /packages/backend/src/queue/processors/InboxProcessorService.ts
parentmerge: Implement basic support for fep-e232 and fep-044f quotes (resolves #10... (diff)
parentfix type errors with JsonLdService and remove unused factory pattern (diff)
downloadsharkey-20370e5e75c79cc0bc25da6ab2b3331c4b10936f.tar.gz
sharkey-20370e5e75c79cc0bc25da6ab2b3331c4b10936f.tar.bz2
sharkey-20370e5e75c79cc0bc25da6ab2b3331c4b10936f.zip
merge: Emit log messages with correct level (!1097)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/1097 Approved-by: dakkar <dakkar@thenautilus.net> Approved-by: Marie <github@yuugi.dev>
Diffstat (limited to 'packages/backend/src/queue/processors/InboxProcessorService.ts')
-rw-r--r--packages/backend/src/queue/processors/InboxProcessorService.ts15
1 files changed, 6 insertions, 9 deletions
diff --git a/packages/backend/src/queue/processors/InboxProcessorService.ts b/packages/backend/src/queue/processors/InboxProcessorService.ts
index 612b16dfbf..5f82d558b3 100644
--- a/packages/backend/src/queue/processors/InboxProcessorService.ts
+++ b/packages/backend/src/queue/processors/InboxProcessorService.ts
@@ -21,7 +21,7 @@ import { ApDbResolverService } from '@/core/activitypub/ApDbResolverService.js';
import { StatusError } from '@/misc/status-error.js';
import { UtilityService } from '@/core/UtilityService.js';
import { ApPersonService } from '@/core/activitypub/models/ApPersonService.js';
-import { JsonLdService } from '@/core/activitypub/JsonLdService.js';
+import { isSigned, JsonLdService } from '@/core/activitypub/JsonLdService.js';
import { ApInboxService } from '@/core/activitypub/ApInboxService.js';
import { bindThis } from '@/decorators.js';
import { IdentifiableError } from '@/misc/identifiable-error.js';
@@ -179,8 +179,8 @@ export class InboxProcessorService implements OnApplicationShutdown {
// また、signatureのsignerは、activity.actorと一致する必要がある
if (!httpSignatureValidated || authUser.user.uri !== actorId) {
// 一致しなくても、でもLD-Signatureがありそうならそっちも見る
- const ldSignature = activity.signature;
- if (ldSignature) {
+ if (isSigned(activity)) {
+ const ldSignature = activity.signature;
if (ldSignature.type !== 'RsaSignature2017') {
throw new Bull.UnrecoverableError(`skip: unsupported LD-signature type ${ldSignature.type}`);
}
@@ -202,24 +202,21 @@ export class InboxProcessorService implements OnApplicationShutdown {
throw new Bull.UnrecoverableError('skip: LD-SignatureのユーザーはpublicKeyを持っていませんでした');
}
- const jsonLd = this.jsonLdService.use();
-
// LD-Signature検証
- const verified = await jsonLd.verifyRsaSignature2017(activity, authUser.key.keyPem).catch(() => false);
+ const verified = await this.jsonLdService.verifyRsaSignature2017(activity, authUser.key.keyPem).catch(() => false);
if (!verified) {
throw new Bull.UnrecoverableError('skip: LD-Signatureの検証に失敗しました');
}
// アクティビティを正規化
- delete activity.signature;
+ const copy = { ...activity, signature: undefined };
try {
- activity = await jsonLd.compact(activity) as IActivity;
+ activity = await this.jsonLdService.compact(copy) as IActivity;
} catch (e) {
throw new Bull.UnrecoverableError(`skip: failed to compact activity: ${e}`);
}
// TODO: 元のアクティビティと非互換な形に正規化される場合は転送をスキップする
// https://github.com/mastodon/mastodon/blob/664b0ca/app/services/activitypub/process_collection_service.rb#L24-L29
- activity.signature = ldSignature;
// もう一度actorチェック
if (authUser.user.uri !== actorId) {