go-jamming/jsfork/src/serve.js

41 lines
1.1 KiB
JavaScript
Raw Normal View History

2021-03-07 20:30:14 +01:00
"use strict";
const Koa = require("koa");
2021-04-05 17:44:27 +02:00
const pino = require('koa-pino-logger')()
const log = require('pino')()
2021-03-07 20:30:14 +01:00
const bodyParser = require('koa-body');
const koaRouter = require("koa-router");
const helmet = require("koa-helmet");
2021-03-08 09:35:36 +01:00
const { RateLimit } = require('koa2-ratelimit');
2021-03-07 20:30:14 +01:00
// koa docs: https://koajs.com/#application
const app = new Koa();
const router = new koaRouter();
2021-03-08 09:35:36 +01:00
// see https://www.npmjs.com/package/koa2-ratelimit, simple brute-force with helmet will suffice.
app.use(RateLimit.middleware({
interval: { min: 15 },
max: 100
}));
app.use(helmet());
2021-04-05 17:44:27 +02:00
app.use(pino);
2021-03-07 20:30:14 +01:00
// enable ctx.request.body parsing for x-www-form-urlencoded webmentions etc
app.use(bodyParser({
multipart: true,
urlencoded: true
}));
// route docs: https://github.com/koajs/router/blob/HEAD/API.md#module_koa-router--Router+get%7Cput%7Cpost%7Cpatch%7Cdelete%7Cdel
2021-03-08 09:35:36 +01:00
require("./webmention/route").route(router);
require("./pingback/route").route(router);
const config = require("./config");
config.setupDataDirs();
2021-03-07 20:30:14 +01:00
app.use(router.routes()).use(router.allowedMethods());
2021-03-08 17:01:28 +01:00
app.listen(config.port, config.host, () => {
2021-04-05 17:44:27 +02:00
log.info(`Started localhost at port ${config.port}`)
2021-03-07 20:30:14 +01:00
});