From e49f7f40bc15814bdcab84d9fece281ccd257c43 Mon Sep 17 00:00:00 2001 From: tamaina Date: Fri, 13 Apr 2018 23:04:22 +0900 Subject: Update index.ts --- src/server/index.ts | 1 + 1 file changed, 1 insertion(+) (limited to 'src/server') diff --git a/src/server/index.ts b/src/server/index.ts index db41a1dcb5..28babeed68 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -53,6 +53,7 @@ function createServer() { Object.keys(config.https).forEach(k => { certs[k] = fs.readFileSync(config.https[k]); }); + certs['allowHTTP1'] = true return http2.createSecureServer(certs, app.callback()); } else { return http.createServer(app.callback()); -- cgit v1.2.3-freya From fde2782a9eb5dcd7a706bee2401ce44c891c3653 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 14 Apr 2018 01:45:44 +0900 Subject: Cache url preview --- src/server/web/url-preview.ts | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/server') diff --git a/src/server/web/url-preview.ts b/src/server/web/url-preview.ts index 4b3f44a5da..d5464d0cd4 100644 --- a/src/server/web/url-preview.ts +++ b/src/server/web/url-preview.ts @@ -5,6 +5,10 @@ module.exports = async (ctx: Koa.Context) => { const summary = await summaly(ctx.query.url); summary.icon = wrap(summary.icon); summary.thumbnail = wrap(summary.thumbnail); + + // Cache 7days + ctx.set('Cache-Control', 'max-age=604800, immutable'); + ctx.body = summary; }; -- cgit v1.2.3-freya From 8260464090aefce364ca5ce5d116f12f0b84e617 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 14 Apr 2018 01:46:03 +0900 Subject: Add note --- src/server/file/index.ts | 1 + 1 file changed, 1 insertion(+) (limited to 'src/server') diff --git a/src/server/file/index.ts b/src/server/file/index.ts index d305286d12..29056c63e7 100644 --- a/src/server/file/index.ts +++ b/src/server/file/index.ts @@ -14,6 +14,7 @@ const app = new Koa(); app.use(cors()); app.use(async (ctx, next) => { + // Cache 365days ctx.set('Cache-Control', 'max-age=31536000, immutable'); await next(); }); -- cgit v1.2.3-freya From 39feb54aab62ec39c94f546c13fe353d8bc9e4c1 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 14 Apr 2018 01:50:43 +0900 Subject: Fix: Add missing semicolon --- src/server/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/index.ts b/src/server/index.ts index 28babeed68..622164d386 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -53,7 +53,7 @@ function createServer() { Object.keys(config.https).forEach(k => { certs[k] = fs.readFileSync(config.https[k]); }); - certs['allowHTTP1'] = true + certs['allowHTTP1'] = true; return http2.createSecureServer(certs, app.callback()); } else { return http.createServer(app.callback()); -- cgit v1.2.3-freya From ec6300f5aee265a6d7051794a1b8111347f4f96d Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 14 Apr 2018 01:54:54 +0900 Subject: :v: --- src/server/index.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'src/server') diff --git a/src/server/index.ts b/src/server/index.ts index 622164d386..5db3da2b93 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -63,13 +63,9 @@ function createServer() { export default () => new Promise(resolve => { const server = createServer(); - /** - * Steaming - */ + // Init stream server require('./api/streaming')(server); - /** - * Server listen - */ + // Listen server.listen(config.port, resolve); }); -- cgit v1.2.3-freya From 3cdb32048849be82757c5641ff46b25993ce1bcc Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 14 Apr 2018 03:04:55 +0900 Subject: Use require to avoid warning --- src/server/activitypub.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/activitypub.ts b/src/server/activitypub.ts index 2a99bccfc4..804f0f870d 100644 --- a/src/server/activitypub.ts +++ b/src/server/activitypub.ts @@ -1,5 +1,5 @@ import * as Router from 'koa-router'; -import { parseRequest } from 'http-signature'; +const parseRequest = require('http-signature'); import { createHttp } from '../queue'; import pack from '../remote/activitypub/renderer'; -- cgit v1.2.3-freya From 04285c9498859edca86f2f70f7bddda204ecee9d Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 14 Apr 2018 03:23:06 +0900 Subject: Fix bug --- package.json | 1 + src/server/activitypub.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src/server') diff --git a/package.json b/package.json index d82e5d2330..ea2b0f2514 100644 --- a/package.json +++ b/package.json @@ -137,6 +137,7 @@ "js-yaml": "3.11.0", "jsdom": "11.7.0", "koa": "2.5.0", + "koa-body": "^2.5.0", "koa-bodyparser": "4.2.0", "koa-compress": "^2.0.0", "koa-favicon": "2.0.1", diff --git a/src/server/activitypub.ts b/src/server/activitypub.ts index 804f0f870d..954cc7480e 100644 --- a/src/server/activitypub.ts +++ b/src/server/activitypub.ts @@ -1,4 +1,5 @@ import * as Router from 'koa-router'; +const koaBody = require('koa-body'); const parseRequest = require('http-signature'); import { createHttp } from '../queue'; @@ -18,7 +19,7 @@ const router = new Router(); //#region Routing // inbox -router.post('/users/:user/inbox', ctx => { +router.post('/users/:user/inbox', koaBody(), ctx => { let signature; ctx.req.headers.authorization = 'Signature ' + ctx.req.headers.signature; -- cgit v1.2.3-freya From 8bf05e47df91f9e15fb30ca8468389a459b8edb7 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 14 Apr 2018 06:27:17 +0900 Subject: Fix bug --- src/server/api/service/twitter.ts | 50 ++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 22 deletions(-) (limited to 'src/server') diff --git a/src/server/api/service/twitter.ts b/src/server/api/service/twitter.ts index 9fb01b44ef..0de2e68c60 100644 --- a/src/server/api/service/twitter.ts +++ b/src/server/api/service/twitter.ts @@ -107,7 +107,7 @@ if (config.twitter == null) { ctx.redirect(twCtx.url); }); - router.get('/tw/cb', ctx => { + router.get('/tw/cb', async ctx => { const userToken = getUserToken(ctx); if (userToken == null) { @@ -141,31 +141,37 @@ if (config.twitter == null) { return; } - redis.get(userToken, async (_, twCtx) => { - const result = await twAuth.done(JSON.parse(twCtx), verifier); - - const user = await User.findOneAndUpdate({ - host: null, - token: userToken - }, { - $set: { - twitter: { - accessToken: result.accessToken, - accessTokenSecret: result.accessTokenSecret, - userId: result.userId, - screenName: result.screenName - } - } + const get = new Promise((res, rej) => { + redis.get(userToken, async (_, twCtx) => { + res(twCtx); }); + }); + + const twCtx = await get; - ctx.body = `Twitter: @${result.screenName} を、Misskey: @${user.username} に接続しました!`; + const result = await twAuth.done(JSON.parse(twCtx), verifier); - // Publish i updated event - event(user._id, 'i_updated', await pack(user, user, { - detail: true, - includeSecrets: true - })); + const user = await User.findOneAndUpdate({ + host: null, + token: userToken + }, { + $set: { + twitter: { + accessToken: result.accessToken, + accessTokenSecret: result.accessTokenSecret, + userId: result.userId, + screenName: result.screenName + } + } }); + + ctx.body = `Twitter: @${result.screenName} を、Misskey: @${user.username} に接続しました!`; + + // Publish i updated event + event(user._id, 'i_updated', await pack(user, user, { + detail: true, + includeSecrets: true + })); } }); } -- cgit v1.2.3-freya From bf57b2ad1362e2ea619c3a23aba337e6ac54e738 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 14 Apr 2018 06:41:33 +0900 Subject: Fix bug --- src/server/api/service/twitter.ts | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'src/server') diff --git a/src/server/api/service/twitter.ts b/src/server/api/service/twitter.ts index 0de2e68c60..284ae7ee22 100644 --- a/src/server/api/service/twitter.ts +++ b/src/server/api/service/twitter.ts @@ -118,21 +118,27 @@ if (config.twitter == null) { return; } - redis.get(sessid, async (_, twCtx) => { - const result = await twAuth.done(JSON.parse(twCtx), ctx.query.oauth_verifier); + const get = new Promise((res, rej) => { + redis.get(sessid, async (_, twCtx) => { + res(twCtx); + }); + }); - const user = await User.findOne({ - host: null, - 'twitter.userId': result.userId - }) as ILocalUser; + const twCtx = await get; - if (user == null) { - ctx.throw(404, `@${result.screenName}と連携しているMisskeyアカウントはありませんでした...`); - return; - } + const result = await twAuth.done(JSON.parse(twCtx), ctx.query.oauth_verifier); - signin(ctx, user, true); - }); + const user = await User.findOne({ + host: null, + 'twitter.userId': result.userId + }) as ILocalUser; + + if (user == null) { + ctx.throw(404, `@${result.screenName}と連携しているMisskeyアカウントはありませんでした...`); + return; + } + + signin(ctx, user, true); } else { const verifier = ctx.query.oauth_verifier; -- cgit v1.2.3-freya From bcc5449e47956e9786646abf688a3161aa89912a Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 14 Apr 2018 14:22:58 +0900 Subject: リモートユーザーはおすすめユーザーに含めないように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/api/endpoints/users/recommendation.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'src/server') diff --git a/src/server/api/endpoints/users/recommendation.ts b/src/server/api/endpoints/users/recommendation.ts index 2de22da13e..e367e65a6c 100644 --- a/src/server/api/endpoints/users/recommendation.ts +++ b/src/server/api/endpoints/users/recommendation.ts @@ -30,15 +30,13 @@ module.exports = (params, me) => new Promise(async (res, rej) => { _id: { $nin: followingIds }, - $or: [ - { - 'lastUsedAt': { - $gte: new Date(Date.now() - ms('7days')) - } - }, { - host: { $ne: null } + $or: [{ + 'lastUsedAt': { + $gte: new Date(Date.now() - ms('7days')) } - ] + }, { + host: null + }] }, { limit: limit, skip: offset, -- cgit v1.2.3-freya 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/models/note.ts | 1 - src/models/user.ts | 1 - src/queue/processors/http/process-inbox.ts | 2 +- src/remote/activitypub/objects/person.ts | 4 +--- src/remote/resolve-user.ts | 12 ++++++------ src/server/api/common/get-host-lower.ts | 2 +- src/server/api/endpoints/users/notes.ts | 2 +- src/server/api/private/signup.ts | 1 - src/services/note/create.ts | 1 - 9 files changed, 10 insertions(+), 16 deletions(-) (limited to 'src/server') diff --git a/src/models/note.ts b/src/models/note.ts index 3c1c2e18e1..6d315db4cf 100644 --- a/src/models/note.ts +++ b/src/models/note.ts @@ -66,7 +66,6 @@ export type INote = { }; _user: { host: string; - hostLower: string; account: { inbox?: string; }; diff --git a/src/models/user.ts b/src/models/user.ts index 97b7a997e5..cf5a4a3616 100644 --- a/src/models/user.ts +++ b/src/models/user.ts @@ -49,7 +49,6 @@ type IUserBase = { isSuspended: boolean; keywords: string[]; host: string; - hostLower: string; }; export interface ILocalUser extends IUserBase { 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 }, diff --git a/src/remote/activitypub/objects/person.ts b/src/remote/activitypub/objects/person.ts index f7ec064cdb..6c060f879c 100644 --- a/src/remote/activitypub/objects/person.ts +++ b/src/remote/activitypub/objects/person.ts @@ -74,8 +74,7 @@ export async function createPerson(value: any, resolver?: Resolver): Promise matched.toLowerCase()); + const host = toUnicode(finger.subject.replace(/^.*?@/, '')).toLowerCase(); const summaryDOM = JSDOM.fragment(person.summary); // Create user @@ -92,7 +91,6 @@ export async function createPerson(value: any, resolver?: Resolver): Promise { +export default async (username, _host, option) => { const usernameLower = username.toLowerCase(); - const hostLowerAscii = toASCII(host).toLowerCase(); - const hostLower = toUnicode(hostLowerAscii); + const hostAscii = toASCII(_host).toLowerCase(); + const host = toUnicode(hostAscii); - if (config.host == hostLower) { + if (config.host == host) { return await User.findOne({ usernameLower }); } - let user = await User.findOne({ usernameLower, hostLower }, option); + let user = await User.findOne({ usernameLower, host }, option); if (user === null) { - const acctLower = `${usernameLower}@${hostLowerAscii}`; + const acctLower = `${usernameLower}@${hostAscii}`; const finger = await webFinger(acctLower); const self = finger.links.find(link => link.rel && link.rel.toLowerCase() === 'self'); diff --git a/src/server/api/common/get-host-lower.ts b/src/server/api/common/get-host-lower.ts index fc4b30439e..550c233001 100644 --- a/src/server/api/common/get-host-lower.ts +++ b/src/server/api/common/get-host-lower.ts @@ -1,5 +1,5 @@ import { toUnicode } from 'punycode'; export default host => { - return toUnicode(host).replace(/[A-Z]+/, match => match.toLowerCase()); + return toUnicode(host).toLowerCase(); }; diff --git a/src/server/api/endpoints/users/notes.ts b/src/server/api/endpoints/users/notes.ts index e91b75e1d3..bd4247c79c 100644 --- a/src/server/api/endpoints/users/notes.ts +++ b/src/server/api/endpoints/users/notes.ts @@ -65,7 +65,7 @@ module.exports = (params, me) => new Promise(async (res, rej) => { const q = userId !== undefined ? { _id: userId } - : { usernameLower: username.toLowerCase(), hostLower: getHostLower(host) } ; + : { usernameLower: username.toLowerCase(), host: getHostLower(host) } ; // Lookup user const user = await User.findOne(q, { diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts index 15257b869f..cf51dec4d2 100644 --- a/src/server/api/private/signup.ts +++ b/src/server/api/private/signup.ts @@ -118,7 +118,6 @@ export default async (ctx: Koa.Context) => { username: username, usernameLower: username.toLowerCase(), host: null, - hostLower: null, keypair: generateKeypair(), token: secret, email: null, diff --git a/src/services/note/create.ts b/src/services/note/create.ts index b238cd5607..603851adb5 100644 --- a/src/services/note/create.ts +++ b/src/services/note/create.ts @@ -78,7 +78,6 @@ export default async (user: IUser, data: { _renote: data.renote ? { userId: data.renote.userId } : null, _user: { host: user.host, - hostLower: user.hostLower, inbox: isRemoteUser(user) ? user.inbox : undefined } }; -- 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/server') 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 2d7525b2f656edcdb2a99f2145f13842d4306a64 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 15 Apr 2018 13:20:52 +0900 Subject: Fix bug --- package.json | 2 +- src/server/activitypub.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/server') diff --git a/package.json b/package.json index ecebd4695b..de80b48cb8 100644 --- a/package.json +++ b/package.json @@ -137,10 +137,10 @@ "js-yaml": "3.11.0", "jsdom": "11.7.0", "koa": "2.5.0", - "koa-body": "^2.5.0", "koa-bodyparser": "4.2.0", "koa-compress": "^2.0.0", "koa-favicon": "2.0.1", + "koa-json-body": "^5.3.0", "koa-mount": "3.0.0", "koa-multer": "1.0.2", "koa-router": "7.4.0", diff --git a/src/server/activitypub.ts b/src/server/activitypub.ts index 1682fc27d4..e27e2552f3 100644 --- a/src/server/activitypub.ts +++ b/src/server/activitypub.ts @@ -1,5 +1,5 @@ import * as Router from 'koa-router'; -const koaBody = require('koa-body'); +const json = require('koa-json-body'); const httpSignature = require('http-signature'); import { createHttp } from '../queue'; @@ -19,7 +19,7 @@ const router = new Router(); //#region Routing // inbox -router.post('/users/:user/inbox', koaBody(), ctx => { +router.post('/users/:user/inbox', json(), ctx => { let signature; ctx.req.headers.authorization = 'Signature ' + ctx.req.headers.signature; -- cgit v1.2.3-freya