From 74fccfb0238abf7037e8dc8acc60845eee05726c Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 6 Nov 2021 11:49:51 +0100 Subject: [PATCH] Checking Max Amount of configured connections --- Environment.js | 1 + .../Network/NT/Modules/WebSocketsInterface.js | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/Environment.js b/Environment.js index f6e60b177..bb00891ce 100644 --- a/Environment.js +++ b/Environment.js @@ -32,6 +32,7 @@ exports.newEnvironment = function () { SERVER_APP_SIGNING_ACCOUNT: 'Social-Trading-Server-App-1', PLATFORM_APP_SIGNING_ACCOUNT: 'Algo-Traders-Platform-1', P2P_NETWORK_NODE_SIGNING_ACCOUNT: 'P2P-Network-Node-1', + P2P_NETWORK_NODE_MAX_INCOMING_CLIENTS: 20, P2P_NETWORK_NODE_MAX_INCOMING_PEERS: 2, P2P_NETWORK_NODE_MAX_OUTGOING_PEERS: 2 } diff --git a/Projects/Network/NT/Modules/WebSocketsInterface.js b/Projects/Network/NT/Modules/WebSocketsInterface.js index 7374e869e..16c2593e6 100644 --- a/Projects/Network/NT/Modules/WebSocketsInterface.js +++ b/Projects/Network/NT/Modules/WebSocketsInterface.js @@ -86,6 +86,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'messageHeader Not Coorrect JSON Format.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -97,6 +98,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'messageType Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } @@ -114,6 +116,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock } response.messageId = messageHeader.messageId caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } @@ -144,6 +147,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'messageType Not Supported.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() break } } @@ -170,6 +174,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'step Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } if (messageHeader.step !== 'One' && messageHeader.step !== 'Two') { @@ -178,6 +183,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'step Not Supported.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } switch (messageHeader.step) { @@ -200,6 +206,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerRole Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } @@ -209,11 +216,41 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerRole Not Supported.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } caller.role = messageHeader.callerRole /* + We will check that we have not exeeded the max amount of callers. + */ + switch (caller.role) { + case 'Network Client': { + if (thisObject.networkClients.length >= global.env.P2P_NETWORK_NODE_MAX_INCOMING_CLIENTS) { + let response = { + result: 'Error', + message: 'P2P_NETWORK_NODE_MAX_INCOMING_CLIENTS reached.' + } + caller.socket.send(JSON.stringify(response)) + caller.socket.close() + return + } + break + } + case 'Network Peer': { + if (thisObject.networkPeers.length >= global.env.P2P_NETWORK_NODE_MAX_INCOMING_PEERS) { + let response = { + result: 'Error', + message: 'P2P_NETWORK_NODE_MAX_INCOMING_PEERS reached.' + } + caller.socket.send(JSON.stringify(response)) + caller.socket.close() + return + } + break + } + } + /* The caller needs to provide it's User Profile Handle. */ if (messageHeader.callerProfileHandle === undefined) { @@ -222,6 +259,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerProfileHandle Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } @@ -235,6 +273,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerTimestamp Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -246,6 +285,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerTimestamp Too Old.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -278,6 +318,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'Handshake Step One Not Completed.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -289,6 +330,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'signature Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } @@ -301,6 +343,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'Bad Signature.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -314,6 +357,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'userProfile Not Found.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } let signedMessage = JSON.parse(signature.message) @@ -329,6 +373,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'signature.message Hashed Does Not Match signature.messageHash.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -341,6 +386,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerProfileHandle Does Not Match witnessUserProfile.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -353,6 +399,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'calledProfileHandle Does Not Match This Network Node Handle.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -364,6 +411,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'calledTimestamp Does Not Match calledTimestamp On Record.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /*