-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathserver.js
111 lines (97 loc) · 3.28 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
(function() {
'use strict';
// Module Dependencies
require('coffee-script');
require('coffee-script/register');
var express = require('express');
var http = require('http');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var static_dir = require('serve-static');
var errorHandler = require('errorhandler');
var helmet = require('helmet');
var throng = require('throng');
var cookieParser = require('cookie-parser');
var LocalStrategy = require('passport-local').Strategy;
var jwt = require('express-jwt');
var timeout = require('connect-timeout');
var flash = require('connect-flash');
var device = require('express-device');
var mailer = require('nodemailer');
require('dotenv').config({silent: process.env.NODE_ENV !== 'development'});
var WORKERS = process.env.WEB_CONCURRENCY || 1;
//Create workers on all the threads
throng({
workers: WORKERS,
lifetime: Infinity
}, start);
// The application
function start() {
var app = express();
var port = process.env.PORT || 3000;
var server = app.listen(port);
require('./routes/redirects')(app);
app.use(helmet());
// Extras
// Rendering tools
app.locals.moment = require('moment');
// Passport Logic
var passport = require('passport');
var User = require('./entities/users/model');
var Sponsor = require('./entities/sponsors/model');
// Node mailer
var transporter = mailer.createTransport({
host: process.env.MAIL_HOST,
port: process.env.MAIL_PORT,
secure: true,
auth: {
user: process.env.MAIL_USER,
pass: process.env.MAIL_PASS
}
});
// all environments
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(favicon(path.join(__dirname, 'static/assets/img/favicon.png')));
if('development' == app.get('env'))
app.use(logger('dev'))
else
app.use(logger('common', {
skip: function (req, res) { return res.statusCode < 400 }
}));
app.use(cookieParser());
app.use(bodyParser.json({type: 'application/vnd.api+json', limit: '50mb'}));
app.use(device.capture());
app.use(bodyParser.urlencoded({extended: true, limit: '50mb', parameterLimit: 3000}));
app.use(passport.initialize());
app.use(flash());
app.use(methodOverride('X-HTTP-Method-Override'));
app.use(static_dir(path.join(__dirname, 'static')));
var appRoutes = require('./routes/index')(app, process.env);
var apiRoutes = require('./routes/api')(app, process.env, transporter);
app.get('*', function(req, res){
res.status(404);
res.render('error', {'error': 'Page not found'});
});
// Error Handling
// Development only
if ('development' == app.get('env')) {
app.use(errorHandler());
} else {
// 404
app.use(function(req, res) {
res.sendStatus(404);
});
// 500
app.use(function(err, req, res, next) {
res.sendStatus(500);
});
}
http.createServer(app).listen(app.get(port), function(){
console.log('Express server listening on port ' + port + ' on ' + WORKERS + ' worker(s)');
});
}
}).call(this);