1
0
goodtimes/server/app.js
James Ketrenos c7435c4bb1 eslinted everything and moved db around
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
2022-04-07 14:25:20 -07:00

89 lines
2.4 KiB
JavaScript
Executable File

'use strict';
process.env.TZ = 'Etc/GMT';
console.log('Loading Goodtimes');
const express = require('express'),
bodyParser = require('body-parser'),
config = require('config'),
session = require('express-session'),
basePath = require('./basepath'),
cookieParser = require('cookie-parser'),
app = express(),
csrf = require('csurf'),
http = require('http'),
{ goodTimesDB } = require('./db.js');
require('./console-line.js'); /* Monkey-patch console.log with line numbers */
/* App is behind an nginx proxy which we trust, so use the remote address
* set in the headers */
app.set('trust proxy', true);
app.use(session({
secret: 'm@g1x!',
resave: false,
saveUninitialized: false,
cookie: { secure: true }
}));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(csrf({
cookie: true
}));
app.use(bodyParser.json());
//const ws = require('express-ws')(app, server);
app.use(function (err, req, res) {
console.error(err.message);
res.status(err.status || 500).json({
message: err.message,
error: {}
});
});
/* Initialize the data base, configure routes, and open server */
goodTimesDB.init().then((db) => {
console.log('DB connected. Configuring routes.');
app.locals.db = db;
app.set('basePath', basePath);
app.use(`${basePath}api/v1/groups`, require('./routes/groups'));
app.use(`${basePath}api/v1/users`, require('./routes/users'));
}).then(() => {
const server = http.createServer(app),
serverConfig = config.get('server');
console.log('Hosting server from: ' + basePath);
app.set('port', serverConfig.port);
process.on('SIGINT', () => {
console.log('Gracefully shutting down from SIGINT (Ctrl-C) in 2 seconds');
setTimeout(() => process.exit(-1), 2000);
server.close(() => process.exit(1));
});
server.on('error', function (error) {
if (error.syscall !== 'listen') {
throw error;
}
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(serverConfig.port + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(serverConfig.port + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
});
server.listen(serverConfig.port, () => {
console.log(`http server listening on ${serverConfig.port}`);
});
});