Agent binaries will be taking from meshcentral-data/agents if present, #3482

Ylian Saint-Hilaire committed Jan 19, 2022 at 10:59 UTC 9787aa758bc29e70a313941fc742f55bd2c0bb27
1 file changed +12 -1
meshcentral.js
+12 -1
@@ -1550,7 +1550,10 @@ function CreateMeshCentralServer(config, args) {
1550
1551 // Load MeshAgent translation strings
1552 try {
1553 - var translations = JSON.parse(obj.fs.readFileSync(obj.path.join(__dirname, 'agents', 'agent-translations.json')).toString());
1553 + var translationpath = obj.path.join(__dirname, 'agents', 'agent-translations.json');
1554 + var translationpath2 = obj.path.join(obj.datapath, 'agents', 'agent-translations.json');
1555 + if (obj.fs.existsSync(translationpath2)) { translationpath = translationpath2; } // If the agent is present in "meshcentral-data/agents", use that one instead.
1556 + var translations = JSON.parse(obj.fs.readFileSync(translationpath).toString());
1557 if (translations['zh-chs']) { translations['zh-hans'] = translations['zh-chs']; delete translations['zh-chs']; }
1558 if (translations['zh-cht']) { translations['zh-hant'] = translations['zh-cht']; delete translations['zh-cht']; }
1559 obj.agentTranslations = JSON.stringify(translations);
@@ -2628,6 +2631,9 @@ function CreateMeshCentralServer(config, args) {
2631 for (var toolname in meshToolsList) {
2632 if (meshToolsList[toolname].winhash === true) {
2633 var toolpath = obj.path.join(__dirname, 'agents', meshToolsList[toolname].localname);
2634 + var toolpath2 = obj.path.join(obj.datapath, 'agents', meshToolsList[toolname].localname);
2635 + if (obj.fs.existsSync(toolpath2)) { toolpath = toolpath2; } // If the tool is present in "meshcentral-data/agents", use that one instead.
2636 +
2637 var hashStream = obj.crypto.createHash('sha384');
2638 hashStream.toolname = toolname;
2639 hashStream.toolpath = toolpath;
@@ -2644,6 +2650,9 @@ function CreateMeshCentralServer(config, args) {
2650 obj.exeHandler.hashExecutableFile(options);
2651 } else {
2652 var toolpath = obj.path.join(__dirname, 'agents', meshToolsList[toolname].localname);
2653 + var toolpath2 = obj.path.join(obj.datapath, 'agents', meshToolsList[toolname].localname);
2654 + if (obj.fs.existsSync(toolpath2)) { toolpath = toolpath2; } // If the tool is present in "meshcentral-data/agents", use that one instead.
2655 +
2656 var stream = null;
2657 try {
2658 stream = obj.fs.createReadStream(toolpath);
@@ -2772,6 +2781,8 @@ function CreateMeshCentralServer(config, args) {
2781 var archcount = 0;
2782 for (var archid in obj.meshAgentsArchitectureNumbers) {
2783 var agentpath = obj.path.join(__dirname, 'agents', obj.meshAgentsArchitectureNumbers[archid].localname);
2784 + var agentpath2 = obj.path.join(obj.datapath, 'agents', obj.meshAgentsArchitectureNumbers[archid].localname);
2785 + if (obj.fs.existsSync(agentpath2)) { agentpath = agentpath2; } // If the agent is present in "meshcentral-data/agents", use that one instead.
2786
2787 // Fetch all the agent binary information
2788 var stats = null;