59 lines
2.2 KiB
JavaScript
59 lines
2.2 KiB
JavaScript
// Config file
|
|
var settings = require('./server_config/settings.json');
|
|
|
|
// Libraries
|
|
var fs = require('fs');
|
|
var async = require('async');
|
|
var express = require('express');
|
|
var app = express();
|
|
var server = require('http').createServer(app);
|
|
var io = require('socket.io').listen(server);
|
|
var bodyParser = require('body-parser');
|
|
var compress = require('compression');
|
|
|
|
// Internals
|
|
var indexController = require('./app/node_controllers/indexController');
|
|
var launchTestController = require('./app/node_controllers/launchTestController');
|
|
var resultsController = require('./app/node_controllers/resultsController');
|
|
var waitingQueueSocket = require('./app/node_controllers/waitingQueueSocket');
|
|
var testQueue = require('./app/lib/testQueue');
|
|
|
|
app.use(compress());
|
|
app.use(bodyParser.urlencoded({ extended: false }));
|
|
|
|
|
|
// Redirect www.yellowlab.tools to yellowlab.tools (for SEO)
|
|
app.all('*', function(req, res, next) {
|
|
if (req.hostname && req.hostname.match(/^www\.yellowlab\.tools/) !== null) {
|
|
res.redirect('http://' + req.hostname.replace(/^www\.yellowlab\.tools/, 'yellowlab.tools') + req.url);
|
|
} else {
|
|
next();
|
|
}
|
|
});
|
|
|
|
// Routes definition
|
|
app.get('/', function(req, res) { indexController(req, res, settings.googleAnalyticsId); });
|
|
app.post('/launchTest', function(req, res) { launchTestController(req, res, testQueue, settings.googleAnalyticsId); });
|
|
app.get('/results/:testId', function(req, res) { resultsController(req, res, settings.googleAnalyticsId); });
|
|
|
|
|
|
// Static files
|
|
app.use('/public', express.static(__dirname + '/app/public'));
|
|
app.use('/bower_components', express.static(__dirname + '/bower_components'));
|
|
|
|
|
|
// Socket.io
|
|
io.on('connection', function(socket){
|
|
waitingQueueSocket(socket, testQueue);
|
|
});
|
|
|
|
// Create the results folder if it doesn't exist
|
|
var resultsPath = 'results';
|
|
if (!fs.existsSync(resultsPath)) {
|
|
fs.mkdirSync(resultsPath);
|
|
}
|
|
|
|
// Launch the server
|
|
server.listen(settings.serverPort, function() {
|
|
console.log('Listening on port %d', server.address().port);
|
|
}); |