Added support for compressed MeshCore.js
Ylian Saint-Hilaire committed
Jul 17, 2020 at 11:14 UTC
dc98e3f3235b1fa8a9d19f953d39b6a86ed94bf1
30 files changed
+12
-4
agents/MeshCmd-signed.exe
Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ
agents/MeshCmd64-signed.exe
Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ
agents/MeshService-signed.exe
Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ
agents/MeshService.exe
Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ
agents/MeshService64-signed.exe
Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ
agents/MeshService64.exe
Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ
agents/agents-new/MeshService.exe
Binary files /dev/null and b/agents/agents-new/MeshService.exe differ
agents/agents-new/MeshService64.exe
Binary files /dev/null and b/agents/agents-new/MeshService64.exe differ
agents/agents-old/MeshCmd-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshCmd-signed.exe differ
agents/agents-old/MeshCmd64-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshCmd64-signed.exe differ
agents/agents-old/MeshService-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshService-signed.exe differ
agents/agents-old/MeshService.exe
Binary files /dev/null and b/agents/agents-old/MeshService.exe differ
agents/agents-old/MeshService64-signed.exe
Binary files /dev/null and b/agents/agents-old/MeshService64-signed.exe differ
agents/agents-old/MeshService64.exe
Binary files /dev/null and b/agents/agents-old/MeshService64.exe differ
agents/agents-old/meshagent_arm
renamed
agents/agents-old/meshagent_arm-linaro
renamed
agents/agents-old/meshagent_arm64
renamed
agents/agents-old/meshagent_armhf
renamed
agents/agents-old/meshagent_freebsd_x86-64
renamed
agents/agents-old/meshagent_mips
renamed
agents/agents-old/meshagent_osx-x86-64
renamed
agents/agents-old/meshagent_pogo
renamed
agents/agents-old/meshagent_poky
renamed
agents/agents-old/meshagent_poky64
renamed
agents/agents-old/meshagent_x86
renamed
agents/agents-old/meshagent_x86-64
renamed
agents/agents-old/meshagent_x86-64_nokvm
renamed
agents/agents-old/meshagent_x86_nokvm
renamed
meshagent.js
+6
-4
@@ -175,9 +175,11 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
175
parent.agentStats.clearingCoreCount++;
176
parent.parent.debug('agent', "Clearing core");
177
} else {
178
- // Update new core
179
- //obj.sendBinary(common.ShortToStr(10) + common.ShortToStr(0) + meshcorehash + parent.parent.defaultMeshCores[corename]); // MeshCommand_CoreModule, start core update
180
- //parent.parent.debug('agent', 'Updating code ' + corename);
178
+ // Setup task limiter options, this system limits how many tasks can run at the same time to spread the server load.
179
+ var taskLimiterOptions = { hash: meshcorehash, core: parent.parent.defaultMeshCores[corename], name: corename };
180
+
181
+ // If the agent supports compression, sent the core compressed.
182
+ if ((obj.agentInfo.capabilities & 0x80) && (parent.parent.defaultMeshCoresDeflate[corename])) { args.core = parent.parent.defaultMeshCoresDeflate[corename]; }
183
184
// Update new core with task limiting so not to flood the server. This is a high priority task.
185
obj.agentCoreUpdatePending = true;
@@ -193,7 +195,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
195
// This agent is probably disconnected, nothing to do.
196
parent.parent.taskLimiter.completed(taskid);
197
}
196
- }, { hash: meshcorehash, core: parent.parent.defaultMeshCores[corename], name: corename }, 0);
198
+ }, taskLimiterOptions, 0);
199
}
200
obj.agentCoreCheck++;
201
}
meshcentral.js
+6
@@ -55,6 +55,7 @@ function CreateMeshCentralServer(config, args) {
55
obj.certificateOperations = null;
56
obj.defaultMeshCmd = null;
57
obj.defaultMeshCores = {};
58
+ obj.defaultMeshCoresDeflate = {};
59
obj.defaultMeshCoresHash = {};
60
obj.meshAgentBinaries = {}; // Mesh Agent Binaries, Architecture type --> { hash:(sha384 hash), size:(binary size), path:(binary path) }
61
obj.meshAgentInstallScripts = {}; // Mesh Install Scripts, Script ID -- { hash:(sha384 hash), size:(binary size), path:(binary path) }
@@ -1992,6 +1993,11 @@ function CreateMeshCentralServer(config, args) {
1993
obj.debug('main', 'Core module ' + i + ' is ' + obj.defaultMeshCores[i].length + ' bytes.');
1994
//console.log('Core module ' + i + ' is ' + obj.defaultMeshCores[i].length + ' bytes.'); // DEBUG, Print the core size
1995
//obj.fs.writeFile("C:\\temp\\" + i + ".js", obj.defaultMeshCores[i].substring(4)); // DEBUG, Write the core to file
1996
+
1997
+ // Compress the mesh cores with DEFLATE
1998
+ var callback = function MeshCoreDeflateCb(err, buffer) { if (err == null) { obj.defaultMeshCoresDeflate[MeshCoreDeflateCb.i] = buffer; } }
1999
+ callback.i = i;
2000
+ require('zlib').deflate(obj.defaultMeshCores[i], { level: require('zlib').Z_BEST_COMPRESSION }, callback);
2001
}
2002
}
2003