Fixed server update on windows.
Ylian Saint-Hilaire committed
Jul 17, 2019 at 13:07 UTC
7fec856c9d62fe6ec250741ed19b91f38e23a922
2 files changed
+38
-3
meshcentral.js
+37
-2
@@ -136,7 +136,23 @@ function CreateMeshCentralServer(config, args) {
136
var svc = new obj.service({ name: 'MeshCentral', description: 'MeshCentral Remote Management Server', script: obj.path.join(__dirname, 'winservice.js'), env: env, wait: 2, grow: 0.5 });
137
svc.on('install', function () { console.log('MeshCentral service installed.'); svc.start(); });
138
svc.on('uninstall', function () { console.log('MeshCentral service uninstalled.'); process.exit(); });
139
- svc.on('start', function () { console.log('MeshCentral service started.'); process.exit(); });
139
+ svc.on('start', function () {
140
+ console.log('MeshCentral service started.');
141
+ // Attempt to copy the demon folder to "meshcentral-data\win-deamon".
142
+ try {
143
+ var sourceDaemonFolder = obj.path.join(__dirname, 'daemon');
144
+ var targetDaemonFolder = obj.path.join(obj.datapath, 'win-deamon');
145
+ if (!obj.fs.existsSync(targetDaemonFolder)) { obj.fs.mkdirSync(targetDaemonFolder); }
146
+ var files = obj.fs.readdirSync(sourceDaemonFolder);
147
+ for (var i in files) {
148
+ if (files[i].endsWith('.log') == false) {
149
+ var bin = obj.fs.readFileSync(obj.path.join(sourceDaemonFolder, files[i]), 'binary');
150
+ obj.fs.writeFileSync(obj.path.join(targetDaemonFolder, files[i]), bin, 'binary');
151
+ }
152
+ }
153
+ } catch (e) { console.error(e); }
154
+ process.exit();
155
+ });
156
svc.on('stop', function () { console.log('MeshCentral service stopped.'); if (obj.args.stop) { process.exit(); } if (obj.args.restart) { console.log('Holding 5 seconds...'); setTimeout(function () { svc.start(); }, 5000); } });
157
svc.on('alreadyinstalled', function () { console.log('MeshCentral service already installed.'); process.exit(); });
158
svc.on('invalidinstallation', function () { console.log('Invalid MeshCentral service installation.'); process.exit(); });
@@ -184,7 +200,26 @@ function CreateMeshCentralServer(config, args) {
200
xxprocess.data = '';
201
xxprocess.stdout.on('data', function (data) { xxprocess.data += data; });
202
xxprocess.stderr.on('data', function (data) { xxprocess.data += data; });
187
- xxprocess.on('close', function (code) { console.log('Update completed...'); setTimeout(function () { obj.launchChildServer(startLine); }, 1000); });
203
+ xxprocess.on('close', function (code) {
204
+ console.log('Update completed...');
205
+ if (require('os').platform() == 'win32') {
206
+ // On Windows, attempt to copy "meshcentral-data\win-deamon" folder back into "deamon".
207
+ // This folder will have been removed after update and needs to be added back.
208
+ try {
209
+ var sourceDaemonFolder = obj.path.join(obj.datapath, 'win-deamon');
210
+ var targetDaemonFolder = obj.path.join(__dirname, 'daemon');
211
+ if (!obj.fs.existsSync(targetDaemonFolder)) { obj.fs.mkdirSync(targetDaemonFolder); }
212
+ var files = obj.fs.readdirSync(sourceDaemonFolder);
213
+ for (var i in files) {
214
+ if (files[i].endsWith('.log') == false) {
215
+ var bin = obj.fs.readFileSync(obj.path.join(sourceDaemonFolder, files[i]), 'binary');
216
+ obj.fs.writeFileSync(obj.path.join(targetDaemonFolder, files[i]), bin, 'binary');
217
+ }
218
+ }
219
+ } catch (e) { console.error(e); }
220
+ }
221
+ setTimeout(function () { obj.launchChildServer(startLine); }, 1000);
222
+ });
223
} else {
224
if (error != null) {
225
// This is an un-expected restart
package.json
+1
-1
@@ -1,6 +1,6 @@
1
{
2
"name": "meshcentral",
3
- "version": "0.3.7-w",
3
+ "version": "0.3.7-x",
4
"keywords": [
5
"Remote Management",
6
"Intel AMT",