summaryrefslogtreecommitdiff
path: root/packages/backend/src/remote
diff options
context:
space:
mode:
authorJohann150 <johann.galle@protonmail.com>2022-05-19 13:40:16 +0200
committerGitHub <noreply@github.com>2022-05-19 20:40:16 +0900
commitedfded7fb7e55a83b21256469fd3a58dec1bfe20 (patch)
tree45ec47dd21469b46d4c91d940e21bd038d762eab /packages/backend/src/remote
parentenhance(MFM): limit large MFM (#8540) (diff)
downloadsharkey-edfded7fb7e55a83b21256469fd3a58dec1bfe20.tar.gz
sharkey-edfded7fb7e55a83b21256469fd3a58dec1bfe20.tar.bz2
sharkey-edfded7fb7e55a83b21256469fd3a58dec1bfe20.zip
fix(activitypub): add authorization checks (#8534)
* fix spelling * fix(activitypub): add authorization checks
Diffstat (limited to 'packages/backend/src/remote')
-rw-r--r--packages/backend/src/remote/activitypub/kernel/announce/note.ts3
-rw-r--r--packages/backend/src/remote/activitypub/kernel/delete/index.ts22
-rw-r--r--packages/backend/src/remote/activitypub/kernel/undo/announce.ts1
3 files changed, 15 insertions, 11 deletions
diff --git a/packages/backend/src/remote/activitypub/kernel/announce/note.ts b/packages/backend/src/remote/activitypub/kernel/announce/note.ts
index 680749f4d8..052751c654 100644
--- a/packages/backend/src/remote/activitypub/kernel/announce/note.ts
+++ b/packages/backend/src/remote/activitypub/kernel/announce/note.ts
@@ -9,6 +9,7 @@ import { fetchMeta } from '@/misc/fetch-meta.js';
import { getApLock } from '@/misc/app-lock.js';
import { parseAudience } from '../../audience.js';
import { StatusError } from '@/misc/fetch.js';
+import { Notes } from '@/models/index.js';
const logger = apLogger;
@@ -52,6 +53,8 @@ export default async function(resolver: Resolver, actor: CacheableRemoteUser, ac
throw e;
}
+ if (!await Notes.isVisibleForMe(renote, actor)) return 'skip: invalid actor for this activity';
+
logger.info(`Creating the (Re)Note: ${uri}`);
const activityAudience = await parseAudience(actor, activity.to, activity.cc);
diff --git a/packages/backend/src/remote/activitypub/kernel/delete/index.ts b/packages/backend/src/remote/activitypub/kernel/delete/index.ts
index 4c06a9de0b..c7064f553b 100644
--- a/packages/backend/src/remote/activitypub/kernel/delete/index.ts
+++ b/packages/backend/src/remote/activitypub/kernel/delete/index.ts
@@ -13,37 +13,37 @@ export default async (actor: CacheableRemoteUser, activity: IDelete): Promise<st
}
// 削除対象objectのtype
- let formarType: string | undefined;
+ let formerType: string | undefined;
if (typeof activity.object === 'string') {
// typeが不明だけど、どうせ消えてるのでremote resolveしない
- formarType = undefined;
+ formerType = undefined;
} else {
const object = activity.object as IObject;
if (isTombstone(object)) {
- formarType = toSingle(object.formerType);
+ formerType = toSingle(object.formerType);
} else {
- formarType = toSingle(object.type);
+ formerType = toSingle(object.type);
}
}
const uri = getApId(activity.object);
// type不明でもactorとobjectが同じならばそれはPersonに違いない
- if (!formarType && actor.uri === uri) {
- formarType = 'Person';
+ if (!formerType && actor.uri === uri) {
+ formerType = 'Person';
}
// それでもなかったらおそらくNote
- if (!formarType) {
- formarType = 'Note';
+ if (!formerType) {
+ formerType = 'Note';
}
- if (validPost.includes(formarType)) {
+ if (validPost.includes(formerType)) {
return await deleteNote(actor, uri);
- } else if (validActor.includes(formarType)) {
+ } else if (validActor.includes(formerType)) {
return await deleteActor(actor, uri);
} else {
- return `Unknown type ${formarType}`;
+ return `Unknown type ${formerType}`;
}
};
diff --git a/packages/backend/src/remote/activitypub/kernel/undo/announce.ts b/packages/backend/src/remote/activitypub/kernel/undo/announce.ts
index c2ac31bf8d..417f39722f 100644
--- a/packages/backend/src/remote/activitypub/kernel/undo/announce.ts
+++ b/packages/backend/src/remote/activitypub/kernel/undo/announce.ts
@@ -8,6 +8,7 @@ export const undoAnnounce = async (actor: CacheableRemoteUser, activity: IAnnoun
const note = await Notes.findOneBy({
uri,
+ userId: actor.id,
});
if (!note) return 'skip: no such Announce';