diff --git a/src/api/index.js b/src/api/index.js index 86f3a07..e1adce1 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -3,7 +3,7 @@ const cors = require('cors'); const bodyParser = require('body-parser'); const publicContent = require('../../app.json'); -module.exports = ({ config, realm, messageHandler }) => { +module.exports = ({ config, realm, messageHandler, randomId }) => { const authMiddleware = require('./middleware/auth')({ config, realm }); const app = express.Router(); @@ -16,7 +16,7 @@ module.exports = ({ config, realm, messageHandler }) => { res.send(publicContent); }); - app.use('/:key', require('./v1/public')({ config, realm })); + app.use('/:key', require('./v1/public')({ config, realm, randomId })); app.use('/:key/:id/:token', authMiddleware, jsonParser, require('./v1/calls')({ realm, messageHandler })); return app; diff --git a/src/api/v1/public/index.js b/src/api/v1/public/index.js index a47a371..8a09752 100644 --- a/src/api/v1/public/index.js +++ b/src/api/v1/public/index.js @@ -1,12 +1,13 @@ const express = require('express'); -module.exports = ({ config, realm }) => { +module.exports = ({ config, realm, randomId }) => { const app = express.Router(); // Retrieve guaranteed random ID. app.get('/id', (req, res) => { res.contentType = 'text/html'; - res.send(realm.generateClientId()); + console.error('src/api/v1/public/index.js', randomId); + res.send(realm.generateClientId(randomId)); }); // Get a list of all peers for a key, enabled by the `allowDiscovery` flag. diff --git a/src/index.js b/src/index.js index ea3d9e0..0ec5087 100644 --- a/src/index.js +++ b/src/index.js @@ -6,11 +6,11 @@ const defaultConfig = require('../config'); const WebSocketServer = require('./services/webSocketServer'); const Realm = require('./models/realm'); -const init = ({ app, server, options }) => { +const init = ({ app, server, options, randomId }) => { const config = options; const realm = new Realm(); const messageHandler = require('./messageHandler')({ realm }); - const api = require('./api')({ config, realm, messageHandler }); + const api = require('./api')({ config, realm, messageHandler, randomId }); const { startMessagesExpiration } = require('./services/messagesExpire')({ realm, config, messageHandler }); const checkBrokenConnections = require('./services/checkBrokenConnections')({ @@ -62,7 +62,7 @@ const init = ({ app, server, options }) => { checkBrokenConnections.start(); }; -function ExpressPeerServer(server, options) { +function ExpressPeerServer(server, options, randomId) { const app = express(); options = { @@ -80,13 +80,13 @@ function ExpressPeerServer(server, options) { 'can\'t start PeerServer'); } - init({ app, server, options }); + init({ app, server, options, randomId }); }); return app; } -function PeerServer(options = {}, callback) { +function PeerServer(options = {}, callback, randomId) { const app = express(); options = { @@ -114,7 +114,7 @@ function PeerServer(options = {}, callback) { server = http.createServer(app); } - const peerjs = ExpressPeerServer(server, options); + const peerjs = ExpressPeerServer(server, options, randomId); app.use(peerjs); if (callback) { diff --git a/src/models/realm.js b/src/models/realm.js index fbc4e84..e0355fd 100644 --- a/src/models/realm.js +++ b/src/models/realm.js @@ -42,10 +42,12 @@ class Realm { this._messageQueues.delete(id); } - generateClientId () { - const randomId = () => (Math.random().toString(36) + '0000000000000000000').substr(2, 16); + generateClientId (_randomId) { + const randomId = typeof _randomId === 'function' ? + () => _randomId : + () => (Math.random().toString(36) + '0000000000000000000').substr(2, 16); - let clientId = randomId(); + let clientId = randomId(randomId)(); while (this.getClientById(clientId)) { clientId = randomId();