diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-04-02 18:41:02 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-04-02 18:41:02 +0900 |
| commit | cb5fe0d48f5a434bf699394cb79d623ec1259ef8 (patch) | |
| tree | df15572b8147873066b4dfb10de481e5580f73b0 /src/server | |
| parent | Fix bug (diff) | |
| parent | Merge pull request #1371 from akihikodaki/misc (diff) | |
| download | sharkey-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.ts | 42 |
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(); |