Server optimizations.

This commit is contained in:
Ylian Saint-Hilaire 2019-03-07 22:47:27 -08:00
parent ff663b630d
commit eb3977ee72
6 changed files with 280 additions and 2139760 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1377,7 +1377,7 @@ function CreateMeshCentralServer(config, args) {
obj.meshAgentBinaries[archid].path = agentpath; obj.meshAgentBinaries[archid].path = agentpath;
obj.meshAgentBinaries[archid].url = ((obj.args.notls == true) ? 'http://' : 'https://') + obj.certificates.CommonName + ':' + obj.args.port + '/meshagents?id=' + archid; obj.meshAgentBinaries[archid].url = ((obj.args.notls == true) ? 'http://' : 'https://') + obj.certificates.CommonName + ':' + obj.args.port + '/meshagents?id=' + archid;
obj.meshAgentBinaries[archid].size = stats.size; obj.meshAgentBinaries[archid].size = stats.size;
if (!obj.args.agentsondisk) { obj.meshAgentBinaries[archid].data = obj.fs.readFileSync(agentpath); } if (obj.args.agentsinram) { obj.meshAgentBinaries[archid].data = obj.fs.readFileSync(agentpath); }
// If this is a windows binary, pull binary information // If this is a windows binary, pull binary information
if (obj.meshAgentsArchitectureNumbers[archid].platform == 'win32') { if (obj.meshAgentsArchitectureNumbers[archid].platform == 'win32') {
try { obj.meshAgentBinaries[archid].pe = obj.exeHandler.parseWindowsExecutable(agentpath); } catch (e) { } try { obj.meshAgentBinaries[archid].pe = obj.exeHandler.parseWindowsExecutable(agentpath); } catch (e) { }
@ -1387,7 +1387,7 @@ function CreateMeshCentralServer(config, args) {
var hashStream = obj.crypto.createHash('sha384'); var hashStream = obj.crypto.createHash('sha384');
hashStream.archid = archid; hashStream.archid = archid;
hashStream.on('data', function (data) { hashStream.on('data', function (data) {
obj.meshAgentBinaries[this.archid].hash = data.toString('hex'); obj.meshAgentBinaries[this.archid].hash = data.toString('binary');
if ((--archcount == 0) && (func != null)) { func(); } if ((--archcount == 0) && (func != null)) { func(); }
}); });
var options = { sourcePath: agentpath, targetStream: hashStream, platform: obj.meshAgentsArchitectureNumbers[archid].platform }; var options = { sourcePath: agentpath, targetStream: hashStream, platform: obj.meshAgentsArchitectureNumbers[archid].platform };

View File

@ -471,7 +471,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
switch (cmd) { switch (cmd) {
case 'help': { case 'help': {
r = 'Available commands: help, info, versions, args, resetserver, showconfig, usersessions, tasklimiter, setmaxtasks, cores,\r\n' r = 'Available commands: help, info, versions, args, resetserver, showconfig, usersessions, tasklimiter, setmaxtasks, cores,\r\n'
r += 'migrationagents, swarmstats, nodeconfig.'; r += 'migrationagents, swarmstats, nodeconfig, heapdump.';
break; break;
} }
case 'info': { case 'info': {
@ -562,7 +562,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
} else { } else {
for (var i in obj.parent.parent.swarmserver.migrationAgents) { for (var i in obj.parent.parent.swarmserver.migrationAgents) {
var arch = obj.parent.parent.swarmserver.migrationAgents[i]; var arch = obj.parent.parent.swarmserver.migrationAgents[i];
for (var j in arch) { var agent = arch[j]; r += 'Arch ' + agent.arch + ', Ver ' + agent.ver + ', Size ' + agent.binary.length + '<br />'; } for (var j in arch) { var agent = arch[j]; r += 'Arch ' + agent.arch + ', Ver ' + agent.ver + ', Size ' + ((agent.binary == null) ? 0 : agent.binary.length) + '<br />'; }
} }
} }
break; break;

View File

@ -1,6 +1,6 @@
{ {
"name": "meshcentral", "name": "meshcentral",
"version": "0.2.9-r", "version": "0.2.9-w",
"keywords": [ "keywords": [
"Remote Management", "Remote Management",
"Intel AMT", "Intel AMT",
@ -35,15 +35,12 @@
"express": "^4.16.4", "express": "^4.16.4",
"express-handlebars": "^3.0.0", "express-handlebars": "^3.0.0",
"express-ws": "^4.0.0", "express-ws": "^4.0.0",
"heapdump": "^0.3.12",
"ipcheck": "^0.1.0", "ipcheck": "^0.1.0",
"meshcentral": "*", "meshcentral": "*",
"minimist": "^1.2.0", "minimist": "^1.2.0",
"mongojs": "^2.6.0",
"multiparty": "^4.2.1", "multiparty": "^4.2.1",
"nedb": "^1.8.0", "nedb": "^1.8.0",
"node-forge": "^0.7.6", "node-forge": "^0.7.6",
"node-windows": "^0.1.14",
"otplib": "^10.0.1", "otplib": "^10.0.1",
"util.promisify": "^1.0.0", "util.promisify": "^1.0.0",
"ws": "^6.1.2", "ws": "^6.1.2",

View File

@ -138,9 +138,8 @@ module.exports.CreateSwarmServer = function (parent, db, args, certificates) {
var agentInfo = migrationAgentsDir[i].substring(10).split('.'); var agentInfo = migrationAgentsDir[i].substring(10).split('.');
var agentVersion = parseInt(agentInfo[0]); var agentVersion = parseInt(agentInfo[0]);
var agentArch = parseInt(agentInfo[1]); var agentArch = parseInt(agentInfo[1]);
var agentBinary = obj.parent.fs.readFileSync(migrationAgentName);
if (obj.migrationAgents[agentArch] == null) { obj.migrationAgents[agentArch] = {}; } if (obj.migrationAgents[agentArch] == null) { obj.migrationAgents[agentArch] = {}; }
if (obj.migrationAgents[agentArch][agentVersion] == null) { obj.migrationAgents[agentArch][agentVersion] = { arch: agentArch, ver: agentVersion, path: migrationAgentName, binary: agentBinary }; } if (obj.migrationAgents[agentArch][agentVersion] == null) { obj.migrationAgents[agentArch][agentVersion] = { arch: agentArch, ver: agentVersion, path: migrationAgentName }; }
} }
} }
} }
@ -270,6 +269,7 @@ module.exports.CreateSwarmServer = function (parent, db, args, certificates) {
case 6: { // Ask for agent block case 6: { // Ask for agent block
if (socket.tag.update != null) { if (socket.tag.update != null) {
// Send an agent block // Send an agent block
if (socket.tag.update.binary == null) { socket.tag.update.binary = obj.parent.fs.readFileSync(socket.tag.update.path); }
var l = Math.min(socket.tag.update.binary.length - socket.tag.updatePtr, 16384); var l = Math.min(socket.tag.update.binary.length - socket.tag.updatePtr, 16384);
obj.SendCommand(socket, LegacyMeshProtocol.GETSTATE, common.IntToStr(6) + common.IntToStr(socket.tag.updatePtr) + socket.tag.update.binary.toString('binary', socket.tag.updatePtr, socket.tag.updatePtr + l)); // agent.SendQuery(6, AgentFileLen + AgentBlock); obj.SendCommand(socket, LegacyMeshProtocol.GETSTATE, common.IntToStr(6) + common.IntToStr(socket.tag.updatePtr) + socket.tag.update.binary.toString('binary', socket.tag.updatePtr, socket.tag.updatePtr + l)); // agent.SendQuery(6, AgentFileLen + AgentBlock);
Debug(3, 'Swarm:Sending agent block, ptr = ' + socket.tag.updatePtr + ', len = ' + l); Debug(3, 'Swarm:Sending agent block, ptr = ' + socket.tag.updatePtr + ', len = ' + l);