From a3bd4ba42693b1dc99ef586ef35f61dc53cdf9e9 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 13 Apr 2018 00:51:55 +0900 Subject: wip --- src/server/index.ts | 69 ++++++++++++++++------------------------------------- 1 file changed, 21 insertions(+), 48 deletions(-) (limited to 'src/server/index.ts') diff --git a/src/server/index.ts b/src/server/index.ts index 962d3b5f4f..e9bfa9e10b 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -5,67 +5,40 @@ import * as fs from 'fs'; import * as http from 'http'; import * as https from 'https'; -import * as express from 'express'; -import * as morgan from 'morgan'; +import * as Koa from 'koa'; +import * as Router from 'koa-router'; +import * as bodyParser from 'koa-bodyparser'; import activityPub from './activitypub'; import webFinger from './webfinger'; -import log from './log-request'; import config from '../config'; -/** - * Init app - */ -const app = express(); -app.disable('x-powered-by'); -app.set('trust proxy', 'loopback'); - -app.use(morgan(process.env.NODE_ENV == 'production' ? 'combined' : 'dev', { - // create a write stream (in append mode) - stream: config.accesslog ? fs.createWriteStream(config.accesslog) : null -})); - -app.use((req, res, next) => { - log(req); - next(); -}); +// Init server +const app = new Koa(); +app.proxy = true; +app.use(bodyParser); -/** - * HSTS - * 6month(15552000sec) - */ +// HSTS +// 6months (15552000sec) if (config.url.startsWith('https')) { - app.use((req, res, next) => { - res.header('strict-transport-security', 'max-age=15552000; preload'); + app.use((ctx, next) => { + ctx.set('strict-transport-security', 'max-age=15552000; preload'); next(); }); } -// Drop request when without 'Host' header -app.use((req, res, next) => { - if (!req.headers['host']) { - res.sendStatus(400); - } else { - next(); - } -}); +// Init router +const router = new Router(); -// 互換性のため -app.post('/meta', (req, res) => { - res.header('Access-Control-Allow-Origin', '*'); - res.json({ - version: 'nighthike' - }); -}); +// Routing +router.use('/api', require('./api')); +router.use('/files', require('./file')); +router.use(activityPub.routes()); +router.use(webFinger.routes()); +router.use(require('./web')); -/** - * Register modules - */ -app.use('/api', require('./api')); -app.use('/files', require('./file')); -app.use(activityPub); -app.use(webFinger); -app.use(require('./web')); +// Register router +app.use(router.routes()); function createServer() { if (config.https) { -- cgit v1.2.3-freya