From 0b38049015001512b689f9f742c2d09064fcb87e Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 28 Oct 2021 23:00:42 -0700 Subject: [PATCH] Added option to auto-clean NPM cache on update. #3225 --- agents/MeshCentralRouterCmd.exe | Bin 0 -> 69784 bytes meshcentral-config-schema.json | 1 + meshcentral.js | 10 +++++++++- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 agents/MeshCentralRouterCmd.exe diff --git a/agents/MeshCentralRouterCmd.exe b/agents/MeshCentralRouterCmd.exe new file mode 100644 index 0000000000000000000000000000000000000000..067a8ad4c3454151f94e83849282bb36090629bb GIT binary patch literal 69784 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

;&&=g5~KH1DcEku)ybColcMyy*)m-gTdpJ7 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 b<3}Yt^ZPxCKkfAELq#|Inp~EuW?}t5B8<=& literal 0 HcmV?d00001 diff --git a/meshcentral-config-schema.json b/meshcentral-config-schema.json index a088edbe..f60f90c7 100644 --- a/meshcentral-config-schema.json +++ b/meshcentral-config-schema.json @@ -97,6 +97,7 @@ "webRTC": { "type": "boolean", "default": false, "description": "When enabled, allows use of WebRTC to allow direct network traffic between the agent and browser." }, "nice404": { "type": "boolean", "default": true, "description": "By default, a nice looking 404 error page is displayed when needed. Set this to false to disable it." }, "selfUpdate": { "type": "boolean", "default": false, "description": "When true, this server will attempt to self-update everyday after midnight." }, + "cleanNpmCacheOnUpdate": { "type": "boolean", "default": false, "description": "When true, run \"npm cache clean --force\" to reclame disk space." }, "browserPing": { "type": "integer", "minimum": 1, "description": "When specified, sends data to the browser at x seconds interval and expects a response from the browser." }, "browserPong": { "type": "integer", "minimum": 1, "description": "When specified, sends data to the browser at x seconds interval." }, "agentsInRam": { "type": "boolean", "default": false, "description": "Loads all agent binaries in RAM for faster agent updates." }, diff --git a/meshcentral.js b/meshcentral.js index c8c99174..2ae7524a 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -467,7 +467,15 @@ function CreateMeshCentralServer(config, args) { xxprocess.stderr.on('data', function (data) { xxprocess.data += data; }); xxprocess.on('close', function (code) { if (code == 0) { console.log('Update completed...'); } - setTimeout(function () { obj.launchChildServer(startArgs); }, 1000); + if (obj.args.cleannpmcacheonupdate === true) { + // Perform NPM cache clean + console.log('Cleaning NPM cache...'); + var xxxprocess = child_process.exec(npmpath + ' cache clean --force', { maxBuffer: Infinity, cwd: obj.parentpath, env: env }, function (error, stdout, stderr) { }); + xxxprocess.on('close', function (code) { setTimeout(function () { obj.launchChildServer(startArgs); }, 1000); }); + } else { + // Run the updated server + setTimeout(function () { obj.launchChildServer(startArgs); }, 1000); + } }); } else { if (error != null) {