summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-04-02 18:41:02 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-04-02 18:41:02 +0900
commitcb5fe0d48f5a434bf699394cb79d623ec1259ef8 (patch)
treedf15572b8147873066b4dfb10de481e5580f73b0 /src/server
parentFix bug (diff)
parentMerge pull request #1371 from akihikodaki/misc (diff)
downloadsharkey-cb5fe0d48f5a434bf699394cb79d623ec1259ef8.tar.gz
sharkey-cb5fe0d48f5a434bf699394cb79d623ec1259ef8.tar.bz2
sharkey-cb5fe0d48f5a434bf699394cb79d623ec1259ef8.zip
Merge branch 'master' of https://github.com/syuilo/misskey
Diffstat (limited to 'src/server')
-rw-r--r--src/server/activitypub/inbox.ts42
1 files changed, 6 insertions, 36 deletions
diff --git a/src/server/activitypub/inbox.ts b/src/server/activitypub/inbox.ts
index 2de2bd9646..5de8433850 100644
--- a/src/server/activitypub/inbox.ts
+++ b/src/server/activitypub/inbox.ts
@@ -1,9 +1,7 @@
import * as bodyParser from 'body-parser';
import * as express from 'express';
-import { parseRequest, verifySignature } from 'http-signature';
-import User, { IRemoteUser } from '../../models/user';
+import { parseRequest } from 'http-signature';
import queue from '../../queue';
-import parseAcct from '../../acct/parse';
const app = express();
@@ -14,48 +12,20 @@ app.post('/@:user/inbox', bodyParser.json({
return true;
}
}), async (req, res) => {
- let parsed;
+ let signature;
req.headers.authorization = 'Signature ' + req.headers.signature;
try {
- parsed = parseRequest(req);
+ signature = parseRequest(req);
} catch (exception) {
return res.sendStatus(401);
}
- const keyIdLower = parsed.keyId.toLowerCase();
- let query;
-
- if (keyIdLower.startsWith('acct:')) {
- const { username, host } = parseAcct(keyIdLower.slice('acct:'.length));
- if (host === null) {
- return res.sendStatus(401);
- }
-
- query = { usernameLower: username, hostLower: host };
- } else {
- query = {
- host: { $ne: null },
- 'account.publicKey.id': parsed.keyId
- };
- }
-
- const user = await User.findOne(query) as IRemoteUser;
-
- if (user === null) {
- return res.sendStatus(401);
- }
-
- if (!verifySignature(parsed, user.account.publicKey.publicKeyPem)) {
- return res.sendStatus(401);
- }
-
queue.create('http', {
- type: 'performActivityPub',
- actor: user._id,
- outbox: req.body,
- distribute: true,
+ type: 'processInbox',
+ inbox: req.body,
+ signature,
}).save();
return res.status(202).end();