-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
132 lines (111 loc) · 3.63 KB
/
app.js
File metadata and controls
132 lines (111 loc) · 3.63 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
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
* app.js: GNU GENERAL PUBLIC LICENSE Version 3
*/
(function() {
"use strict";
/**
* The main application. Initializes the web services and database
* connections.
*
* @author Gerry Gehrmann
* @since 0.0.1
*/
/** ******************************** */
/** ********* Node modules ********* */
/** ******************************** */
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');
var session = require('express-session');
var bodyParser = require('body-parser');
var passport = require('passport');
var winston = require('winston');
var http = require('http').Server(app);
var io = require('socket.io')(http);
var EventEmitter = require('events').EventEmitter;
var messageBus = new EventEmitter();
/** Winston logging initialization */
winston.add(winston.transports.File, {
filename: 'log/taskplanner.log',
level: 'debug'
});
winston.cli();
winston.handleExceptions(new winston.transports.File({
filename: 'log/exceptions.log'
}));
/** ******************************** */
/** **** Configuration modules ***** */
/** ******************************** */
var hostConfig = require('config').get('host');
require('./app/config/mongo.config')(messageBus);
require('./app/config/passport.config');
/** ******************************** */
/** ****** Controller modules ****** */
/** ******************************** */
//require('./app/controllers/notification.controller')(messageBus);
/** ******************************** */
/** ******** Route modules ********* */
/** ******************************** */
var authRoutes = require('./app/routes/auth.routes');
var taskListRoutes = require('./app/routes/tasklist.routes')(io);
var userRoutes = require('./app/routes/user.routes');
/** ******************************** */
/** ** Application initialization ** */
/** ******************************** */
/** Body parser initialization */
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json());
/** Cookie parser and session initialization */
app.use(cookieParser('securedsession'));
app.use(session({
secret: 'securedsession',
resave: true,
saveUninitialized: true,
cookie: {
secure: false
}
}));
/** Access restrictions */
app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type,Authorization');
next();
});
/** Passport initialization */
app.use(passport.initialize());
app.use(passport.session());
/** Web routes initialization */
app.use(express.static('public'));
app.use('/auth', authRoutes);
app.use('/task', taskListRoutes);
app.use('/user', userRoutes);
app.use(express.static(__dirname + '/node_modules'));
/** ******************************** */
/** ******* Start the server ******* */
/** ******************************** */
var port = process.env.PORT;
if (!port) {
port = hostConfig.port;
}
var server = http.listen(port, function() {
var host = server.address().address;
var port = server.address().port;
winston.info('Taskplanner listening at http://%s:%s', host, port);
});
/** Initialize Socket.IO */
io.on('connection', function(socket) {
console.log('a user connected');
socket.on('disconnect', function() {
console.log('user disconnected');
});
socket.emit('init', {});
});
process.on('SIGTERM', function() {
server.close(function() {
winston.info('Taskplanner shutdown at ' + new Date());
process.exit(0);
});
});
})();