diff --git a/meshuser.js b/meshuser.js index bd7e2eba..c73d906a 100644 --- a/meshuser.js +++ b/meshuser.js @@ -5448,6 +5448,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use 'dbcounters': [serverUserCommandDbCounters, ""], 'dbstats': [serverUserCommandDbStats, ""], 'dispatchtable': [serverUserCommandDispatchTable, ""], + 'dropallcira': [serverUserCommandDropAllCira, ""], 'dupagents': [serverUserCommandDupAgents, ""], 'email': [serverUserCommandEmail, ""], 'firebase': [serverUserCommandFirebase, ""], @@ -5854,6 +5855,12 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use } } + function serverUserCommandDropAllCira(cmdData) { + if (parent.parent.mpsserver == null) { cmdData.result = 'MPS not setup.'; return; } + const dropCount = parent.parent.mpsserver.dropAllConnections(); + cmdData.result = 'Dropped ' + dropCount + ' connection(s).'; + } + function serverUserCommandDupAgents(cmdData) { for (var i in parent.duplicateAgentsLog) { cmdData.result += JSON.stringify(parent.duplicateAgentsLog[i]) + '\r\n'; diff --git a/mpsserver.js b/mpsserver.js index ae990cbf..15e17fca 100644 --- a/mpsserver.js +++ b/mpsserver.js @@ -1325,6 +1325,16 @@ module.exports.CreateMpsServer = function (parent, db, args, certificates) { for (var i in obj.httpResponses) { if ((obj.httpResponses[i].maxtime != null) && (obj.httpResponses[i].maxtime < now)) { delete obj.httpResponses[i]; } } } + // Drop all CIRA connections + obj.dropAllConnections = function () { + var dropCount = 0; + for (var nodeid in obj.ciraConnections) { + const connections = obj.ciraConnections[nodeid]; + for (var i in connections) { if (connections[i].end) { connections[i].end(); dropCount++; } } // This will drop all TCP CIRA connections + } + return dropCount; + } + function guidToStr(g) { return g.substring(6, 8) + g.substring(4, 6) + g.substring(2, 4) + g.substring(0, 2) + "-" + g.substring(10, 12) + g.substring(8, 10) + "-" + g.substring(14, 16) + g.substring(12, 14) + "-" + g.substring(16, 20) + "-" + g.substring(20); } // Clean a IPv6 address that encodes a IPv4 address