Clean meshuser merge
Noah Zalev committed
Jul 8, 2021 at 10:21 UTC
b05f65d819352b1487cf19655e85ba670476534e
1 file changed
+239
-278
meshuser.js
+239
-278
@@ -1510,15 +1510,15 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1510
if (cmdargs.length == 0) break;
1511
const cmd = cmdargs[0].toLowerCase();
1512
cmdargs = parseArgs(cmdargs);
1513
+ var cmdData = { result: '', command: command, cmdargs: cmdargs };
1514
1515
// Find the command in the lookup table and run it.
1515
- var cmdData = serverUserCommands[cmd], r = '';;
1516
- if (cmdData != null) {
1517
- try { r = cmdData[0](cmdargs); } catch (ex) { r = '' + ex; }
1518
- } else { r = 'Unknown command \"' + cmd + '\", type \"help\" for list of available commands.'; }
1516
+ var cmdTableEntry = serverUserCommands[cmd];
1517
+ if (cmdTableEntry != null) { try { cmdTableEntry[0](cmdData); } catch (ex) { cmdData.result = '' + ex; }
1518
+ } else { cmdData.result = 'Unknown command \"' + cmd + '\", type \"help\" for list of available commands.'; }
1519
1520
// Send back the command result
1521
- if (r != '') { try { ws.send(JSON.stringify({ action: 'serverconsole', value: r, tag: command.tag })); } catch (ex) { } }
1521
+ if (cmdData.result != '') { try { ws.send(JSON.stringify({ action: 'serverconsole', value: cmdData.result, tag: command.tag })); } catch (ex) { } }
1522
break;
1523
}
1524
case 'msg':
@@ -6179,7 +6179,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
6179
'showpaths': [serverUserCommandShowPaths, ""],
6180
'sms': [serverUserCommandSMS, ""],
6181
'swarmstats': [serverUserCommandSwarmStats, ""],
6182
- 'tasklimiter': [serverUserCommandTaslkLimiter, "Returns the internal status of the tasklimiter. This is a system used to smooth out work done by the server. It's used by, for example, agent updates so that not all agents are updated at the same time."],
6182
+ 'tasklimiter': [serverUserCommandTaskLimiter, "Returns the internal status of the tasklimiter. This is a system used to smooth out work done by the server. It's used by, for example, agent updates so that not all agents are updated at the same time."],
6183
'trafficdelta': [serverUserCommandTrafficDelta, ""],
6184
'trafficstats': [serverUserCommandTrafficStats, ""],
6185
'updatecheck': [serverUserCommandUpdateCheck, ""],
@@ -6190,99 +6190,101 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
6190
'webstats': [serverUserCommandWebStats, ""]
6191
}
6192
6193
- function serverUserCommandHelp(cmdargs) {
6194
- var r, fin = '', f = '', availcommands = [];
6193
+
6194
+ function serverUserCommandHelp(cmdData) {
6195
+ var fin = '', f = '', availcommands = [];
6196
for (var i in serverUserCommands) { availcommands.push(i); }
6197
availcommands = availcommands.sort();
6198
while (availcommands.length > 0) { if (f.length > 80) { fin += (f + ',\r\n'); f = ''; } f += (((f != '') ? ', ' : ' ') + availcommands.shift()); }
6199
if (f != '') { fin += f; }
6199
- if (cmdargs['_'].length == 0) {
6200
- r = 'Available commands: \r\n' + fin + '\r\nType help <command> for details.';
6200
+
6201
+ if (cmdData.cmdargs['_'].length == 0) {
6202
+ cmdData.result = 'Available commands: \r\n' + fin + '\r\nType help <command> for details.';
6203
} else {
6202
- var cmd2 = cmdargs['_'][0].toLowerCase();
6203
- var cmddata = serverUserCommands[cmd2];
6204
- if (cmddata) { if (cmddata[1] == '') { r = "No help available for this command."; } else { r = cmddata[1]; } } else { r = "This command does not exist."; }
6204
+ var cmd2 = cmdData.cmdargs['_'][0].toLowerCase();
6205
+ var cmdTableEntry = serverUserCommands[cmd2];
6206
+ if (cmdTableEntry) {
6207
+ if (cmdTableEntry[1] == '') {
6208
+ cmdData.result = 'No help available for this command.'
6209
+ } else {
6210
+ cmdData.result = cmdTableEntry[1]; }
6211
+ } else {
6212
+ cmdData.result = "This command does not exist.";
6213
+ }
6214
}
6206
- return r;
6215
}
6216
6209
- function serverUserCommandCertExpire(cmdargs) {
6210
- var r = '';
6217
+ function serverUserCommandCertExpire(cmdData) {
6218
const now = Date.now();
6219
for (var i in parent.webCertificateExpire) {
6220
const domainName = (i == '') ? '[Default]' : i;
6214
- r += domainName + ', expires in ' + Math.floor((parent.webCertificateExpire[i] - now) / 86400000) + ' day(s)\r\n';
6221
+ cmdData.result += domainName + ', expires in ' + Math.floor((parent.webCertificateExpire[i] - now) / 86400000) + ' day(s)\r\n';
6222
}
6216
- return r;
6223
}
6224
6219
- function serverUserCommandWebPush(cmdargs) {
6225
+ function serverUserCommandWebPush(cmdData) {
6226
if (parent.parent.webpush == null) {
6221
- r = "Web push not supported.";
6227
+ cmdData.result = "Web push not supported.";
6228
} else {
6223
- if (cmdargs['_'].length != 1) {
6224
- r = "Usage: WebPush \"Message\"";
6229
+ if (cmdData.cmdargs['_'].length != 1) {
6230
+ cmdData.result = "Usage: WebPush \"Message\"";
6231
} else {
6232
const pushSubscription = { "endpoint": "https://updates.push.services.mozilla.com/wpush/v2/gAAAAABgIkO9hjXHWhMPiuk-ppNRw7r_pUZitddwCEK4ykdzeIxOIjFnYhIt_nr-qUca2mpZziwQsSEhYTUCiuYrhWnVDRweMtiUj16yJJq8V5jneaEaUYjEIe5jp3DOMNpoTm1aHgX74gCR8uTXSITcM97bNi-hRxcQ4f6Ie4WSAmoXpd89B_g", "keys": { "auth": "UB2sbLVK7ALnSHw5P1dahg", "p256dh": "BIoRbcNSxBuTjN39CCCUCHo1f4NxBJ1YDdu_k4MbPW_q3NK1_RufnydUzLPDp8ibBVItSI72-s48QJvOjQ_S8Ok" } }
6227
- parent.parent.webpush.sendNotification(pushSubscription, cmdargs['_'][0]).then(
6228
- function (value) { try { ws.send(JSON.stringify({ action: 'OK', value: r, tag: command.tag })); } catch (ex) { } },
6229
- function (error) { try { ws.send(JSON.stringify({ action: 'Error', value: r, tag: command.tag })); } catch (ex) { } }
6233
+ parent.parent.webpush.sendNotification(pushSubscription, cmdData.cmdargs['_'][0]).then(
6234
+ function (value) { try { ws.send(JSON.stringify({ action: 'OK', value: cmdData.result, tag: cmdData.command.tag })); } catch (ex) { } },
6235
+ function (error) { try { ws.send(JSON.stringify({ action: 'Error', value: cmdData.result, tag: cmdData.command.tag })); } catch (ex) { } }
6236
);
6237
}
6238
}
6233
- return r;
6239
}
6240
6236
- function serverUserCommandAmtManager(cmdargs) {
6237
- if (parent.parent.amtManager == null) { return 'Intel AMT Manager not active.'; }
6238
- return parent.parent.amtManager.getStatusString();
6241
+ function serverUserCommandAmtManager(cmdData) {
6242
+ if (parent.parent.amtManager == null) {
6243
+ cmdData.result = 'Intel AMT Manager not active.';
6244
+ } else {
6245
+ cmdData.result = parent.parent.amtManager.getStatusString();
6246
+ }
6247
}
6248
6241
- function serverUserCommandCertHashes(cmdargs) {
6242
- var r = 'AgentCertHash: ' + parent.agentCertificateHashHex;
6243
- for (var i in parent.webCertificateHashs) { r += '\r\nwebCertificateHash (' + i + '): ' + common.rstr2hex(parent.webCertificateHashs[i]); }
6244
- for (var i in parent.webCertificateFullHashs) { r += '\r\nwebCertificateFullHash (' + i + '): ' + common.rstr2hex(parent.webCertificateFullHashs[i]); }
6245
- r += '\r\ndefaultWebCertificateHash: ' + common.rstr2hex(parent.defaultWebCertificateHash);
6246
- r += '\r\ndefaultWebCertificateFullHash: ' + common.rstr2hex(parent.defaultWebCertificateFullHash);
6247
- return r;
6249
+ function serverUserCommandCertHashes(cmdData) {
6250
+ cmdData.result += 'AgentCertHash: ' + parent.agentCertificateHashHex;
6251
+ for (var i in parent.webCertificateHashs) { cmdData.result += '\r\nwebCertificateHash (' + i + '): ' + common.rstr2hex(parent.webCertificateHashs[i]); }
6252
+ for (var i in parent.webCertificateFullHashs) { cmdData.result += '\r\nwebCertificateFullHash (' + i + '): ' + common.rstr2hex(parent.webCertificateFullHashs[i]); }
6253
+ cmdData.result += '\r\ndefaultWebCertificateHash: ' + common.rstr2hex(parent.defaultWebCertificateHash);
6254
+ cmdData.result += '\r\ndefaultWebCertificateFullHash: ' + common.rstr2hex(parent.defaultWebCertificateFullHash);
6255
}
6256
6250
- function serverUserCommandAmtAcm(cmdargs) {
6251
- var r = '';
6257
+ function serverUserCommandAmtAcm(cmdData) {
6258
if ((domain.amtacmactivation == null) || (domain.amtacmactivation.acmmatch == null) || (domain.amtacmactivation.acmmatch.length == 0)) {
6253
- r = 'No Intel AMT activation certificates.';
6259
+ cmdData.result = 'No Intel AMT activation certificates.';
6260
} else {
6255
- if (domain.amtacmactivation.log != null) { r += '--- Activation Log ---\r\nFile : ' + domain.amtacmactivation.log + '\r\n'; }
6261
+ if (domain.amtacmactivation.log != null) { cmdData.result += '--- Activation Log ---\r\nFile : ' + domain.amtacmactivation.log + '\r\n'; }
6262
for (var i in domain.amtacmactivation.acmmatch) {
6263
var acmcert = domain.amtacmactivation.acmmatch[i];
6258
- r += '--- Activation Certificate ' + (parseInt(i) + 1) + ' ---\r\nName : ' + acmcert.cn + '\r\nSHA1 : ' + acmcert.sha1 + '\r\nSHA256: ' + acmcert.sha256 + '\r\n';
6264
+ cmdData.result += '--- Activation Certificate ' + (parseInt(i) + 1) + ' ---\r\nName : ' + acmcert.cn + '\r\nSHA1 : ' + acmcert.sha1 + '\r\nSHA256: ' + acmcert.sha256 + '\r\n';
6265
}
6266
}
6261
- return r;
6267
}
6268
6264
- function serverUserCommandHeapDump(cmdargs) {
6265
- var r = '';
6269
+ function serverUserCommandHeapDump(cmdData) {
6270
// Heapdump support, see example at:
6271
// https://www.arbazsiddiqui.me/a-practical-guide-to-memory-leaks-in-nodejs/
6272
if (parent.parent.config.settings.heapdump === true) {
6273
var dumpFileName = parent.path.join(parent.parent.datapath, `heapDump-${Date.now()}.heapsnapshot`);
6270
- try { ws.send(JSON.stringify({ action: 'serverconsole', value: "Generating dump file at: " + dumpFileName, tag: command.tag })); } catch (ex) { }
6274
+ try { ws.send(JSON.stringify({ action: 'serverconsole', value: "Generating dump file at: " + dumpFileName, tag: cmdData.command.tag })); } catch (ex) { }
6275
require('heapdump').writeSnapshot(dumpFileName, (err, filename) => {
6272
- try { ws.send(JSON.stringify({ action: 'serverconsole', value: "Done.", tag: command.tag })); } catch (ex) { }
6276
+ try { ws.send(JSON.stringify({ action: 'serverconsole', value: "Done.", tag: cmdData.command.tag })); } catch (ex) { }
6277
});
6278
} else {
6275
- r = "Heapdump not supported, add \"heapdump\":true to settings section of config.json.";
6279
+ cmdData.result = "Heapdump not supported, add \"heapdump\":true to settings section of config.json.";
6280
}
6277
- return r;
6281
}
6282
6280
- function serverUserCommandHeapDump2(cmdargs) {
6281
- var r = '';
6283
+ function serverUserCommandHeapDump2(cmdData) {
6284
var heapdump = null;
6285
try { heapdump = require('heapdump'); } catch (ex) { }
6286
if (heapdump == null) {
6285
- r = 'Heapdump module not installed, run "npm install heapdump".';
6287
+ cmdData.result = 'Heapdump module not installed, run "npm install heapdump".';
6288
} else {
6289
heapdump.writeSnapshot(function (err, filename) {
6290
if (err != null) {
@@ -6292,224 +6294,212 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
6294
}
6295
});
6296
}
6295
- break;
6297
}
6298
6298
- function serverUserCommandSMS(cmdargs) {
6299
- var r = '';
6299
+ function serverUserCommandSMS(cmdData) {
6300
if (parent.parent.smsserver == null) {
6301
- r = "No SMS gateway in use.";
6301
+ cmdData.result = "No SMS gateway in use.";
6302
} else {
6303
- if (cmdargs['_'].length != 2) {
6304
- r = "Usage: SMS \"PhoneNumber\" \"Message\".";
6303
+ if (cmdData.cmdargs['_'].length != 2) {
6304
+ cmdData.result = "Usage: SMS \"PhoneNumber\" \"Message\".";
6305
} else {
6306
- parent.parent.smsserver.sendSMS(cmdargs['_'][0], cmdargs['_'][1], function (status, msg) {
6306
+ parent.parent.smsserver.sendSMS(cmdData.cmdargs['_'][0], cmdData.cmdargs['_'][1], function (status, msg) {
6307
if (typeof msg == 'string') {
6308
- try { ws.send(JSON.stringify({ action: 'serverconsole', value: status ? ('Success: ' + msg) : ('Failed: ' + msg), tag: command.tag })); } catch (ex) { }
6308
+ try { ws.send(JSON.stringify({ action: 'serverconsole', value: status ? ('Success: ' + msg) : ('Failed: ' + msg), tag: cmdData.command.tag })); } catch (ex) { }
6309
} else {
6310
- try { ws.send(JSON.stringify({ action: 'serverconsole', value: status ? 'Success' : 'Failed', tag: command.tag })); } catch (ex) { }
6310
+ try { ws.send(JSON.stringify({ action: 'serverconsole', value: status ? 'Success' : 'Failed', tag: cmdData.command.tag })); } catch (ex) { }
6311
}
6312
});
6313
}
6314
}
6315
- return r;
6315
}
6316
6318
- function serverUserCommandEmail(cmdargs) {
6319
- var r = '';
6317
+ function serverUserCommandEmail(cmdData) {
6318
if (domain.mailserver == null) {
6321
- r = "No email service enabled.";
6319
+ cmdData.result = "No email service enabled.";
6320
} else {
6323
- if (cmdargs['_'].length != 3) {
6324
- r = "Usage: email \"user@sample.com\" \"Subject\" \"Message\".";
6321
+ if (cmdData.cmdargs['_'].length != 3) {
6322
+ cmdData.result = "Usage: email \"user@sample.com\" \"Subject\" \"Message\".";
6323
} else {
6326
- domain.mailserver.sendMail(cmdargs['_'][0], cmdargs['_'][1], cmdargs['_'][2]);
6327
- r = "Done.";
6324
+ domain.mailserver.sendMail(cmdData.cmdargs['_'][0], cmdData.cmdargs['_'][1], cmdData.cmdargs['_'][2]);
6325
+ cmdData.result = "Done.";
6326
}
6327
}
6330
- return r;
6328
}
6329
6333
- function serverUserCommandLe(cmdargs) {
6334
- if (parent.parent.letsencrypt == null) { return "Let's Encrypt not in use."; }
6335
- return JSON.stringify(parent.parent.letsencrypt.getStats(), null, 4);
6330
+ function serverUserCommandLe(cmdData) {
6331
+ if (parent.parent.letsencrypt == null) {
6332
+ cmdData.result = "Let's Encrypt not in use.";
6333
+ } else {
6334
+ cmdData.result = JSON.stringify(parent.parent.letsencrypt.getStats(), null, 4);
6335
+ }
6336
}
6337
6338
- function serverUserCommandLeCheck(cmdargs) {
6339
- if (parent.parent.letsencrypt == null) { return "Let's Encrypt not in use."; }
6340
- return ["CertOK", "Request:NoCert", "Request:Expire", "Request:MissingNames"][parent.parent.letsencrypt.checkRenewCertificate()];
6338
+ function serverUserCommandLeCheck(cmdData) {
6339
+ if (parent.parent.letsencrypt == null) {
6340
+ cmdData.result = "Let's Encrypt not in use.";
6341
+ } else {
6342
+ cmdData.result = ["CertOK", "Request:NoCert", "Request:Expire", "Request:MissingNames"][parent.parent.letsencrypt.checkRkenewCertificate()];
6343
+ }
6344
}
6345
6343
- function serverUserCommandLeEvents(cmdargs) {
6344
- if (parent.parent.letsencrypt == null) { return "Let's Encrypt not in use."; }
6345
- return parent.parent.letsencrypt.events.join('\r\n');
6346
+ function serverUserCommandLeEvents(cmdData) {
6347
+ if (parent.parent.letsencrypt == null) {
6348
+ cmdData.result = "Let's Encrypt not in use.";
6349
+ } else {
6350
+ cmdData.result = parent.parent.letsencrypt.events.join('\r\n');
6351
+ }
6352
}
6353
6348
- function serverUserCommandBadLogins(cmdargs) {
6349
- var r = '';
6354
+ function serverUserCommandBadLogins(cmdData) {
6355
if (parent.parent.config.settings.maxinvalidlogin == false) {
6351
- r = 'Bad login filter is disabled.';
6356
+ cmdData.result = 'Bad login filter is disabled.';
6357
} else {
6353
- if (cmdargs['_'] == 'reset') {
6358
+ if (cmdData.cmdargs['_'] == 'reset') {
6359
// Reset bad login table
6360
parent.badLoginTable = {};
6361
parent.badLoginTableLastClean = 0;
6357
- r = 'Done.'
6358
- } else if (cmdargs['_'] == '') {
6362
+ cmdData.result = 'Done.'
6363
+ } else if (cmdData.cmdargs['_'] == '') {
6364
// Show current bad login table
6365
if (typeof parent.parent.config.settings.maxinvalidlogin.coolofftime == 'number') {
6361
- r = "Max is " + parent.parent.config.settings.maxinvalidlogin.count + " bad login(s) in " + parent.parent.config.settings.maxinvalidlogin.time + " minute(s), " + parent.parent.config.settings.maxinvalidlogin.coolofftime + " minute(s) cooloff.\r\n";
6366
+ cmdData.result = "Max is " + parent.parent.config.settings.maxinvalidlogin.count + " bad login(s) in " + parent.parent.config.settings.maxinvalidlogin.time + " minute(s), " + parent.parent.config.settings.maxinvalidlogin.coolofftime + " minute(s) cooloff.\r\n";
6367
} else {
6363
- r = "Max is " + parent.parent.config.settings.maxinvalidlogin.count + " bad login(s) in " + parent.parent.config.settings.maxinvalidlogin.time + " minute(s).\r\n";
6368
+ cmdData.result = "Max is " + parent.parent.config.settings.maxinvalidlogin.count + " bad login(s) in " + parent.parent.config.settings.maxinvalidlogin.time + " minute(s).\r\n";
6369
}
6370
var badLoginCount = 0;
6371
parent.cleanBadLoginTable();
6372
for (var i in parent.badLoginTable) {
6373
badLoginCount++;
6374
if (typeof parent.badLoginTable[i] == 'number') {
6370
- r += "Cooloff for " + Math.floor((parent.badLoginTable[i] - Date.now()) / 60000) + " minute(s)\r\n";
6375
+ cmdData.result += "Cooloff for " + Math.floor((parent.badLoginTable[i] - Date.now()) / 60000) + " minute(s)\r\n";
6376
} else {
6377
if (parent.badLoginTable[i].length > 1) {
6373
- r += (i + ' - ' + parent.badLoginTable[i].length + " records\r\n");
6378
+ cmdData.result += (i + ' - ' + parent.badLoginTable[i].length + " records\r\n");
6379
} else {
6375
- r += (i + ' - ' + parent.badLoginTable[i].length + " record\r\n");
6380
+ cmdData.result += (i + ' - ' + parent.badLoginTable[i].length + " record\r\n");
6381
}
6382
}
6383
}
6379
- if (badLoginCount == 0) { r += 'No bad logins.'; }
6384
+ if (badLoginCount == 0) { cmdData.result += 'No bad logins.'; }
6385
} else {
6381
- r = 'Usage: badlogin [reset]';
6386
+ cmdData.result = 'Usage: badlogin [reset]';
6387
}
6388
}
6384
- return r;
6389
}
6390
6387
- function serverUserCommandDispatchTable(cmdargs) {
6388
- var r = '';
6389
- for (var i in parent.parent.eventsDispatch) { r += (i + ', ' + parent.parent.eventsDispatch[i].length + '\r\n'); }
6390
- return r;
6391
+ function serverUserCommandDispatchTable(cmdData) {
6392
+ for (var i in parent.parent.eventsDispatch) {
6393
+ cmdData.result += (i + ', ' + parent.parent.eventsDispatch[i].length + '\r\n');
6394
+ }
6395
}
6396
6393
- function serverUserCommandDupAgents(cmdargs) {
6394
- var r = '';
6395
- for (var i in parent.duplicateAgentsLog) { r += JSON.stringify(parent.duplicateAgentsLog[i]) + '\r\n'; }
6396
- if (r == '') { r = 'No duplicate agents in log.'; }
6397
- return r;
6397
+ function serverUserCommandDupAgents(cmdData) {
6398
+ for (var i in parent.duplicateAgentsLog) {
6399
+ cmdData.result += JSON.stringify(parent.duplicateAgentsLog[i]) + '\r\n';
6400
+ }
6401
+ if (cmdData.result == '') { cmdData.result = 'No duplicate agents in log.'; }
6402
}
6403
6400
- function serverUserCommandAgentStats(cmdargs) {
6401
- var r = '', stats = parent.getAgentStats();
6404
+ function serverUserCommandAgentStats(cmdData) {
6405
+ var stats = parent.getAgentStats();
6406
for (var i in stats) {
6403
- if (typeof stats[i] == 'object') { r += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { r += (i + ': ' + stats[i] + '\r\n'); }
6407
+ if (typeof stats[i] == 'object') { cmdData.result += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { cmdData.result += (i + ': ' + stats[i] + '\r\n'); }
6408
}
6405
- return r;
6409
}
6410
6408
- function serverUserCommandAgentIssues(cmdargs) {
6409
- var r = '', stats = parent.getAgentIssues();
6411
+ function serverUserCommandAgentIssues(cmdData) {
6412
+ var stats = parent.getAgentIssues();
6413
if (stats.length == 0) {
6411
- r = "No agent issues.";
6414
+ cmdData.result = "No agent issues.";
6415
} else {
6413
- for (var i in stats) { r += stats[i].join(', ') + '\r\n'; }
6416
+ for (var i in stats) { cmdData.result += stats[i].join(', ') + '\r\n'; }
6417
}
6415
- return r;
6418
}
6419
6418
- function serverUserCommandWebStats(cmdargs) {
6419
- var r = '', stats = parent.getStats();
6420
+ function serverUserCommandWebStats(cmdData) {
6421
+ var stats = parent.getStats();
6422
for (var i in stats) {
6421
- if (typeof stats[i] == 'object') { r += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { r += (i + ': ' + stats[i] + '\r\n'); }
6423
+ if (typeof stats[i] == 'object') { cmdData.result += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { cmdData.result += (i + ': ' + stats[i] + '\r\n'); }
6424
}
6423
- return r;
6425
}
6426
6426
- function serverUserCommandTrafficStats(cmdargs) {
6427
- var r = '';
6427
+ function serverUserCommandTrafficStats(cmdData) {
6428
var stats = parent.getTrafficStats();
6429
for (var i in stats) {
6430
- if (typeof stats[i] == 'object') { r += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { r += (i + ': ' + stats[i] + '\r\n'); }
6430
+ if (typeof stats[i] == 'object') { cmdData.result += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { cmdData.result += (i + ': ' + stats[i] + '\r\n'); }
6431
}
6432
- return r;
6432
}
6433
6435
- function serverUserCommandTrafficDelta(cmdargs) {
6436
- var r = '';
6434
+ function serverUserCommandTrafficDelta(cmdData) {
6435
const stats = parent.getTrafficDelta(obj.trafficStats);
6436
obj.trafficStats = stats.current;
6437
for (var i in stats.delta) {
6440
- if (typeof stats.delta[i] == 'object') { r += (i + ': ' + JSON.stringify(stats.delta[i]) + '\r\n'); } else { r += (i + ': ' + stats.delta[i] + '\r\n'); }
6438
+ if (typeof stats.delta[i] == 'object') { cmdData.result += (i + ': ' + JSON.stringify(stats.delta[i]) + '\r\n'); } else { cmdData.result += (i + ': ' + stats.delta[i] + '\r\n'); }
6439
}
6442
- return r;
6440
}
6441
6445
- function serverUserCommandWatchdog(cmdargs) {
6446
- var r = '';
6442
+ function serverUserCommandWatchdog(cmdData) {
6443
if (parent.parent.watchdog == null) {
6448
- r = 'Server watchdog not active.';
6444
+ cmdData.result = 'Server watchdog not active.';
6445
} else {
6450
- r = 'Server watchdog active.\r\n';
6451
- if (parent.parent.watchdogmaxtime != null) { r += 'Largest timeout was ' + parent.parent.watchdogmax + 'ms on ' + parent.parent.watchdogmaxtime + '\r\n'; }
6452
- for (var i in parent.parent.watchdogtable) { r += parent.parent.watchdogtable[i] + '\r\n'; }
6446
+ cmdData.result = 'Server watchdog active.\r\n';
6447
+ if (parent.parent.watchdogmaxtime != null) { cmdData.result += 'Largest timeout was ' + parent.parent.watchdogmax + 'ms on ' + parent.parent.watchdogmaxtime + '\r\n'; }
6448
+ for (var i in parent.parent.watchdogtable) { cmdData.result += parent.parent.watchdogtable[i] + '\r\n'; }
6449
}
6454
- return r;
6450
}
6451
6457
- function serverUserCommandAcceleratorsStats(cmdargs) {
6458
- var r = '', stats = parent.parent.certificateOperations.getAcceleratorStats();
6452
+ function serverUserCommandAcceleratorsStats(cmdData) {
6453
+ var stats = parent.parent.certificateOperations.getAcceleratorStats();
6454
for (var i in stats) {
6460
- if (typeof stats[i] == 'object') { r += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { r += (i + ': ' + stats[i] + '\r\n'); }
6455
+ if (typeof stats[i] == 'object') { cmdData.result += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { cmdData.result += (i + ': ' + stats[i] + '\r\n'); }
6456
}
6462
- return r;
6457
}
6458
6465
- function serverUserCommandMpsStats(cmdargs) {
6466
- var r = '';
6459
+ function serverUserCommandMpsStats(cmdData) {
6460
if (parent.parent.mpsserver == null) {
6468
- r = 'MPS not enabled.';
6461
+ cmdData.result = 'MPS not enabled.';
6462
} else {
6463
var stats = parent.parent.mpsserver.getStats();
6464
for (var i in stats) {
6472
- if (typeof stats[i] == 'object') { r += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { r += (i + ': ' + stats[i] + '\r\n'); }
6465
+ if (typeof stats[i] == 'object') { cmdData.result += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { cmdData.result += (i + ': ' + stats[i] + '\r\n'); }
6466
}
6467
}
6475
- return r;
6468
}
6469
6478
- // List all MPS connections and types.
6479
- function serverUserCommandMps(cmdargs) {
6480
- var r = '';
6470
+ function serverUserCommandMps(cmdData) {
6471
if (parent.parent.mpsserver == null) {
6482
- r = 'MPS not enabled.';
6472
+ cmdData.result = 'MPS not enabled.';
6473
} else {
6474
const connectionTypes = ['CIRA', 'Relay', 'LMS'];
6475
for (var nodeid in parent.parent.mpsserver.ciraConnections) {
6486
- r += nodeid;
6476
+ cmdData.result += nodeid;
6477
var connections = parent.parent.mpsserver.ciraConnections[nodeid];
6488
- for (var i in connections) { r += ', ' + connectionTypes[connections[i].tag.connType]; }
6489
- r += '\r\n';
6478
+ for (var i in connections) { cmdData.result += ', ' + connectionTypes[connections[i].tag.connType]; }
6479
+ cmdData.result += '\r\n';
6480
}
6491
- if (r == '') { r = 'MPS has not connections.'; }
6481
+ if (cmdData.result == '') { cmdData.result = 'MPS has not connections.'; }
6482
}
6493
- return r;
6483
}
6484
6496
- function serverUserCommandDbStats(cmdargs) {
6485
+ function serverUserCommandDbStats(cmdData) {
6486
parent.parent.db.getStats(function (stats) {
6487
var r2 = '';
6488
for (var i in stats) { r2 += (i + ': ' + stats[i] + '\r\n'); }
6500
- try { ws.send(JSON.stringify({ action: 'serverconsole', value: r2, tag: command.tag })); } catch (ex) { }
6489
+ try { ws.send(JSON.stringify({ action: 'serverconsole', value: r2, tag: cmdData.command.tag })); } catch (ex) { }
6490
});
6491
}
6492
6504
- function serverUserCommandDbCounters(cmdargs) {
6505
- try { ws.send(JSON.stringify({ action: 'serverconsole', value: JSON.stringify(parent.parent.db.dbCounters, null, 2), tag: command.tag })); } catch (ex) { }
6493
+ function serverUserCommandDbCounters(cmdData) {
6494
+ try { ws.send(JSON.stringify({ action: 'serverconsole', value: JSON.stringify(parent.parent.db.dbCounters, null, 2), tag: cmdData.command.tag })); } catch (ex) { }
6495
}
6496
6508
- function serverUserCommandServerUpdate(cmdargs) {
6509
- var r = 'Performing server update...';
6497
+ function serverUserCommandServerUpdate(cmdData) {
6498
+ cmdData.result = 'Performing server update...';
6499
var version = null;
6511
- if (cmdargs['_'].length > 0) {
6512
- version = cmdargs['_'][0];
6500
+
6501
+ if (cmdData.cmdargs['_'].length > 0) {
6502
+ version = cmdData.cmdargs['_'][0];
6503
6504
// This call is SLOW. We only want to validate version if we have to
6505
if (version != 'stable' && version != 'latest') {
@@ -6517,71 +6507,63 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
6507
var versions = JSON.parse(data);
6508
6509
if (versions.includes(version)) {
6520
- if (parent.parent.performServerUpdate(version) == false) {
6521
- try {
6522
- ws.send(JSON.stringify({
6523
- action: 'serverconsole',
6524
- value: 'Server self-update not possible.'
6525
- }));
6510
+ if (parent.parent.performServerUpdate(version) == false) {
6511
+ try {
6512
+ ws.send(JSON.stringify({ action: 'serverconsole',
6513
+ value: 'Server self-update not possible.'}));
6514
} catch (ex) { }
6515
}
6516
} else {
6529
- try {
6530
- ws.send(JSON.stringify({
6531
- action: 'serverconsole',
6532
- value: 'Invalid version. Aborting update'
6533
- }));
6517
+ try {
6518
+ ws.send(JSON.stringify({ action: 'serverconsole',
6519
+ value: 'Invalid version. Aborting update'}));
6520
} catch (ex) { }
6521
}
6522
});
6523
} else {
6538
- if (parent.parent.performServerUpdate(version) == false) {
6539
- r = 'Server self-update not possible.';
6524
+ if (parent.parent.performServerUpdate(version) == false) {
6525
+ cmdData.result = 'Server self-update not possible.';
6526
}
6541
- }
6527
+ }
6528
} else {
6543
- if (parent.parent.performServerUpdate(version) == false) {
6544
- r = 'Server self-update not possible.';
6529
+ if (parent.parent.performServerUpdate(version) == false) {
6530
+ cmdData.result = 'Server self-update not possible.';
6531
}
6532
}
6547
- return r;
6533
}
6534
6550
- function serverUserCommandPrint(cmdargs) {
6551
- console.log(cmdargs['_'][0]);
6535
+ function serverUserCommandPrint(cmdData) {
6536
+ console.log(cmdData.cmdargs['_'][0]);
6537
}
6538
6554
- function serverUserCommandAmtPasswords(cmdargs) {
6555
- var r = '';
6539
+ function serverUserCommandAmtPasswords(cmdData) {
6540
if (parent.parent.amtPasswords == null) {
6557
- r = "No Intel AMT password table."
6541
+ cmdData.result = "No Intel AMT password table."
6542
} else {
6559
- for (var i in parent.parent.amtPasswords) { r += (i + ' - ' + parent.parent.amtPasswords[i].join(', ') + '\r\n'); }
6543
+ for (var i in parent.parent.amtPasswords) { cmdData.result += (i + ' - ' + parent.parent.amtPasswords[i].join(', ') + '\r\n'); }
6544
}
6561
- return r;
6545
}
6546
6564
- function serverUserCommandUpdateCheck(cmdargs) {
6547
+ function serverUserCommandUpdateCheck(cmdData) {
6548
parent.parent.getServerTags(function (tags, error) {
6549
var r2 = '';
6550
if (error != null) { r2 += 'Exception: ' + error + '\r\n'; }
6551
else { for (var i in tags) { r2 += i + ': ' + tags[i] + '\r\n'; } }
6569
- try { ws.send(JSON.stringify({ action: 'serverconsole', value: r2, tag: command.tag })); } catch (ex) { }
6552
+ try { ws.send(JSON.stringify({ action: 'serverconsole', value: r2, tag: cmdData.command.tag })); } catch (ex) { }
6553
});
6571
- return "Checking server update...";
6554
+ cmdData.result = "Checking server update...";
6555
}
6556
6574
- function serverUserCommandMaintenance(cmdargs) {
6575
- var arg = null, changed = false, r = '';
6576
- if ((cmdargs['_'] != null) && (cmdargs['_'][0] != null)) { arg = cmdargs['_'][0].toLowerCase(); }
6557
+ function serverUserCommandMaintenance(cmdData) {
6558
+ var arg = null, changed = false;
6559
+ if ((cmdData.cmdargs['_'] != null) && (cmdData.cmdargs['_'][0] != null)) { arg = cmdData.cmdargs['_'][0].toLowerCase(); }
6560
if (arg == 'enabled') { parent.parent.config.settings.maintenancemode = 1; changed = true; }
6561
else if (arg == 'disabled') { delete parent.parent.config.settings.maintenancemode; changed = true; }
6579
- r = 'Maintenance mode: ' + ((parent.parent.config.settings.maintenancemode == null) ? 'Disabled' : 'Enabled');
6580
- if (changed == false) { r += '\r\nTo change type: maintenance [enabled|disabled]'; }
6581
- return r;
6562
+ cmdData.result = 'Maintenance mode: ' + ((parent.parent.config.settings.maintenancemode == null) ? 'Disabled' : 'Enabled');
6563
+ if (changed == false) { cmdData.result += '\r\nTo change type: maintenance [enabled|disabled]'; }
6564
}
6565
6584
- function serverUserCommandInfo(cmdargs) {
6566
+ function serverUserCommandInfo(cmdData) {
6567
var info = process.memoryUsage();
6568
info.dbType = ['None', 'NeDB', 'MongoJS', 'MongoDB'][parent.db.databaseType];
6569
try { if (parent.parent.multiServer != null) { info.serverId = parent.parent.multiServer.serverid; } } catch (ex) { }
@@ -6598,50 +6580,47 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
6580
try { info.database = ["Unknown", "NeDB", "MongoJS", "MongoDB", "MariaDB", "MySQL"][parent.parent.db.databaseType]; } catch (ex) { }
6581
try { info.productionMode = ((process.env.NODE_ENV != null) && (process.env.NODE_ENV == 'production')); } catch (ex) { }
6582
try { info.allDevGroupManagers = parent.parent.config.settings.managealldevicegroups; } catch (ex) { }
6601
- return JSON.stringify(info, null, 4);
6583
+ cmdData.result = JSON.stringify(info, null, 4);
6584
}
6585
6604
- function serverUserCommandNodeConfig(cmdargs) {
6605
- return JSON.stringify(process.config, null, 4);
6586
+ function serverUserCommandNodeConfig(cmdData) {
6587
+ cmdData.result = JSON.stringify(process.config, null, 4);
6588
}
6589
6608
- function serverUserCommandVersions(cmdargs) {
6609
- return JSON.stringify(process.versions, null, 4);
6590
+ function serverUserCommandVersions(cmdData) {
6591
+ cmdData.result = JSON.stringify(process.versions, null, 4);
6592
}
6593
6612
- function serverUserCommandArgs(cmdargs) {
6613
- return cmd + ': ' + JSON.stringify(cmdargs);
6594
+ function serverUserCommandArgs(cmdData) {
6595
+ cmdData.result = 'args: ' + JSON.stringify(cmdData.cmdargs);
6596
}
6597
6616
- function serverUserCommandUserSessions(cmdargs) {
6617
- var r = '';
6598
+ function serverUserCommandUserSessions(cmdData) {
6599
var userSessionCount = 0;
6600
var filter = null;
6620
- var arg = cmdargs['_'][0];
6601
+ var arg = cmdData.cmdargs['_'][0];
6602
if (typeof arg == 'string') { if (arg.indexOf('/') >= 0) { filter = arg; } else { filter = ('user/' + domain.id + '/' + arg); } }
6603
for (var i in parent.wssessions) {
6604
if ((filter == null) || (filter == i)) {
6605
userSessionCount++;
6625
- r += (i + ', ' + parent.wssessions[i].length + ' session' + ((parent.wssessions[i].length > 1) ? 's' : '') + '.\r\n');
6606
+ cmdData.result += (i + ', ' + parent.wssessions[i].length + ' session' + ((parent.wssessions[i].length > 1) ? 's' : '') + '.\r\n');
6607
for (var j in parent.wssessions[i]) {
6627
- r += ' ' + parent.wssessions[i][j].clientIp + ' --> ' + parent.wssessions[i][j].sessionId + '\r\n';
6608
+ cmdData.result += ' ' + parent.wssessions[i][j].clientIp + ' --> ' + parent.wssessions[i][j].sessionId + '\r\n';
6609
}
6610
}
6611
}
6631
- if (userSessionCount == 0) { r = 'None.'; }
6632
- break;
6612
+ if (userSessionCount == 0) { cmdData.result = 'None.'; }
6613
}
6614
6635
- function serverUserCommandCloseUserSessions(cmdargs) {
6636
- var r = '';
6615
+ function serverUserCommandCloseUserSessions(cmdData) {
6616
var userSessionCount = 0;
6617
var filter = null;
6639
- var arg = cmdargs['_'][0];
6618
+ var arg = cmdData.cmdargs['_'][0];
6619
if (typeof arg == 'string') { if (arg.indexOf('/') >= 0) { filter = arg; } else { filter = ('user/' + domain.id + '/' + arg); } }
6620
if (filter == null) {
6642
- r += "Usage: closeusersessions <username>";
6621
+ cmdData.result += "Usage: closeusersessions <username>";
6622
} else {
6644
- r += "Closing user sessions for: " + filter + '\r\n';
6623
+ cmdData.result += "Closing user sessions for: " + filter + '\r\n';
6624
for (var i in parent.wssessions) {
6625
if (filter == i) {
6626
userSessionCount++;
@@ -6651,137 +6630,119 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
6630
}
6631
}
6632
}
6654
- if (userSessionCount < 2) { r += 'Disconnected ' + userSessionCount + ' session.'; } else { r += 'Disconnected ' + userSessionCount + ' sessions.'; };
6633
+ if (userSessionCount < 2) { cmdData.result += 'Disconnected ' + userSessionCount + ' session.'; } else { cmdData.result += 'Disconnected ' + userSessionCount + ' sessions.'; };
6634
}
6656
- break;
6635
}
6636
6659
- function serverUserCommandResetServer(cmdargs) {
6660
- var r = '';
6637
+ function serverUserCommandResetServer(cmdData) {
6638
console.log("Server restart...");
6639
process.exit(0);
6663
- break;
6640
}
6641
6666
- function serverUserCommandTaslkLimiter(cmdargs) {
6667
- var r = '';
6642
+ function serverUserCommandTaskLimiter(cmdData) {
6643
if (parent.parent.taskLimiter != null) {
6644
//var obj = { maxTasks: maxTasks, maxTaskTime: (maxTaskTime * 1000), nextTaskId: 0, currentCount: 0, current: {}, pending: [[], [], []], timer: null };
6645
const tl = parent.parent.taskLimiter;
6671
- r += 'MaxTasks: ' + tl.maxTasks + ', NextTaskId: ' + tl.nextTaskId + '\r\n';
6672
- r += 'MaxTaskTime: ' + (tl.maxTaskTime / 1000) + ' seconds, Timer: ' + (tl.timer != null) + '\r\n';
6646
+ cmdData.result += 'MaxTasks: ' + tl.maxTasks + ', NextTaskId: ' + tl.nextTaskId + '\r\n';
6647
+ cmdData.result += 'MaxTaskTime: ' + (tl.maxTaskTime / 1000) + ' seconds, Timer: ' + (tl.timer != null) + '\r\n';
6648
var c = [];
6649
for (var i in tl.current) { c.push(i); }
6675
- r += 'Current (' + tl.currentCount + '): [' + c.join(', ') + ']\r\n';
6676
- r += 'Pending (High/Med/Low): ' + tl.pending[0].length + ', ' + tl.pending[1].length + ', ' + tl.pending[2].length + '\r\n';
6650
+ cmdData.result += 'Current (' + tl.currentCount + '): [' + c.join(', ') + ']\r\n';
6651
+ cmdData.result += 'Pending (High/Med/Low): ' + tl.pending[0].length + ', ' + tl.pending[1].length + ', ' + tl.pending[2].length + '\r\n';
6652
}
6678
- break;
6653
}
6654
6681
- function serverUserCommandSetMaxTasks(cmdargs) {
6682
- var r = '';
6683
- if ((cmdargs["_"].length != 1) || (parseInt(cmdargs["_"][0]) < 1) || (parseInt(cmdargs["_"][0]) > 1000)) {
6684
- r = 'Usage: setmaxtasks [1 to 1000]';
6655
+ function serverUserCommandSetMaxTasks(cmdData) {
6656
+ if ((cmdData.cmdargs["_"].length != 1) || (parseInt(cmdData.cmdargs["_"][0]) < 1) || (parseInt(cmdData.cmdargs["_"][0]) > 1000)) {
6657
+ cmdData.result = 'Usage: setmaxtasks [1 to 1000]';
6658
} else {
6686
- parent.parent.taskLimiter.maxTasks = parseInt(cmdargs["_"][0]);
6687
- r = 'MaxTasks set to ' + parent.parent.taskLimiter.maxTasks + '.';
6659
+ parent.parent.taskLimiter.maxTasks = parseInt(cmdData.cmdargs["_"][0]);
6660
+ cmdData.result = 'MaxTasks set to ' + parent.parent.taskLimiter.maxTasks + '.';
6661
}
6689
- break;
6662
}
6663
6692
- function serverUserCommandCores(cmdargs) {
6693
- var r = '';
6694
- if (parent.parent.defaultMeshCores != null) { for (var i in parent.parent.defaultMeshCores) { r += i + ': ' + parent.parent.defaultMeshCores[i].length + ' bytes\r\n'; } }
6695
- break;
6664
+ function serverUserCommandCores(cmdData) {
6665
+ if (parent.parent.defaultMeshCores != null) {
6666
+ for (var i in parent.parent.defaultMeshCores) {
6667
+ cmdData.result += i + ': ' + parent.parent.defaultMeshCores[i].length + ' bytes\r\n';
6668
+ }
6669
+ }
6670
}
6671
6698
- function serverUserCommandShowPaths(cmdargs) {
6699
- var r = '';
6700
- r = 'Parent: ' + parent.parent.parentpath + '\r\n';
6701
- r += 'Data: ' + parent.parent.datapath + '\r\n';
6702
- r += 'Files: ' + parent.parent.filespath + '\r\n';
6703
- r += 'Backup: ' + parent.parent.backuppath + '\r\n';
6704
- r += 'Record: ' + parent.parent.recordpath + '\r\n';
6705
- r += 'WebPublic: ' + parent.parent.webPublicPath + '\r\n';
6706
- r += 'WebViews: ' + parent.parent.webViewsPath + '\r\n';
6707
- if (parent.parent.webViewsOverridePath) { r += 'XWebPublic: ' + parent.parent.webViewsOverridePath + '\r\n'; }
6708
- if (parent.parent.webViewsOverridePath) { r += 'XWebViews: ' + parent.parent.webPublicOverridePath + '\r\n'; }
6709
- break;
6672
+ function serverUserCommandShowPaths(cmdData) {
6673
+ cmdData.result = 'Parent: ' + parent.parent.parentpath + '\r\n';
6674
+ cmdData.result += 'Data: ' + parent.parent.datapath + '\r\n';
6675
+ cmdData.result += 'Files: ' + parent.parent.filespath + '\r\n';
6676
+ cmdData.result += 'Backup: ' + parent.parent.backuppath + '\r\n';
6677
+ cmdData.result += 'Record: ' + parent.parent.recordpath + '\r\n';
6678
+ cmdData.result += 'WebPublic: ' + parent.parent.webPublicPath + '\r\n';
6679
+ cmdData.result += 'WebViews: ' + parent.parent.webViewsPath + '\r\n';
6680
+ if (parent.parent.webViewsOverridePath) { cmdData.result += 'XWebPublic: ' + parent.parent.webViewsOverridePath + '\r\n'; }
6681
+ if (parent.parent.webViewsOverridePath) { cmdData.result += 'XWebViews: ' + parent.parent.webPublicOverridePath + '\r\n'; }
6682
}
6683
6712
- function serverUserCommandMigrationAgents(cmdargs) {
6713
- var r = '';
6684
+ function serverUserCommandMigrationAgents(cmdData) {
6685
if (parent.parent.swarmserver == null) {
6715
- r = 'Swarm server not running.';
6686
+ cmdData.result = 'Swarm server not running.';
6687
} else {
6688
for (var i in parent.parent.swarmserver.migrationAgents) {
6689
var arch = parent.parent.swarmserver.migrationAgents[i];
6719
- 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 />'; }
6690
+ for (var j in arch) { var agent = arch[j]; cmdData.result += 'Arch ' + agent.arch + ', Ver ' + agent.ver + ', Size ' + ((agent.binary == null) ? 0 : agent.binary.length) + '<br />'; }
6691
}
6692
}
6722
- break;
6693
}
6694
6725
- function serverUserCommandSwarmStats(cmdargs) {
6726
- var r = '';
6695
+ function serverUserCommandSwarmStats(cmdData) {
6696
if (parent.parent.swarmserver == null) {
6728
- r = 'Swarm server not running.';
6697
+ cmdData.result = 'Swarm server not running.';
6698
} else {
6699
for (var i in parent.parent.swarmserver.stats) {
6700
if (typeof parent.parent.swarmserver.stats[i] == 'object') {
6732
- r += i + ': ' + JSON.stringify(parent.parent.swarmserver.stats[i]) + '\r\n';
6701
+ cmdData.result += i + ': ' + JSON.stringify(parent.parent.swarmserver.stats[i]) + '\r\n';
6702
} else {
6734
- r += i + ': ' + parent.parent.swarmserver.stats[i] + '\r\n';
6703
+ cmdData.result += i + ': ' + parent.parent.swarmserver.stats[i] + '\r\n';
6704
}
6705
}
6706
}
6738
- break;
6707
}
6708
6741
- function serverUserCommandRelays(cmdargs) {
6742
- var r = '';
6709
+ function serverUserCommandRelays(cmdData) {
6710
for (var i in parent.wsrelays) {
6744
- r += 'id: ' + i + ', ' + ((parent.wsrelays[i].state == 2) ? 'connected' : 'pending');
6711
+ cmdData.result += 'id: ' + i + ', ' + ((parent.wsrelays[i].state == 2) ? 'connected' : 'pending');
6712
if (parent.wsrelays[i].peer1 != null) {
6746
- r += ', ' + cleanRemoteAddr(parent.wsrelays[i].peer1.req.clientIp);
6747
- if (parent.wsrelays[i].peer1.user) { r += ' (User:' + parent.wsrelays[i].peer1.user.name + ')' }
6713
+ cmdData.result += ', ' + cleanRemoteAddr(parent.wsrelays[i].peer1.req.clientIp);
6714
+ if (parent.wsrelays[i].peer1.user) { cmdData.result += ' (User:' + parent.wsrelays[i].peer1.user.name + ')' }
6715
}
6716
if (parent.wsrelays[i].peer2 != null) {
6750
- r += ' to ' + cleanRemoteAddr(parent.wsrelays[i].peer2.req.clientIp);
6751
- if (parent.wsrelays[i].peer2.user) { r += ' (User:' + parent.wsrelays[i].peer2.user.name + ')' }
6717
+ cmdData.result += ' to ' + cleanRemoteAddr(parent.wsrelays[i].peer2.req.clientIp);
6718
+ if (parent.wsrelays[i].peer2.user) { cmdData.result += ' (User:' + parent.wsrelays[i].peer2.user.name + ')' }
6719
}
6753
- r += '\r\n';
6720
+ cmdData.result += '\r\n';
6721
}
6755
- if (r == '') { r = 'No relays.'; }
6756
- break;
6722
+ if (cmdData.result == '') { cmdData.result = 'No relays.'; }
6723
}
6724
6759
- function serverUserCommandAutoBackup(cmdargs) {
6760
- var r = '';
6725
+ function serverUserCommandAutoBackup(cmdData) {
6726
var backupResult = parent.db.performBackup(function (msg) {
6762
- try { ws.send(JSON.stringify({ action: 'serverconsole', value: msg, tag: command.tag })); } catch (ex) { }
6727
+ try { ws.send(JSON.stringify({ action: 'serverconsole', value: msg, tag: cmdData.command.tag })); } catch (ex) { }
6728
});
6764
- if (backupResult == 0) { r = 'Starting auto-backup...'; } else { r = 'Backup alreay in progress.'; }
6765
- break;
6729
+ if (backupResult == 0) { cmdData.result = 'Starting auto-backup...'; } else { cmdData.result = 'Backup alreay in progress.'; }
6730
}
6731
6768
- function serverUserCommandBackupConfig(cmdargs) {
6769
- var r = '';
6770
- r = parent.db.getBackupConfig();
6771
- break;
6732
+ function serverUserCommandBackupConfig(cmdData) {
6733
+ cmdData.result = parent.db.getBackupConfig();
6734
}
6735
6774
- function serverUserCommandFirebase(cmdargs) {
6775
- var r = '';
6736
+ function serverUserCommandFirebase(cmdData) {
6737
if (parent.parent.firebase == null) {
6777
- r = "Firebase push messaging not supported";
6738
+ cmdData.result = "Firebase push messaging not supported";
6739
} else {
6779
- r = JSON.stringify(parent.parent.firebase.stats, null, 2);
6740
+ cmdData.result = JSON.stringify(parent.parent.firebase.stats, null, 2);
6741
}
6781
- break;
6742
}
6743
6744
6745
+
6746
function csvClean(s) { return '\"' + s.split('\"').join('').split(',').join('').split('\r').join('').split('\n').join('') + '\"'; }
6747
6748
// Return detailed information about an array of nodeid's