Added support for locking rooms
This commit is contained in:
@@ -25,6 +25,9 @@ class Room extends EventEmitter
|
||||
// Closed flag.
|
||||
this._closed = false;
|
||||
|
||||
// Locked flag.
|
||||
this._locked = false;
|
||||
|
||||
this._chatHistory = [];
|
||||
|
||||
this._fileHistory = [];
|
||||
@@ -102,6 +105,7 @@ class Room extends EventEmitter
|
||||
{
|
||||
logger.info('handleConnection() [peerName:"%s"]', peerName);
|
||||
|
||||
// This will allow reconnects to join despite lock
|
||||
if (this._signalingPeers.has(peerName))
|
||||
{
|
||||
logger.warn(
|
||||
@@ -114,6 +118,11 @@ class Room extends EventEmitter
|
||||
signalingPeer.socket.disconnect();
|
||||
this._signalingPeers.delete(peerName);
|
||||
}
|
||||
else if (this._locked) // Don't allow connections to a locked room
|
||||
{
|
||||
socket.emit('room-locked');
|
||||
socket.disconnect(true);
|
||||
}
|
||||
|
||||
const signalingPeer = { peerName : peerName, socket : socket };
|
||||
|
||||
@@ -127,6 +136,7 @@ class Room extends EventEmitter
|
||||
this._signalingPeers.set(peerName, signalingPeer);
|
||||
|
||||
this._handleSignalingPeer(signalingPeer);
|
||||
socket.emit('room-ready');
|
||||
}
|
||||
|
||||
authCallback(data)
|
||||
@@ -308,6 +318,38 @@ class Room extends EventEmitter
|
||||
);
|
||||
});
|
||||
|
||||
signalingPeer.socket.on('lock-room', (request, cb) =>
|
||||
{
|
||||
// Return no error
|
||||
cb(null);
|
||||
|
||||
this._locked = true;
|
||||
|
||||
// Spread to others
|
||||
signalingPeer.socket.broadcast.to(this._roomId).emit(
|
||||
'lock-room',
|
||||
{
|
||||
peerName : signalingPeer.peerName
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
signalingPeer.socket.on('unlock-room', (request, cb) =>
|
||||
{
|
||||
// Return no error
|
||||
cb(null);
|
||||
|
||||
this._locked = false;
|
||||
|
||||
// Spread to others
|
||||
signalingPeer.socket.broadcast.to(this._roomId).emit(
|
||||
'unlock-room',
|
||||
{
|
||||
peerName : signalingPeer.peerName
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
signalingPeer.socket.on('send-file', (request, cb) =>
|
||||
{
|
||||
// Return no error
|
||||
|
||||
+6
-7
@@ -10,7 +10,6 @@ const https = require('https');
|
||||
const http = require('http');
|
||||
const express = require('express');
|
||||
const compression = require('compression');
|
||||
const url = require('url');
|
||||
const Logger = require('./lib/Logger');
|
||||
const Room = require('./lib/Room');
|
||||
const Dataporten = require('passport-dataporten');
|
||||
@@ -46,12 +45,12 @@ const dataporten = new Dataporten.Setup(config.oauth2);
|
||||
|
||||
app.all('*', (req, res, next) =>
|
||||
{
|
||||
if(req.secure)
|
||||
if (req.secure)
|
||||
{
|
||||
return next();
|
||||
}
|
||||
|
||||
res.redirect('https://' + req.hostname + req.url);
|
||||
res.redirect(`https://${req.hostname}${req.url}`);
|
||||
});
|
||||
|
||||
app.use(dataporten.passport.initialize());
|
||||
@@ -71,10 +70,10 @@ app.get('/login', (req, res, next) =>
|
||||
|
||||
dataporten.setupLogout(app, '/logout');
|
||||
|
||||
app.get('/', function (req, res) {
|
||||
console.log(req.url);
|
||||
res.sendFile(`${__dirname}/public/chooseRoom.html`);
|
||||
})
|
||||
app.get('/', (req, res) =>
|
||||
{
|
||||
res.sendFile(`${__dirname}/public/chooseRoom.html`);
|
||||
});
|
||||
|
||||
app.get(
|
||||
'/auth-callback',
|
||||
|
||||
Reference in New Issue
Block a user