const config = require('./settings/config.js'); require('app-module-path').addPath(config.BASE_DIR); require('app-module-path').addPath(config.UTILS_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); // 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(); }