Add httpOnly mode

master
Mészáros Mihály 2020-03-15 01:40:30 +01:00
parent 0bd983b10a
commit c8dd705530
2 changed files with 19 additions and 6 deletions

View File

@ -47,6 +47,10 @@ module.exports =
// Any http request is redirected to https. // Any http request is redirected to https.
// Listening port for http server. // Listening port for http server.
listeningRedirectPort : 80, listeningRedirectPort : 80,
// Listens only on http, only on listeningPort
// listeningRedirectPort disabled
// use case: loadbalancer backend
httpOnly: true,
// If this is set to true, only signed-in users will be able // If this is set to true, only signed-in users will be able
// to join a room directly. Non-signed-in users (guests) will // to join a room directly. Non-signed-in users (guests) will
// always be put in the lobby regardless of room lock status. // always be put in the lobby regardless of room lock status.

View File

@ -112,7 +112,7 @@ passport.deserializeUser((user, done) =>
done(null, user); done(null, user);
}); });
let httpsServer; let mainListener;
let io; let io;
let oidcClient; let oidcClient;
let oidcStrategy; let oidcStrategy;
@ -427,13 +427,22 @@ async function runHttpsServer()
app.use((req, res) => res.sendFile(`${__dirname}/public/index.html`)); app.use((req, res) => res.sendFile(`${__dirname}/public/index.html`));
httpsServer = spdy.createServer(tls, app); if (config.httpOnly === true)
{
// http
mainListener = http.createServer(app);
} else {
// https
mainListener = spdy.createServer(tls, app);
httpsServer.listen(config.listeningPort); // http
const redirectListener = http.createServer(app);
redirectListener.listen(config.listeningRedirectPort);
}
const httpServer = http.createServer(app); // https or http
mainListener.listen(config.listeningPort);
httpServer.listen(config.listeningRedirectPort);
} }
function isPathAlreadyTaken(url) function isPathAlreadyTaken(url)
@ -462,7 +471,7 @@ function isPathAlreadyTaken(url)
*/ */
async function runWebSocketServer() async function runWebSocketServer()
{ {
io = require('socket.io')(httpsServer); io = require('socket.io')(mainListener);
io.use( io.use(
sharedSession(session, { sharedSession(session, {