From cb0d79222333eb2bb00618ab81dddd2e64040eba Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Tue, 18 Feb 2020 21:00:22 -0400 Subject: [PATCH 1/5] logs --- src/sockets.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/sockets.js b/src/sockets.js index 93435646..872dc351 100644 --- a/src/sockets.js +++ b/src/sockets.js @@ -68,40 +68,53 @@ module.exports = ( return null; }; + io.on("connection", socket => { + + logger.info(`io.onconnection`) + // this is where we create the websocket connection // with the GunDB service. Mediator.createMediator(socket); - logger.debug("socket.handshake", socket.handshake); + logger.info(`socket after createmediator`) + + logger.info("socket.handshake", socket.handshake); if (authEnabled) { + logger.info('io.onconnection -> authEnabled') try { const authorizationHeaderToken = getSocketAuthToken(socket); + logger.info('io.onconnection -> authHEaderTOken: ' + JSON.stringify(authorizationHeaderToken)) if (authorizationHeaderToken === userToken) { + logger.info('io.onconnection -> setting socket._limitUser to false') socket._limituser = false; } else if (authorizationHeaderToken === limitUserToken) { + logger.info('io.onconnection -> setting socket._limitUser to true') socket._limituser = true; } else { + logger.info('io.onconnection -> disconnecting socket as unauth') socket.disconnect("unauthorized"); return; } } catch (err) { + logger.info('io.onconnection -> error caught:') // probably because of missing authorization header - logger.debug(err); + logger.info(JSON.stringify(err)); + logger.info('WILL DISCONNECT SOCKET') socket.disconnect("unauthorized"); return; } } else { + logger.info('io.onconnection -> no auth enabled so setting socket._limituser to false') socket._limituser = false; } /** printing out the client who joined */ - logger.debug("New socket client connected (id=" + socket.id + ")."); + logger.info("New socket client connected (id=" + socket.id + ")."); socket.emit("hello", { limitUser: socket._limituser }); - socket.broadcast.emit("hello", { remoteAddress: socket.handshake.address }); /** pushing new client to client array*/ @@ -113,7 +126,7 @@ module.exports = ( socket.on("disconnect", () => { clients.splice(clients.indexOf(socket), 1); unregisterSocketListeners(socket); - logger.debug("client disconnected (id=" + socket.id + ")."); + logger.info("client disconnected (id=" + socket.id + ")."); }); }); From 529c21239d09d7bdf117678074de891e8ead94fd Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Tue, 18 Feb 2020 21:15:44 -0400 Subject: [PATCH 2/5] remove unused code --- src/server.js | 9 +------ src/sockets.js | 68 -------------------------------------------------- 2 files changed, 1 insertion(+), 76 deletions(-) diff --git a/src/server.js b/src/server.js index 648db777..80aaa52a 100644 --- a/src/server.js +++ b/src/server.js @@ -196,14 +196,7 @@ const server = program => { const io = require('socket.io')(serverInstance) - const Sockets = require('./sockets')( - io, - lnd, - program.user, - program.pwd, - program.limituser, - program.limitpwd - ) + const Sockets = require('./sockets')(io, lnd) require('./routes')(app, defaults, Sockets, { serverHost: module.serverHost, diff --git a/src/sockets.js b/src/sockets.js index 872dc351..272e7d75 100644 --- a/src/sockets.js +++ b/src/sockets.js @@ -5,10 +5,6 @@ const logger = require("winston"); module.exports = ( io, lnd, - login, - pass, - limitlogin, - limitpass ) => { const Mediator = require("../services/gunDB/Mediator/index.js"); const EventEmitter = require("events"); @@ -17,21 +13,6 @@ module.exports = ( const mySocketsEvents = new MySocketsEvents(); - const clients = []; - - const authEnabled = (login && pass) || (limitlogin && limitpass); - - let userToken = null; - let limitUserToken = null; - if (login && pass) { - userToken = Buffer.from(login + ":" + pass).toString("base64"); - } - if (limitlogin && limitpass) { - limitUserToken = Buffer.from(limitlogin + ":" + limitpass).toString( - "base64" - ); - } - // register the lnd invoices listener const registerLndInvoiceListener = socket => { socket._invoiceListener = { @@ -57,20 +38,8 @@ module.exports = ( unregisterLndInvoiceListener(socket); }; - const getSocketAuthToken = socket => { - if (socket.handshake.query.auth) { - return socket.handshake.query.auth; - } else if (socket.handshake.headers.authorization) { - return socket.handshake.headers.authorization.substr(6); - } - - socket.disconnect("unauthorized"); - return null; - }; - io.on("connection", socket => { - logger.info(`io.onconnection`) // this is where we create the websocket connection @@ -81,50 +50,13 @@ module.exports = ( logger.info("socket.handshake", socket.handshake); - if (authEnabled) { - logger.info('io.onconnection -> authEnabled') - try { - const authorizationHeaderToken = getSocketAuthToken(socket); - logger.info('io.onconnection -> authHEaderTOken: ' + JSON.stringify(authorizationHeaderToken)) - - if (authorizationHeaderToken === userToken) { - logger.info('io.onconnection -> setting socket._limitUser to false') - socket._limituser = false; - } else if (authorizationHeaderToken === limitUserToken) { - logger.info('io.onconnection -> setting socket._limitUser to true') - socket._limituser = true; - } else { - logger.info('io.onconnection -> disconnecting socket as unauth') - socket.disconnect("unauthorized"); - return; - } - } catch (err) { - logger.info('io.onconnection -> error caught:') - // probably because of missing authorization header - logger.info(JSON.stringify(err)); - logger.info('WILL DISCONNECT SOCKET') - socket.disconnect("unauthorized"); - return; - } - } else { - logger.info('io.onconnection -> no auth enabled so setting socket._limituser to false') - socket._limituser = false; - } - /** printing out the client who joined */ logger.info("New socket client connected (id=" + socket.id + ")."); - socket.emit("hello", { limitUser: socket._limituser }); - socket.broadcast.emit("hello", { remoteAddress: socket.handshake.address }); - - /** pushing new client to client array*/ - clients.push(socket); - registerSocketListeners(socket); /** listening if client has disconnected */ socket.on("disconnect", () => { - clients.splice(clients.indexOf(socket), 1); unregisterSocketListeners(socket); logger.info("client disconnected (id=" + socket.id + ")."); }); From 49d9cb88064a1c8b1da3f39f267297f9ee36dc66 Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Tue, 18 Feb 2020 21:44:11 -0400 Subject: [PATCH 3/5] static import --- src/server.js | 2 +- src/sockets.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server.js b/src/server.js index 80aaa52a..728b6f1d 100644 --- a/src/server.js +++ b/src/server.js @@ -196,7 +196,7 @@ const server = program => { const io = require('socket.io')(serverInstance) - const Sockets = require('./sockets')(io, lnd) + const Sockets = require('./sockets')(lnd) require('./routes')(app, defaults, Sockets, { serverHost: module.serverHost, diff --git a/src/sockets.js b/src/sockets.js index 272e7d75..213d4e6e 100644 --- a/src/sockets.js +++ b/src/sockets.js @@ -1,9 +1,9 @@ // app/sockets.js const logger = require("winston"); +const io = require('socket.io') module.exports = ( - io, lnd, ) => { const Mediator = require("../services/gunDB/Mediator/index.js"); From 4f9cfd81efae0074563b3dabdf28a244dc940cb5 Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Tue, 18 Feb 2020 21:44:54 -0400 Subject: [PATCH 4/5] Revert "static import" This reverts commit 49d9cb88064a1c8b1da3f39f267297f9ee36dc66. --- src/server.js | 2 +- src/sockets.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server.js b/src/server.js index 728b6f1d..80aaa52a 100644 --- a/src/server.js +++ b/src/server.js @@ -196,7 +196,7 @@ const server = program => { const io = require('socket.io')(serverInstance) - const Sockets = require('./sockets')(lnd) + const Sockets = require('./sockets')(io, lnd) require('./routes')(app, defaults, Sockets, { serverHost: module.serverHost, diff --git a/src/sockets.js b/src/sockets.js index 213d4e6e..272e7d75 100644 --- a/src/sockets.js +++ b/src/sockets.js @@ -1,9 +1,9 @@ // app/sockets.js const logger = require("winston"); -const io = require('socket.io') module.exports = ( + io, lnd, ) => { const Mediator = require("../services/gunDB/Mediator/index.js"); From 06bfa081542cced5c1998fd3b665ee277e77fc5e Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Tue, 18 Feb 2020 22:07:17 -0400 Subject: [PATCH 5/5] one time use sockets --- src/sockets.js | 52 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/src/sockets.js b/src/sockets.js index 272e7d75..2e41ad0f 100644 --- a/src/sockets.js +++ b/src/sockets.js @@ -3,9 +3,11 @@ const logger = require("winston"); module.exports = ( + /** @type {import('socket.io').Server} */ io, lnd, ) => { + const Mediator = require("../services/gunDB/Mediator/index.js"); const EventEmitter = require("events"); @@ -42,25 +44,49 @@ module.exports = ( io.on("connection", socket => { logger.info(`io.onconnection`) - // this is where we create the websocket connection - // with the GunDB service. - Mediator.createMediator(socket); - - logger.info(`socket after createmediator`) - logger.info("socket.handshake", socket.handshake); /** printing out the client who joined */ logger.info("New socket client connected (id=" + socket.id + ")."); - registerSocketListeners(socket); + const isOneTimeUseSocket = !!socket.handshake.query.IS_GUN_AUTH - /** listening if client has disconnected */ - socket.on("disconnect", () => { - unregisterSocketListeners(socket); - logger.info("client disconnected (id=" + socket.id + ")."); - }); - }); + if (isOneTimeUseSocket) { + logger.info('New socket is one time use') + socket.on('IS_GUN_AUTH', () => { + try { + const isGunAuth = Mediator.isAuthenticated() + socket.emit('IS_GUN_AUTH', { + ok: true, + msg: { + isGunAuth + }, + origBody: {} + }) + socket.disconnect() + } catch (err) { + socket.emit('IS_GUN_AUTH', { + ok: false, + msg: err.message, + origBody: {} + }) + socket.disconnect() + } + }) + } else { + logger.info('New socket is NOT one time use') + // this is where we create the websocket connection + // with the GunDB service. + Mediator.createMediator(socket); + registerSocketListeners(socket); + + /** listening if client has disconnected */ + socket.on("disconnect", () => { + unregisterSocketListeners(socket); + logger.info("client disconnected (id=" + socket.id + ")."); + }); + } + }) return mySocketsEvents; };