diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2018-04-15 18:12:11 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-15 18:12:11 +0900 |
| commit | f982f5e850d1096d54014396b3ee9d337e305bcb (patch) | |
| tree | 0dae4116aa5d7c3fe6c5eba54af6f9f15a271761 /src/server | |
| parent | Merge pull request #4 from syuilo/master (diff) | |
| parent | nanka iroiro (diff) | |
| download | misskey-f982f5e850d1096d54014396b3ee9d337e305bcb.tar.gz misskey-f982f5e850d1096d54014396b3ee9d337e305bcb.tar.bz2 misskey-f982f5e850d1096d54014396b3ee9d337e305bcb.zip | |
Merge pull request #5 from syuilo/master
追従
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/activitypub.ts | 7 | ||||
| -rw-r--r-- | src/server/api/common/get-host-lower.ts | 2 | ||||
| -rw-r--r-- | src/server/api/endpoints/users/notes.ts | 2 | ||||
| -rw-r--r-- | src/server/api/endpoints/users/recommendation.ts | 14 | ||||
| -rw-r--r-- | src/server/api/private/signup.ts | 1 | ||||
| -rw-r--r-- | src/server/api/service/twitter.ts | 80 | ||||
| -rw-r--r-- | src/server/file/index.ts | 1 | ||||
| -rw-r--r-- | src/server/index.ts | 9 | ||||
| -rw-r--r-- | src/server/web/url-preview.ts | 4 |
9 files changed, 66 insertions, 54 deletions
diff --git a/src/server/activitypub.ts b/src/server/activitypub.ts index 2a99bccfc4..e27e2552f3 100644 --- a/src/server/activitypub.ts +++ b/src/server/activitypub.ts @@ -1,5 +1,6 @@ import * as Router from 'koa-router'; -import { parseRequest } from 'http-signature'; +const json = require('koa-json-body'); +const httpSignature = require('http-signature'); import { createHttp } from '../queue'; import pack from '../remote/activitypub/renderer'; @@ -18,13 +19,13 @@ const router = new Router(); //#region Routing // inbox -router.post('/users/:user/inbox', ctx => { +router.post('/users/:user/inbox', json(), ctx => { let signature; 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; 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/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, 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/server/api/service/twitter.ts b/src/server/api/service/twitter.ts index 9fb01b44ef..284ae7ee22 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) { @@ -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<any>((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; @@ -141,31 +147,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<any>((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 + })); } }); } 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(); }); diff --git a/src/server/index.ts b/src/server/index.ts index db41a1dcb5..5db3da2b93 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()); @@ -62,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); }); 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; }; |