-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.js
More file actions
executable file
·84 lines (72 loc) · 2.79 KB
/
server.js
File metadata and controls
executable file
·84 lines (72 loc) · 2.79 KB
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
#!/bin/env node
var express = require('express');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var session = require('express-session');
var cookieParser = require('cookie-parser');
var passport = require('passport');
var flash = require('connect-flash');
var Question = require('./models/question');
var Answer = require('./models/answer');
var settings = require('./config/settings');
var SampleApp = function () {
var self = this;
self.terminator = function (sig) {
if (typeof sig === "string") {
console.log('%s: Received %s - terminating sample app ...',
Date(Date.now()), sig);
process.exit(1);
}
console.log('%s: Node server stopped.', Date(Date.now()));
};
self.setupTerminationHandlers = function () {
// Process on exit and signals.
process.on('exit', function () {
self.terminator();
});
// Removed 'SIGPIPE' from the list - bugz 852598.
['SIGHUP', 'SIGINT', 'SIGQUIT', 'SIGILL', 'SIGTRAP', 'SIGABRT',
'SIGBUS', 'SIGFPE', 'SIGUSR1', 'SIGSEGV', 'SIGUSR2', 'SIGTERM'
].forEach(function (element, index, array) {
process.on(element, function () {
self.terminator(element);
});
});
};
self.initializeServer = function () {
self.app = express();
self.app.use(bodyParser.json());
self.app.use(morgan('combined'));
var MongoStore = require('connect-mongo')(session);
self.app.use(cookieParser());
self.app.use(session({
store: new MongoStore({url: settings.connection_string}),
secret: 'ilovescotchscotchyscotchscotch',
resave: true,
saveUninitialized: true
})); // session secret
self.app.use(passport.initialize());
self.app.use(passport.session()); // persistent login sessions
self.app.use(flash()); // use connect-flash for flash messages stored in session
self.app.set('view engine', 'ejs');
self.app.use(express.static(__dirname + '/public'));
self.app.disable("x-powered-by");
require('./app/routes.js')(self, passport);
require('./config/passport')(passport);
require('./config/database')(settings.connection_string);
};
self.initialize = function () {
self.setupTerminationHandlers();
settings.init();
self.initializeServer();
};
self.start = function () {
self.app.listen(settings.port, settings.ipaddress, function () {
console.log('%s: Node server started on %s:%d ...', Date(Date.now()), settings.ipaddress, settings.port);
});
};
};
var zapp = new SampleApp();
zapp.initialize();
zapp.start();
module.exports = zapp.app;