From d81c20f163f0884d04cd11e46221bfefc0ac9f22 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 14 Apr 2018 14:39:07 +0900 Subject: hostLowerは廃止してhostにlowerしたものを入れるように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/queue/processors/http/process-inbox.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/queue') diff --git a/src/queue/processors/http/process-inbox.ts b/src/queue/processors/http/process-inbox.ts index ce5b7d5a89..a2c6bf4f90 100644 --- a/src/queue/processors/http/process-inbox.ts +++ b/src/queue/processors/http/process-inbox.ts @@ -32,7 +32,7 @@ export default async (job: kue.Job, done): Promise => { return; } - user = await User.findOne({ usernameLower: username, hostLower: host }) as IRemoteUser; + user = await User.findOne({ usernameLower: username, host: host.toLowerCase() }) as IRemoteUser; } else { user = await User.findOne({ host: { $ne: null }, -- cgit v1.2.3-freya From eebd5f62b37a1ed72fd34f2b66dd8f6723c35ee2 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 15 Apr 2018 12:51:05 +0900 Subject: Fix bug --- src/queue/processors/http/process-inbox.ts | 4 ++-- src/server/activitypub.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/queue') diff --git a/src/queue/processors/http/process-inbox.ts b/src/queue/processors/http/process-inbox.ts index a2c6bf4f90..2c49a67b66 100644 --- a/src/queue/processors/http/process-inbox.ts +++ b/src/queue/processors/http/process-inbox.ts @@ -1,7 +1,7 @@ import * as kue from 'kue'; import * as debug from 'debug'; -import { verifySignature } from 'http-signature'; +const httpSignature = require('http-signature'); import parseAcct from '../../../acct/parse'; import User, { IRemoteUser } from '../../../models/user'; import perform from '../../../remote/activitypub/perform'; @@ -50,7 +50,7 @@ export default async (job: kue.Job, done): Promise => { return; } - if (!verifySignature(signature, user.publicKey.publicKeyPem)) { + if (!httpSignature.verifySignature(signature, user.publicKey.publicKeyPem)) { console.warn('signature verification failed'); done(); return; diff --git a/src/server/activitypub.ts b/src/server/activitypub.ts index 954cc7480e..1682fc27d4 100644 --- a/src/server/activitypub.ts +++ b/src/server/activitypub.ts @@ -1,6 +1,6 @@ import * as Router from 'koa-router'; const koaBody = require('koa-body'); -const parseRequest = require('http-signature'); +const httpSignature = require('http-signature'); import { createHttp } from '../queue'; import pack from '../remote/activitypub/renderer'; @@ -25,7 +25,7 @@ router.post('/users/:user/inbox', koaBody(), ctx => { ctx.req.headers.authorization = 'Signature ' + ctx.req.headers.signature; try { - signature = parseRequest(ctx.req); + signature = httpSignature.parseRequest(ctx.req); } catch (e) { ctx.status = 401; return; -- cgit v1.2.3-freya From 10e341102040cc741a816b3dd731a5a4e3e59602 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 15 Apr 2018 17:53:25 +0900 Subject: nanka iroiro --- src/queue/index.ts | 4 ++-- src/services/following/create.ts | 4 ++-- src/services/following/delete.ts | 2 +- src/services/note/create.ts | 6 +++--- src/services/note/reaction/create.ts | 33 +++++++++++++++++---------------- 5 files changed, 25 insertions(+), 24 deletions(-) (limited to 'src/queue') diff --git a/src/queue/index.ts b/src/queue/index.ts index 4aa1dc032d..94efb3634a 100644 --- a/src/queue/index.ts +++ b/src/queue/index.ts @@ -19,12 +19,12 @@ export function createHttp(data) { } export function deliver(user, content, to) { - return createHttp({ + createHttp({ type: 'deliver', user, content, to - }); + }).save(); } export default function() { diff --git a/src/services/following/create.ts b/src/services/following/create.ts index 3289e31294..375b028912 100644 --- a/src/services/following/create.ts +++ b/src/services/following/create.ts @@ -58,11 +58,11 @@ export default async function(follower: IUser, followee: IUser, activity?) { if (isLocalUser(follower) && isRemoteUser(followee)) { const content = pack(renderFollow(follower, followee)); - deliver(follower, content, followee.inbox).save(); + deliver(follower, content, followee.inbox); } if (isRemoteUser(follower) && isLocalUser(followee)) { const content = pack(renderAccept(activity)); - deliver(followee, content, follower.inbox).save(); + deliver(followee, content, follower.inbox); } } diff --git a/src/services/following/delete.ts b/src/services/following/delete.ts index 8b6c56816a..c0c99fbed5 100644 --- a/src/services/following/delete.ts +++ b/src/services/following/delete.ts @@ -57,6 +57,6 @@ export default async function(follower: IUser, followee: IUser, activity?) { if (isLocalUser(follower) && isRemoteUser(followee)) { const content = pack(renderUndo(renderFollow(follower, followee))); - deliver(follower, content, followee.inbox).save(); + deliver(follower, content, followee.inbox); } } diff --git a/src/services/note/create.ts b/src/services/note/create.ts index 603851adb5..781337daf4 100644 --- a/src/services/note/create.ts +++ b/src/services/note/create.ts @@ -136,12 +136,12 @@ export default async (user: IUser, data: { // 投稿がリプライかつ投稿者がローカルユーザーかつリプライ先の投稿の投稿者がリモートユーザーなら配送 if (data.reply && isLocalUser(user) && isRemoteUser(data.reply._user)) { - deliver(user, await render(), data.reply._user.inbox).save(); + deliver(user, await render(), data.reply._user.inbox); } // 投稿がRenoteかつ投稿者がローカルユーザーかつRenote元の投稿の投稿者がリモートユーザーなら配送 if (data.renote && isLocalUser(user) && isRemoteUser(data.renote._user)) { - deliver(user, await render(), data.renote._user.inbox).save(); + deliver(user, await render(), data.renote._user.inbox); } Promise.all(followers.map(async follower => { @@ -153,7 +153,7 @@ export default async (user: IUser, data: { } else { // フォロワーがリモートユーザーかつ投稿者がローカルユーザーなら投稿を配信 if (isLocalUser(user)) { - deliver(user, await render(), follower.inbox).save(); + deliver(user, await render(), follower.inbox); } } })); diff --git a/src/services/note/reaction/create.ts b/src/services/note/reaction/create.ts index 69a14248da..dd3d4be8b7 100644 --- a/src/services/note/reaction/create.ts +++ b/src/services/note/reaction/create.ts @@ -9,6 +9,7 @@ import watch from '../watch'; import renderLike from '../../../remote/activitypub/renderer/like'; import { deliver } from '../../../queue'; import pack from '../../../remote/activitypub/renderer'; +import { MongoError } from 'mongodb'; export default async (user: IUser, note: INote, reaction: string) => new Promise(async (res, rej) => { // Myself @@ -16,24 +17,24 @@ export default async (user: IUser, note: INote, reaction: string) => new Promise return rej('cannot react to my note'); } - // if already reacted - const exist = await NoteReaction.findOne({ - noteId: note._id, - userId: user._id - }); + // Create reaction + try { + await NoteReaction.insert({ + createdAt: new Date(), + noteId: note._id, + userId: user._id, + reaction + }); + } catch (e) { + // duplicate key error + if (e instanceof MongoError && e.code === 11000) { + return rej('already reacted'); + } - if (exist !== null) { - return rej('already reacted'); + console.error(e); + return rej('something happened'); } - // Create reaction - await NoteReaction.insert({ - createdAt: new Date(), - noteId: note._id, - userId: user._id, - reaction - }); - res(); const inc = {}; @@ -86,7 +87,7 @@ export default async (user: IUser, note: INote, reaction: string) => new Promise // リアクターがローカルユーザーかつリアクション対象がリモートユーザーの投稿なら配送 if (isLocalUser(user) && isRemoteUser(note._user)) { const content = pack(renderLike(user, note)); - deliver(user, content, note._user.inbox).save(); + deliver(user, content, note._user.inbox); } //#endregion }); -- cgit v1.2.3-freya