summaryrefslogtreecommitdiff
path: root/packages/backend/src
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-06-07 18:50:28 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-06-07 18:50:28 -0400
commit36b85d62c2086ce0a64874fc7e4af06a423305b5 (patch)
tree84b7e87d58134383d3426fa23da4b079f222445f /packages/backend/src
parentadd ActivityPub representation to admin-user.vue (diff)
downloadsharkey-36b85d62c2086ce0a64874fc7e4af06a423305b5.tar.gz
sharkey-36b85d62c2086ce0a64874fc7e4af06a423305b5.tar.bz2
sharkey-36b85d62c2086ce0a64874fc7e4af06a423305b5.zip
check that detected AP object is actually a note before recording it in UrlPreviewService
Diffstat (limited to 'packages/backend/src')
-rw-r--r--packages/backend/src/server/web/UrlPreviewService.ts5
1 files changed, 3 insertions, 2 deletions
diff --git a/packages/backend/src/server/web/UrlPreviewService.ts b/packages/backend/src/server/web/UrlPreviewService.ts
index 78b2204fbb..ed5d87d15d 100644
--- a/packages/backend/src/server/web/UrlPreviewService.ts
+++ b/packages/backend/src/server/web/UrlPreviewService.ts
@@ -32,6 +32,7 @@ import type { MiLocalUser } from '@/models/User.js';
import { getIpHash } from '@/misc/get-ip-hash.js';
import { isRetryableError } from '@/misc/is-retryable-error.js';
import * as Acct from '@/misc/acct.js';
+import { isNote } from '@/core/activitypub/type.js';
import type { FastifyRequest, FastifyReply } from 'fastify';
export type LocalSummalyResult = SummalyResult & {
@@ -42,7 +43,7 @@ export type LocalSummalyResult = SummalyResult & {
};
// Increment this to invalidate cached previews after a major change.
-const cacheFormatVersion = 3;
+const cacheFormatVersion = 4;
type PreviewRoute = {
Querystring: {
@@ -409,7 +410,7 @@ export class UrlPreviewService {
// Finally, attempt a signed GET in case it's a direct link to an instance with authorized fetch.
const instanceActor = await this.systemAccountService.getInstanceActor();
const remoteObject = await this.apRequestService.signedGet(summary.url, instanceActor).catch(() => null);
- if (remoteObject && this.apUtilityService.haveSameAuthority(remoteObject.id, summary.url)) {
+ if (remoteObject && isNote(remoteObject) && this.apUtilityService.haveSameAuthority(remoteObject.id, summary.url)) {
summary.activityPub = remoteObject.id;
return;
}