-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
118 lines (101 loc) · 4.03 KB
/
app.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
112
113
114
115
116
117
118
/**
Author: Jaime Martinez
StudentID: 642231
Username: jmartinez1
Subject: ISYS90080
University: The University of Melbourne
Institution: Melbourne Networked Society Institue
Date Created: April 1, 2015
Last Modified: April 22
**/
// set up ======================================================================
// get all the tools we need
var express = require('express');
var app = express();
var port = process.env.PORT || 443;
var mongoose = require('mongoose');
var passport = require('passport');
var flash = require('connect-flash');
var morgan = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var fs = require('fs');
var ExpressPeerServer = require('peer').ExpressPeerServer;
var connectCounter= 0;
//Database config
var configDB = require( __dirname + '/app/server/config/database.js');
// configuration ===============================================================
mongoose.connect(configDB.url); // connect to our database
require(__dirname + '/app/server/config/passport')(passport); // pass passport for configuration
var sslOptions ={
key: fs.readFileSync('./ssl/server.key'),
cert: fs.readFileSync('./ssl/server.crt'),
ca: fs.readFileSync('./ssl/ca.crt'),
requestCert: false,
rejectUnauthorized: false
};
// set up our express application
app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser()); // get information from html forms
app.set('views', __dirname + '/app/server/views');
app.set('view engine', 'jade'); // set up jade for templating
app.engine('jade', require('jade').__express);
// Render html
app.engine('.html', require('jade').renderFile);
// required for passport
//Stay logged in for 3 hours.
app.use(session({ secret: 'mymommakesmemashmyminimandmsonamondaymorningoohah',cookie: { maxAge : 10800000 } })); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session
// routes ======================================================================
require('./app/server/router.js')(app, passport); // load our routes and pass in our app and fully configured passport
//Static content
app.use(express.static(__dirname + '/app/public'));
//app.listen(port);
//console.log('Server listening on port ' + port);
//socket io connection
var server = require('https').createServer(sslOptions,app);
io = require('socket.io').listen(server);
//io.set('match origin protocol', true);
// launch ======================================================================
server.listen(port,function(){
console.log('HTTPS server listening on port ' + port);
});
io.sockets.on('connection', function (socket){
console.log("new client connected to socket ", socket.id);
require(__dirname + '/app/server/config/connection')(socket);
});
var vr_connections = io.of('/vr_connections');
vr_connections.on('connection', function (socket) {
connectCounter++;
console.log("new VR client connected ", socket.id);
require(__dirname + '/app/server/config/vr_connection')(socket,vr_connections);
});
vr_connections.on('disconnect', function() { connectCounter--; });
// Redirect from http port 80 to https 443
var http = require('http');
http.createServer(function (req, res) {
console.log("Location "+ "https://" + req.headers['port'] +" "+req.url )
res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url });
res.end();
}).listen(80);
var pOpts = {
debug: true,
sslkey: fs.readFileSync('./ssl/server.key'),
sslcert: fs.readFileSync('./ssl/server.crt')
}
app.use('/api', ExpressPeerServer(server, pOpts));
/*
//PeerJS Server
var pOpts = {
debug: true,
sslkey: fs.readFileSync('./ssl/server.key'),
sslcert: fs.readFileSync('./ssl/server.crt')
}
// var pserver = require('https').createServer(sslOptions,app);
var pserver = ExpressPeerServer(server, pOpts) ;
app.use('/pjs',pserver);
pserver.listen(9000);*/