adejs/index.js

75 lines
2.0 KiB
JavaScript

const config = require('./settings/config.js');
require('app-module-path').addPath(config.BASE_DIR);
require('app-module-path').addPath(config.UTILS_DIR);
require('app-module-path').addPath(config.CONTROLLERS_DIR);
const express = require('express');
const pug = require('pug');
const http = require('http');
const path = require('path');
const log = require('log');
function main() {
let app = express();
let http = require('http').Server(app);
let bodyParser = require('body-parser');
let session = require('cookie-session');
let cookieParser = require('cookie-parser');
app.set('view engine', 'pug');
app.set('trust proxy', 1);
app.use(cookieParser(config.SECRET_KEY));
app.use(session({keys:[config.SECRET_KEY]}));
// Log request and time to answer
app.use(function(req, res, next) {
let start = Date.now();
res.on('finish', function() {
log.request(req, res, Date.now() - start);
});
res.locals.session = req.session;
next();
});
// Give app access to all urls
app.use(require('create-url'));
// Load controllers
require('controllers')(app, config.CONTROLLERS_DIR);
// Static files
app.use('/static', express.static(config.STATIC_DIR));
// When route not found, raise not found
app.use(function(req, res) {
res.setHeader('Content-Type', 'text/html');
res.render('404.pug', res.locals, function(err, result) {
if (err)
console.log(err);
res.send(result);
});
});
http.listen(config.PORT, config.LISTEN_ADDRESS, function() {
log.ready(
'Now listening ' + config.LISTEN_ADDRESS +
':' + config.PORT
);
});
// On sigint, stop the server
process.on('SIGINT', function() {
process.stdout.write('\r');
log.debug('Stopping server...');
process.exit(0);
});
}
if (require.main === module) {
main();
}