Improved MeshCtrl with more support for --group
Ylian Saint-Hilaire committed
Apr 8, 2020 at 11:26 UTC
e555500240fe8c112fe86c607d4aab0c391d976e
2 files changed
+52
-13
meshctrl.js
+18
-12
@@ -59,14 +59,14 @@ if (args['_'].length == 0) {
59
break;
60
}
61
case 'addusertodevicegroup': {
62
- if (args.userid == null) { console.log("Add user to group missing useid, use --userid [userid]"); }
63
- else if (args.id == null) { console.log("Add user to group missing group id, use --id [groupid]"); }
62
+ if ((args.id == null) && (args.group == null)) { console.log("Device group identifier missing, use --id [groupid] or --group [groupname]"); }
63
+ else if (args.userid == null) { console.log("Add user to group missing useid, use --userid [userid]"); }
64
else { ok = true; }
65
break;
66
}
67
case 'removeuserfromdevicegroup': {
68
- if (args.userid == null) { console.log("Remove user from group missing useid, use --userid [userid]"); }
69
- else if (args.id == null) { console.log("Remove user from group missing group id, use --id [groupid]"); }
68
+ if ((args.id == null) && (args.group == null)) { console.log("Device group identifier missing, use --id [groupid] or --group [groupname]"); }
69
+ else if (args.userid == null) { console.log("Remove user from group missing useid, use --userid [userid]"); }
70
else { ok = true; }
71
break;
72
}
@@ -88,7 +88,7 @@ if (args['_'].length == 0) {
88
break;
89
}
90
case 'removedevicegroup': {
91
- if (args.id == null) { console.log("Message group identifier, use --id [identifier]"); }
91
+ if ((args.id == null) && (args.group == null)) { console.log("Device group identifier missing, use --id [groupid] or --group [groupname]"); }
92
else { ok = true; }
93
break;
94
}
@@ -257,15 +257,17 @@ if (args['_'].length == 0) {
257
console.log("Remove a device group, Example usages:\r\n");
258
console.log(" MeshCtrl RemoveDeviceGroup --id groupid");
259
console.log("\r\nRequired arguments:\r\n");
260
- console.log(" --id [groupid] - The group identifier.");
260
+ console.log(" --id [groupid] - Device group identifier (or --group).");
261
+ console.log(" --group [groupname] - Device group name (or --id).");
262
break;
263
}
264
case 'addusertodevicegroup': {
265
console.log("Add a user to a device group, Example usages:\r\n");
266
console.log(" MeshCtrl AddUserToDeviceGroup --id groupid --userid userid --fullrights");
266
- console.log(" MeshCtrl AddUserToDeviceGroup --id groupid --userid userid --editgroup --manageusers");
267
+ console.log(" MeshCtrl AddUserToDeviceGroup --group groupname --userid userid --editgroup --manageusers");
268
console.log("\r\nRequired arguments:\r\n");
268
- console.log(" --id [groupid] - The group identifier.");
269
+ console.log(" --id [groupid] - Device group identifier (or --group).");
270
+ console.log(" --group [groupname] - Device group name (or --id).");
271
console.log(" --userid [userid] - The user identifier.");
272
console.log("\r\nOptional arguments:\r\n");
273
console.log(" --fullrights - Allow full rights over this device group.");
@@ -296,7 +298,8 @@ if (args['_'].length == 0) {
298
console.log("Remove a user from a device group, Example usages:\r\n");
299
console.log(" MeshCtrl RemoveuserFromDeviceGroup --id groupid --userid userid");
300
console.log("\r\nRequired arguments:\r\n");
299
- console.log(" --id [groupid] - The group identifier.");
301
+ console.log(" --id [groupid] - Device group identifier (or --group).");
302
+ console.log(" --group [groupname] - Device group name (or --id).");
303
console.log(" --userid [userid] - The user identifier.");
304
break;
305
}
@@ -572,7 +575,8 @@ function serverConnect() {
575
break;
576
}
577
case 'removedevicegroup': {
575
- var op = { action: 'deletemesh', meshid: args.id, responseid: 'meshctrl' };
578
+ var op = { action: 'deletemesh', responseid: 'meshctrl' };
579
+ if (args.id) { op.meshid = args.id; } else if (args.group) { op.meshname = args.group; }
580
ws.send(JSON.stringify(op));
581
break;
582
}
@@ -595,12 +599,14 @@ function serverConnect() {
599
if (args.limitedevents) { meshrights |= 8192; }
600
if (args.chatnotify) { meshrights |= 16384; }
601
if (args.uninstall) { meshrights |= 32768; }
598
- var op = { action: 'addmeshuser', meshid: args.id, usernames: [args.userid], meshadmin: meshrights, responseid: 'meshctrl' };
602
+ var op = { action: 'addmeshuser', usernames: [args.userid], meshadmin: meshrights, responseid: 'meshctrl' };
603
+ if (args.id) { op.meshid = args.id; } else if (args.group) { op.meshname = args.group; }
604
ws.send(JSON.stringify(op));
605
break;
606
}
607
case 'removeuserfromdevicegroup': {
603
- var op = { action: 'removemeshuser', meshid: args.id, userid: args.userid, responseid: 'meshctrl' };
608
+ var op = { action: 'removemeshuser', userid: args.userid, responseid: 'meshctrl' };
609
+ if (args.id) { op.meshid = args.id; } else if (args.group) { op.meshname = args.group; }
610
ws.send(JSON.stringify(op));
611
break;
612
}
meshuser.js
+34
-1
@@ -2241,6 +2241,17 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2241
case 'deletemesh':
2242
{
2243
var err = null;
2244
+
2245
+ // Resolve the device group name if needed
2246
+ if ((typeof command.meshname == 'string') && (command.meshid == null)) {
2247
+ for (var i in parent.meshes) {
2248
+ var m = parent.meshes[i];
2249
+ if ((m.mtype == 2) && (m.name == command.meshname) && parent.IsMeshViewable(user, m)) {
2250
+ if (command.meshid == null) { command.meshid = m._id; } else { err = 'Duplicate device groups found'; }
2251
+ }
2252
+ }
2253
+ }
2254
+
2255
try {
2256
// Delete a mesh and all computers within it
2257
if (common.validateString(command.meshid, 1, 1024) == false) { err = 'Invalid group identifier'; } // Check the meshid
@@ -2370,8 +2381,19 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2381
}
2382
case 'addmeshuser':
2383
{
2373
- if (typeof command.userid == 'string') { command.userids = [ command.userid ]; }
2384
var err = null;
2385
+ if (typeof command.userid == 'string') { command.userids = [command.userid]; }
2386
+
2387
+ // Resolve the device group name if needed
2388
+ if ((typeof command.meshname == 'string') && (command.meshid == null)) {
2389
+ for (var i in parent.meshes) {
2390
+ var m = parent.meshes[i];
2391
+ if ((m.mtype == 2) && (m.name == command.meshname) && parent.IsMeshViewable(user, m)) {
2392
+ if (command.meshid == null) { command.meshid = m._id; } else { err = 'Duplicate device groups found'; }
2393
+ }
2394
+ }
2395
+ }
2396
+
2397
try {
2398
if (common.validateString(command.meshid, 1, 1024) == false) { err = 'Invalid groupid'; } // Check the meshid
2399
else if (common.validateInt(command.meshadmin) == false) { err = 'Invalid group rights'; } // Mesh rights must be an integer
@@ -2568,6 +2590,17 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2590
case 'removemeshuser':
2591
{
2592
var err = null;
2593
+
2594
+ // Resolve the device group name if needed
2595
+ if ((typeof command.meshname == 'string') && (command.meshid == null)) {
2596
+ for (var i in parent.meshes) {
2597
+ var m = parent.meshes[i];
2598
+ if ((m.mtype == 2) && (m.name == command.meshname) && parent.IsMeshViewable(user, m)) {
2599
+ if (command.meshid == null) { command.meshid = m._id; } else { err = 'Duplicate device groups found'; }
2600
+ }
2601
+ }
2602
+ }
2603
+
2604
try {
2605
if (common.validateString(command.userid, 1, 1024) == false) { err = "Invalid userid"; } // Check userid
2606
if (common.validateString(command.meshid, 1, 1024) == false) { err = "Invalid groupid"; } // Check meshid