@iobroker/js-controller-cli 4.0.0-alpha.9-20211115-5dac659e → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/index.js +10 -10
- package/lib/cli/cliCert.js +13 -7
- package/lib/cli/cliCompact.js +22 -8
- package/lib/cli/cliDebug.js +35 -9
- package/lib/cli/cliHost.js +17 -25
- package/lib/cli/cliLogs.js +5 -14
- package/lib/cli/cliMessage.js +3 -11
- package/lib/cli/cliObjects.js +162 -28
- package/lib/cli/cliPlugin.js +120 -175
- package/lib/cli/cliProcess.js +22 -14
- package/lib/cli/cliStates.js +179 -45
- package/lib/cli/cliTools.js +3 -4
- package/lib/cli/messages.js +55 -64
- package/lib/setup/setupList.js +309 -199
- package/package.json +8 -7
package/lib/setup/setupList.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* List different objects for CLI
|
|
3
3
|
*
|
|
4
|
-
* Copyright 2013-
|
|
4
|
+
* Copyright 2013-2022 bluefox <dogafox@gmail.com>
|
|
5
5
|
*
|
|
6
6
|
* MIT License
|
|
7
7
|
*
|
|
@@ -15,10 +15,10 @@ function List(options) {
|
|
|
15
15
|
|
|
16
16
|
options = options || {};
|
|
17
17
|
|
|
18
|
-
if (!options.states)
|
|
18
|
+
if (!options.states) {
|
|
19
19
|
throw new Error('Invalid Modified arguments: states is missing');
|
|
20
20
|
}
|
|
21
|
-
if (!options.objects)
|
|
21
|
+
if (!options.objects) {
|
|
22
22
|
throw new Error('Invalid arguments: objects is missing');
|
|
23
23
|
}
|
|
24
24
|
if (!options.processExit) {
|
|
@@ -26,29 +26,29 @@ function List(options) {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
const { tools } = require('@iobroker/js-controller-common');
|
|
29
|
-
const fs
|
|
29
|
+
const fs = require('fs-extra');
|
|
30
30
|
const { EXIT_CODES } = require('@iobroker/js-controller-common');
|
|
31
31
|
|
|
32
32
|
this.config = fs.readJSONSync(tools.getConfigFileName());
|
|
33
33
|
|
|
34
|
-
const objects
|
|
35
|
-
const states
|
|
36
|
-
const processExit
|
|
34
|
+
const objects = options.objects;
|
|
35
|
+
const states = options.states;
|
|
36
|
+
const processExit = options.processExit;
|
|
37
37
|
|
|
38
38
|
function perm2str(perm) {
|
|
39
39
|
let result = '';
|
|
40
40
|
// user
|
|
41
|
-
result +=
|
|
42
|
-
result +=
|
|
43
|
-
result +=
|
|
41
|
+
result += perm & 0x400 ? 'r' : '-';
|
|
42
|
+
result += perm & 0x200 ? 'w' : '-';
|
|
43
|
+
result += perm & 0x100 ? 'x' : '-';
|
|
44
44
|
// group
|
|
45
|
-
result +=
|
|
46
|
-
result +=
|
|
47
|
-
result +=
|
|
45
|
+
result += perm & 0x040 ? 'r' : '-';
|
|
46
|
+
result += perm & 0x020 ? 'w' : '-';
|
|
47
|
+
result += perm & 0x010 ? 'x' : '-';
|
|
48
48
|
// any
|
|
49
|
-
result +=
|
|
50
|
-
result +=
|
|
51
|
-
result +=
|
|
49
|
+
result += perm & 0x004 ? 'r' : '-';
|
|
50
|
+
result += perm & 0x002 ? 'w' : '-';
|
|
51
|
+
result += perm & 0x001 ? 'x' : '-';
|
|
52
52
|
return result;
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -72,7 +72,7 @@ function List(options) {
|
|
|
72
72
|
}
|
|
73
73
|
text += time;
|
|
74
74
|
|
|
75
|
-
if (file.acl){
|
|
75
|
+
if (file.acl) {
|
|
76
76
|
text += (file.isDir ? 'd' : '-') + perm2str(file.acl.permissions || 0);
|
|
77
77
|
let owner = file.acl.owner;
|
|
78
78
|
if (owner) {
|
|
@@ -98,12 +98,12 @@ function List(options) {
|
|
|
98
98
|
} else {
|
|
99
99
|
text += (file.isDir ? 'd' : '-') + '?????????' + new Array(31).join(' ');
|
|
100
100
|
}
|
|
101
|
-
let size =
|
|
101
|
+
let size = file.stats && file.stats.size ? file.stats.size.toString() : '';
|
|
102
102
|
if (size.length < 7) {
|
|
103
103
|
size = new Array(7 - size.length).join(' ') + size;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
text += ' ' + size + ' ' + adapter + (
|
|
106
|
+
text += ' ' + size + ' ' + adapter + (!path || path[0] === '/' ? '' : '/') + path + '/' + file.file;
|
|
107
107
|
if (file.isDir) {
|
|
108
108
|
text += '/';
|
|
109
109
|
console.log(text);
|
|
@@ -120,8 +120,11 @@ function List(options) {
|
|
|
120
120
|
this.showObject = obj => {
|
|
121
121
|
//drwxr-xr-x 1 odroid odroid 43 Oct 3 2013 .xsessionrc
|
|
122
122
|
let text = '';
|
|
123
|
-
if (obj.acl){
|
|
124
|
-
text +=
|
|
123
|
+
if (obj.acl) {
|
|
124
|
+
text +=
|
|
125
|
+
perm2str(obj.acl.object || 0) +
|
|
126
|
+
' ' +
|
|
127
|
+
(obj.type === 'state' ? perm2str(obj.acl.state || 0) : ' ');
|
|
125
128
|
let owner = obj.acl.owner;
|
|
126
129
|
if (owner) {
|
|
127
130
|
owner = owner.substring(12);
|
|
@@ -143,7 +146,7 @@ function List(options) {
|
|
|
143
146
|
}
|
|
144
147
|
text += ' ' + group;
|
|
145
148
|
} else {
|
|
146
|
-
text += '?????????' + (
|
|
149
|
+
text += '?????????' + (obj.type === 'state' ? ' ?????????' : ' ') + new Array(31).join(' ');
|
|
147
150
|
}
|
|
148
151
|
text += ' ' + obj._id;
|
|
149
152
|
console.log(text);
|
|
@@ -179,7 +182,7 @@ function List(options) {
|
|
|
179
182
|
continue;
|
|
180
183
|
}
|
|
181
184
|
if (files[f].file === fname) {
|
|
182
|
-
allFiles.push({adapter: adapter, path: path, file: files[f]});
|
|
185
|
+
allFiles.push({ adapter: adapter, path: path, file: files[f] });
|
|
183
186
|
break;
|
|
184
187
|
}
|
|
185
188
|
}
|
|
@@ -195,7 +198,7 @@ function List(options) {
|
|
|
195
198
|
if (files[f].file === '.' || files[f].file === '..') {
|
|
196
199
|
continue;
|
|
197
200
|
}
|
|
198
|
-
allFiles.push({adapter: adapter, path: path, file: files[f]});
|
|
201
|
+
allFiles.push({ adapter: adapter, path: path, file: files[f] });
|
|
199
202
|
if (files[f].isDir) {
|
|
200
203
|
count++;
|
|
201
204
|
that.listDirectory(adapter, path + '/' + files[f].file, allFiles, function () {
|
|
@@ -212,7 +215,7 @@ function List(options) {
|
|
|
212
215
|
});
|
|
213
216
|
};
|
|
214
217
|
|
|
215
|
-
function sortFiles
|
|
218
|
+
function sortFiles(a, b) {
|
|
216
219
|
let a1 = a.path + a.file.file;
|
|
217
220
|
if (a1[0] !== '/') {
|
|
218
221
|
a1 = '/' + a1;
|
|
@@ -242,13 +245,14 @@ function List(options) {
|
|
|
242
245
|
files.sort(sortFiles);
|
|
243
246
|
that.showFileHeader(adapter);
|
|
244
247
|
|
|
245
|
-
files
|
|
248
|
+
files
|
|
249
|
+
.filter(f => !filter || (f.path + '/' + f.file.file).startsWith(filter))
|
|
246
250
|
.forEach(f => that.showFile(f.adapter, f.path, f.file));
|
|
247
251
|
|
|
248
252
|
that.listAdaptersFiles(adapters, callback);
|
|
249
253
|
});
|
|
250
254
|
} else {
|
|
251
|
-
typeof callback === 'function' &&
|
|
255
|
+
typeof callback === 'function' && callback();
|
|
252
256
|
}
|
|
253
257
|
};
|
|
254
258
|
|
|
@@ -279,16 +283,21 @@ function List(options) {
|
|
|
279
283
|
objects.getObjectList(null, (err, objs) => {
|
|
280
284
|
const reg = filter ? new RegExp(tools.pattern2RegEx(filter)) : null;
|
|
281
285
|
for (let i = 0; i < objs.rows.length; i++) {
|
|
282
|
-
let name =
|
|
283
|
-
|
|
286
|
+
let name =
|
|
287
|
+
objs.rows[i].value && objs.rows[i].value.common && objs.rows[i].value.common.name;
|
|
288
|
+
if (tools.isObject(name)) {
|
|
284
289
|
name = name[lang] || name.en;
|
|
285
290
|
}
|
|
286
|
-
if (
|
|
291
|
+
if (
|
|
292
|
+
!reg ||
|
|
293
|
+
reg.test(objs.rows[i].value._id) ||
|
|
294
|
+
(objs.rows[i].value.common && reg.test(name))
|
|
295
|
+
) {
|
|
287
296
|
if (objs.rows[i].value.type) {
|
|
288
297
|
let id = objs.rows[i].value._id;
|
|
289
298
|
let type = objs.rows[i].value.type;
|
|
290
|
-
if (id.length < 40)
|
|
291
|
-
id
|
|
299
|
+
if (id.length < 40) {
|
|
300
|
+
id += new Array(40 - id.length).join(' ');
|
|
292
301
|
}
|
|
293
302
|
if (type.length < 10) {
|
|
294
303
|
type += new Array(10 - type.length).join(' ');
|
|
@@ -329,7 +338,17 @@ function List(options) {
|
|
|
329
338
|
if (from.length < 30) {
|
|
330
339
|
from += new Array(30 - from.length).join(' ');
|
|
331
340
|
}
|
|
332
|
-
console.log(
|
|
341
|
+
console.log(
|
|
342
|
+
id +
|
|
343
|
+
': from [' +
|
|
344
|
+
from +
|
|
345
|
+
'] (' +
|
|
346
|
+
type +
|
|
347
|
+
') ' +
|
|
348
|
+
(states[i].ack ? ' ack' : 'not ack') +
|
|
349
|
+
' ' +
|
|
350
|
+
JSON.stringify(states[i].val)
|
|
351
|
+
);
|
|
333
352
|
}
|
|
334
353
|
setTimeout(processExit, 1000, null);
|
|
335
354
|
});
|
|
@@ -338,171 +357,222 @@ function List(options) {
|
|
|
338
357
|
|
|
339
358
|
case 'adapters':
|
|
340
359
|
case 'a':
|
|
341
|
-
objects.getObjectList(
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
let id = objs.rows[i].value._id;
|
|
349
|
-
let name = objs.rows[i].value.common.name;
|
|
350
|
-
if (typeof name === 'object') {
|
|
351
|
-
name = name[lang] || name.en;
|
|
352
|
-
}
|
|
353
|
-
if (id.length < 40) {
|
|
354
|
-
id += new Array(40 - id.length).join(' ');
|
|
355
|
-
}
|
|
356
|
-
if (name.length < 15) {
|
|
357
|
-
name += new Array(15 - name.length).join(' ');
|
|
360
|
+
objects.getObjectList(
|
|
361
|
+
{ startkey: 'system.adapter.', endkey: 'system.adapter.\u9999' },
|
|
362
|
+
(err, objs) => {
|
|
363
|
+
const reg = filter ? new RegExp(tools.pattern2RegEx('system.adapter.' + filter)) : null;
|
|
364
|
+
for (let i = 0; i < objs.rows.length; i++) {
|
|
365
|
+
if (objs.rows[i].value.type !== 'adapter') {
|
|
366
|
+
continue;
|
|
358
367
|
}
|
|
368
|
+
if (
|
|
369
|
+
!reg ||
|
|
370
|
+
reg.test(objs.rows[i].value._id) ||
|
|
371
|
+
(objs.rows[i].value.common && reg.test(objs.rows[i].value.common.name))
|
|
372
|
+
) {
|
|
373
|
+
let id = objs.rows[i].value._id;
|
|
374
|
+
let name = objs.rows[i].value.common.name;
|
|
375
|
+
if (typeof name === 'object') {
|
|
376
|
+
name = name[lang] || name.en;
|
|
377
|
+
}
|
|
378
|
+
if (id.length < 40) {
|
|
379
|
+
id += new Array(40 - id.length).join(' ');
|
|
380
|
+
}
|
|
381
|
+
if (name.length < 15) {
|
|
382
|
+
name += new Array(15 - name.length).join(' ');
|
|
383
|
+
}
|
|
359
384
|
|
|
360
|
-
|
|
361
|
-
objs.rows[i].value.common.version;
|
|
385
|
+
const text = id + ': ' + name + ' - v' + objs.rows[i].value.common.version;
|
|
362
386
|
|
|
363
|
-
|
|
387
|
+
console.log(text);
|
|
388
|
+
}
|
|
364
389
|
}
|
|
390
|
+
setTimeout(processExit, 1000, null);
|
|
365
391
|
}
|
|
366
|
-
|
|
367
|
-
});
|
|
392
|
+
);
|
|
368
393
|
break;
|
|
369
394
|
|
|
370
395
|
case 'instances':
|
|
371
396
|
case 'i':
|
|
372
|
-
objects.getObjectList(
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
if (!reg || reg.test(row.value._id) || (row.value.common && reg.test(row.value.common.name))) {
|
|
388
|
-
if (flags.enabled && !row.value.common.enabled) {
|
|
389
|
-
continue;
|
|
390
|
-
}
|
|
391
|
-
if (flags.disabled && row.value.common.enabled) {
|
|
392
|
-
continue;
|
|
393
|
-
}
|
|
394
|
-
if (flags.port && row.value.native.port === undefined) {
|
|
395
|
-
continue;
|
|
396
|
-
}
|
|
397
|
-
if (flags.ssl && row.value.native.secure === undefined) {
|
|
398
|
-
continue;
|
|
399
|
-
}
|
|
400
|
-
if (flags.ip && row.value.native.bind === undefined) {
|
|
397
|
+
objects.getObjectList(
|
|
398
|
+
{ startkey: 'system.adapter.', endkey: 'system.adapter.\u9999' },
|
|
399
|
+
(err, objs) => {
|
|
400
|
+
const reg = filter ? new RegExp(tools.pattern2RegEx('system.adapter.' + filter)) : null;
|
|
401
|
+
objs.rows.sort((a, b) => {
|
|
402
|
+
if (a.id > b.id) {
|
|
403
|
+
return 1;
|
|
404
|
+
} else if (a.id < b.id) {
|
|
405
|
+
return -1;
|
|
406
|
+
}
|
|
407
|
+
return 0;
|
|
408
|
+
});
|
|
409
|
+
const lines = [];
|
|
410
|
+
for (const row of objs.rows) {
|
|
411
|
+
if (row.value.type !== 'instance') {
|
|
401
412
|
continue;
|
|
402
413
|
}
|
|
414
|
+
if (
|
|
415
|
+
!reg ||
|
|
416
|
+
reg.test(row.value._id) ||
|
|
417
|
+
(row.value.common && reg.test(row.value.common.name))
|
|
418
|
+
) {
|
|
419
|
+
if (flags.enabled && !row.value.common.enabled) {
|
|
420
|
+
continue;
|
|
421
|
+
}
|
|
422
|
+
if (flags.disabled && row.value.common.enabled) {
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
425
|
+
if (flags.port && row.value.native.port === undefined) {
|
|
426
|
+
continue;
|
|
427
|
+
}
|
|
428
|
+
if (flags.ssl && row.value.native.secure === undefined) {
|
|
429
|
+
continue;
|
|
430
|
+
}
|
|
431
|
+
if (flags.ip && row.value.native.bind === undefined) {
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
403
434
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
if (host && host.length < 40) {
|
|
418
|
-
host = host.padEnd(40);
|
|
419
|
-
}
|
|
435
|
+
let id = row.value._id;
|
|
436
|
+
let name = row.value.common.name;
|
|
437
|
+
let host = row.value.common.host;
|
|
438
|
+
if (typeof name === 'object') {
|
|
439
|
+
name = name[lang] || name.en;
|
|
440
|
+
}
|
|
441
|
+
if (id.length < 40) {
|
|
442
|
+
id = id.padEnd(40);
|
|
443
|
+
}
|
|
444
|
+
if (name && name.length < 22) {
|
|
445
|
+
name = name.padEnd(22);
|
|
446
|
+
}
|
|
420
447
|
|
|
421
|
-
|
|
448
|
+
if (host && host.length < 40) {
|
|
449
|
+
host = host.padEnd(40);
|
|
450
|
+
}
|
|
422
451
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
452
|
+
let text = `${id}: ${name || ''}: ${host} - ${
|
|
453
|
+
row.value.common.enabled ? ' enabled' : 'disabled'
|
|
454
|
+
}`;
|
|
455
|
+
|
|
456
|
+
if (this.config.system && this.config.system.compact && row.value.common.compact) {
|
|
457
|
+
text +=
|
|
458
|
+
', compact ' +
|
|
459
|
+
(row.value.common.compact && row.value.common.runAsCompactMode
|
|
460
|
+
? 'enabled (group ' +
|
|
461
|
+
(row.value.common.compactGroup !== undefined
|
|
462
|
+
? row.value.common.compactGroup
|
|
463
|
+
: 1) +
|
|
464
|
+
')'
|
|
465
|
+
: 'disabled');
|
|
466
|
+
}
|
|
426
467
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
468
|
+
if (row.value.native && row.value.native.port) {
|
|
469
|
+
text += `, port: ${row.value.native.port}`;
|
|
470
|
+
}
|
|
471
|
+
if (row.value.native && row.value.native.bind) {
|
|
472
|
+
text += `, bind: ${row.value.native.bind}`;
|
|
473
|
+
}
|
|
474
|
+
if (row.value.native && row.value.native.secure) {
|
|
475
|
+
text += ' (SSL)';
|
|
476
|
+
}
|
|
477
|
+
if (row.value.native && row.value.native.defaultUser) {
|
|
478
|
+
text += `, run as: ${row.value.native.defaultUser}`;
|
|
479
|
+
}
|
|
480
|
+
lines.push({ id: row.value._id, value: text });
|
|
438
481
|
}
|
|
439
|
-
lines.push({id: row.value._id, value: text});
|
|
440
482
|
}
|
|
483
|
+
readOnlineState(lines, flags, result => {
|
|
484
|
+
console.log(result.join('\n'));
|
|
485
|
+
console.log('\n+ instance is alive');
|
|
486
|
+
setTimeout(processExit, 1000, null);
|
|
487
|
+
});
|
|
441
488
|
}
|
|
442
|
-
|
|
443
|
-
console.log(result.join('\n'));
|
|
444
|
-
console.log('\n+ instance is alive');
|
|
445
|
-
setTimeout(processExit, 1000, null);
|
|
446
|
-
});
|
|
447
|
-
});
|
|
489
|
+
);
|
|
448
490
|
break;
|
|
449
491
|
|
|
450
492
|
case 'users':
|
|
451
493
|
case 'u':
|
|
452
|
-
objects.getObjectList({startkey: 'system.user.', endkey: 'system.user.\u9999'}, (err, objs) => {
|
|
453
|
-
objects.getObjectList(
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
let name = objs.rows[i].value.common.name;
|
|
465
|
-
if (typeof name === 'object') {
|
|
466
|
-
name = name[lang] || name.en;
|
|
467
|
-
}
|
|
468
|
-
if (id.length < 40) {
|
|
469
|
-
id += new Array(40 - id.length).join(' ');
|
|
470
|
-
}
|
|
471
|
-
if (name.length < 12) {
|
|
472
|
-
name += new Array(12 - name.length).join(' ');
|
|
494
|
+
objects.getObjectList({ startkey: 'system.user.', endkey: 'system.user.\u9999' }, (err, objs) => {
|
|
495
|
+
objects.getObjectList(
|
|
496
|
+
{ startkey: 'system.group.', endkey: 'system.group.\u9999' },
|
|
497
|
+
(err, groups) => {
|
|
498
|
+
const reg = filter ? new RegExp(tools.pattern2RegEx('system.user.' + filter)) : null;
|
|
499
|
+
console.log(' ID | Name | Active | Groups');
|
|
500
|
+
console.log(
|
|
501
|
+
'---------------------------------------+-------------+----------+--------------'
|
|
502
|
+
);
|
|
503
|
+
for (let i = 0; i < objs.rows.length; i++) {
|
|
504
|
+
if (objs.rows[i].value.type !== 'user') {
|
|
505
|
+
continue;
|
|
473
506
|
}
|
|
474
507
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
508
|
+
if (
|
|
509
|
+
!reg ||
|
|
510
|
+
reg.test(objs.rows[i].value._id) ||
|
|
511
|
+
(objs.rows[i].value.common && reg.test(objs.rows[i].value.common.name))
|
|
512
|
+
) {
|
|
513
|
+
let id = objs.rows[i].value._id;
|
|
514
|
+
let name = objs.rows[i].value.common.name;
|
|
515
|
+
if (typeof name === 'object') {
|
|
516
|
+
name = name[lang] || name.en;
|
|
517
|
+
}
|
|
518
|
+
if (id.length < 40) {
|
|
519
|
+
id += new Array(40 - id.length).join(' ');
|
|
520
|
+
}
|
|
521
|
+
if (name.length < 12) {
|
|
522
|
+
name += new Array(12 - name.length).join(' ');
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
const text =
|
|
526
|
+
id +
|
|
527
|
+
'| ' +
|
|
528
|
+
name +
|
|
529
|
+
' | ' +
|
|
530
|
+
(objs.rows[i].value.common.enabled ? ' enabled' : 'disabled') +
|
|
531
|
+
' |';
|
|
532
|
+
const gs = [];
|
|
533
|
+
// find all groups
|
|
534
|
+
for (let g = 0; g < groups.rows.length; g++) {
|
|
535
|
+
if (
|
|
536
|
+
groups.rows[g].value.common.members &&
|
|
537
|
+
groups.rows[g].value.common.members.indexOf(objs.rows[i].value._id) !==
|
|
538
|
+
-1
|
|
539
|
+
) {
|
|
540
|
+
gs.push(groups.rows[g].value._id.substring(13));
|
|
541
|
+
}
|
|
482
542
|
}
|
|
543
|
+
console.log(text + ' ' + gs.join(', '));
|
|
483
544
|
}
|
|
484
|
-
console.log(text + ' ' + gs.join(', '));
|
|
485
545
|
}
|
|
546
|
+
setTimeout(processExit, 1000, null);
|
|
486
547
|
}
|
|
487
|
-
|
|
488
|
-
});
|
|
548
|
+
);
|
|
489
549
|
});
|
|
490
550
|
break;
|
|
491
551
|
|
|
492
552
|
case 'groups':
|
|
493
553
|
case 'g':
|
|
494
|
-
objects.getObjectList({startkey: 'system.group.', endkey: 'system.group.\u9999'}, (err, objs) => {
|
|
554
|
+
objects.getObjectList({ startkey: 'system.group.', endkey: 'system.group.\u9999' }, (err, objs) => {
|
|
495
555
|
const reg = filter ? new RegExp(tools.pattern2RegEx('system.group.' + filter)) : null;
|
|
496
556
|
console.log('');
|
|
497
|
-
console.log(
|
|
498
|
-
|
|
499
|
-
|
|
557
|
+
console.log(
|
|
558
|
+
' system.group | object | state | file | user | others | users'
|
|
559
|
+
);
|
|
560
|
+
console.log(
|
|
561
|
+
' | l r w d | l r w d | l r w c d | w c d | |'
|
|
562
|
+
);
|
|
563
|
+
console.log(
|
|
564
|
+
'--------------------+---------+---------+-----------+-------+------------------------+---------'
|
|
565
|
+
);
|
|
500
566
|
for (let i = 0; i < objs.rows.length; i++) {
|
|
501
567
|
if (objs.rows[i].value.type !== 'group') {
|
|
502
568
|
continue;
|
|
503
569
|
}
|
|
504
|
-
if (
|
|
505
|
-
|
|
570
|
+
if (
|
|
571
|
+
!reg ||
|
|
572
|
+
reg.test(objs.rows[i].value._id) ||
|
|
573
|
+
(objs.rows[i].value.common && reg.test(objs.rows[i].value.common.name))
|
|
574
|
+
) {
|
|
575
|
+
let id = objs.rows[i].value._id.substring(13);
|
|
506
576
|
//let name = objs.rows[i].value.common.name;
|
|
507
577
|
|
|
508
578
|
if (id === 'administrator') {
|
|
@@ -510,27 +580,27 @@ function List(options) {
|
|
|
510
580
|
file: {
|
|
511
581
|
read: true,
|
|
512
582
|
write: true,
|
|
513
|
-
|
|
583
|
+
delete: true,
|
|
514
584
|
create: true,
|
|
515
585
|
list: true
|
|
516
586
|
},
|
|
517
587
|
object: {
|
|
518
588
|
read: true,
|
|
519
589
|
write: true,
|
|
520
|
-
|
|
590
|
+
delete: true,
|
|
521
591
|
list: true
|
|
522
592
|
},
|
|
523
593
|
state: {
|
|
524
594
|
read: true,
|
|
525
595
|
write: true,
|
|
526
|
-
|
|
596
|
+
delete: true,
|
|
527
597
|
create: true,
|
|
528
598
|
list: true
|
|
529
599
|
},
|
|
530
|
-
user:
|
|
600
|
+
user: {
|
|
531
601
|
write: true,
|
|
532
602
|
create: true,
|
|
533
|
-
|
|
603
|
+
delete: true
|
|
534
604
|
},
|
|
535
605
|
other: {
|
|
536
606
|
execute: true,
|
|
@@ -546,40 +616,40 @@ function List(options) {
|
|
|
546
616
|
let text = id;
|
|
547
617
|
text += ' | ';
|
|
548
618
|
if (objs.rows[i].value.common.acl && objs.rows[i].value.common.acl.object) {
|
|
549
|
-
text += (objs.rows[i].value.common.acl.object.list
|
|
550
|
-
text += (objs.rows[i].value.common.acl.object.read
|
|
551
|
-
text += (objs.rows[i].value.common.acl.object.write
|
|
552
|
-
text += (objs.rows[i].value.common.acl.object.delete ? '+': '-') + ' ';
|
|
619
|
+
text += (objs.rows[i].value.common.acl.object.list ? '+' : '-') + ' ';
|
|
620
|
+
text += (objs.rows[i].value.common.acl.object.read ? '+' : '-') + ' ';
|
|
621
|
+
text += (objs.rows[i].value.common.acl.object.write ? '+' : '-') + ' ';
|
|
622
|
+
text += (objs.rows[i].value.common.acl.object.delete ? '+' : '-') + ' ';
|
|
553
623
|
text += '|';
|
|
554
624
|
} else {
|
|
555
625
|
text += ' |';
|
|
556
626
|
}
|
|
557
627
|
if (objs.rows[i].value.common.acl && objs.rows[i].value.common.acl.state) {
|
|
558
628
|
text += ' ';
|
|
559
|
-
text +=(objs.rows[i].value.common.acl.state.list
|
|
560
|
-
text +=(objs.rows[i].value.common.acl.state.read
|
|
561
|
-
text +=(objs.rows[i].value.common.acl.state.write
|
|
562
|
-
text +=(objs.rows[i].value.common.acl.state.delete ? '+': '-') + ' ';
|
|
629
|
+
text += (objs.rows[i].value.common.acl.state.list ? '+' : '-') + ' ';
|
|
630
|
+
text += (objs.rows[i].value.common.acl.state.read ? '+' : '-') + ' ';
|
|
631
|
+
text += (objs.rows[i].value.common.acl.state.write ? '+' : '-') + ' ';
|
|
632
|
+
text += (objs.rows[i].value.common.acl.state.delete ? '+' : '-') + ' ';
|
|
563
633
|
text += '|';
|
|
564
634
|
} else {
|
|
565
635
|
text += ' |';
|
|
566
636
|
}
|
|
567
637
|
if (objs.rows[i].value.common.acl && objs.rows[i].value.common.acl.file) {
|
|
568
638
|
text += ' ';
|
|
569
|
-
text += (objs.rows[i].value.common.acl.file.list
|
|
570
|
-
text += (objs.rows[i].value.common.acl.file.read
|
|
571
|
-
text += (objs.rows[i].value.common.acl.file.write
|
|
572
|
-
text += (objs.rows[i].value.common.acl.file.create ? '+': '-') + ' ';
|
|
573
|
-
text += (objs.rows[i].value.common.acl.file.delete ? '+': '-') + ' ';
|
|
639
|
+
text += (objs.rows[i].value.common.acl.file.list ? '+' : '-') + ' ';
|
|
640
|
+
text += (objs.rows[i].value.common.acl.file.read ? '+' : '-') + ' ';
|
|
641
|
+
text += (objs.rows[i].value.common.acl.file.write ? '+' : '-') + ' ';
|
|
642
|
+
text += (objs.rows[i].value.common.acl.file.create ? '+' : '-') + ' ';
|
|
643
|
+
text += (objs.rows[i].value.common.acl.file.delete ? '+' : '-') + ' ';
|
|
574
644
|
text += '|';
|
|
575
645
|
} else {
|
|
576
646
|
text += ' |';
|
|
577
647
|
}
|
|
578
648
|
if (objs.rows[i].value.common.acl && objs.rows[i].value.common.acl.users) {
|
|
579
649
|
text += ' ';
|
|
580
|
-
text += (objs.rows[i].value.common.acl.users.write
|
|
581
|
-
text += (objs.rows[i].value.common.acl.users.create ? '+': '-') + ' ';
|
|
582
|
-
text += (objs.rows[i].value.common.acl.users.delete ? '+': '-') + ' ';
|
|
650
|
+
text += (objs.rows[i].value.common.acl.users.write ? '+' : '-') + ' ';
|
|
651
|
+
text += (objs.rows[i].value.common.acl.users.create ? '+' : '-') + ' ';
|
|
652
|
+
text += (objs.rows[i].value.common.acl.users.delete ? '+' : '-') + ' ';
|
|
583
653
|
text += '|';
|
|
584
654
|
} else {
|
|
585
655
|
text += ' |';
|
|
@@ -599,9 +669,10 @@ function List(options) {
|
|
|
599
669
|
}
|
|
600
670
|
|
|
601
671
|
//if (name.length < 30) name += new Array(30 - name.length).join(' ');
|
|
602
|
-
if (
|
|
672
|
+
if (objs.rows[i].value.common.members) {
|
|
603
673
|
for (let m = 0; m < objs.rows[i].value.common.members.length; m++) {
|
|
604
|
-
objs.rows[i].value.common.members[m] =
|
|
674
|
+
objs.rows[i].value.common.members[m] =
|
|
675
|
+
objs.rows[i].value.common.members[m].substring(12);
|
|
605
676
|
}
|
|
606
677
|
text += ' ' + objs.rows[i].value.common.members.join(', ');
|
|
607
678
|
}
|
|
@@ -610,7 +681,9 @@ function List(options) {
|
|
|
610
681
|
}
|
|
611
682
|
}
|
|
612
683
|
|
|
613
|
-
console.log(
|
|
684
|
+
console.log(
|
|
685
|
+
'--------------------+---------+---------+-----------+-------+------------------------+---------'
|
|
686
|
+
);
|
|
614
687
|
console.log('Legend: (l)ist, (r)ead, (w)rite, (c)reate, (d)elete');
|
|
615
688
|
setTimeout(processExit, 1000, null);
|
|
616
689
|
});
|
|
@@ -618,7 +691,7 @@ function List(options) {
|
|
|
618
691
|
|
|
619
692
|
case 'h':
|
|
620
693
|
case 'hosts':
|
|
621
|
-
objects.getObjectList({startkey: 'system.host.', endkey: 'system.host.\u9999'}, (err, objs) => {
|
|
694
|
+
objects.getObjectList({ startkey: 'system.host.', endkey: 'system.host.\u9999' }, (err, objs) => {
|
|
622
695
|
states.getKeys('system.host.*', (err, keys) => {
|
|
623
696
|
states.getStates(keys, (err, states) => {
|
|
624
697
|
const reg = filter ? new RegExp(tools.pattern2RegEx('system.host.' + filter)) : null;
|
|
@@ -627,8 +700,12 @@ function List(options) {
|
|
|
627
700
|
if (objs.rows[i].value.type !== 'host') {
|
|
628
701
|
continue;
|
|
629
702
|
}
|
|
630
|
-
if (
|
|
631
|
-
|
|
703
|
+
if (
|
|
704
|
+
!reg ||
|
|
705
|
+
reg.test(objs.rows[i].value._id) ||
|
|
706
|
+
(objs.rows[i].value.common && reg.test(objs.rows[i].value.common.name))
|
|
707
|
+
) {
|
|
708
|
+
let id = objs.rows[i].value._id.substring(12);
|
|
632
709
|
let name = objs.rows[i].value.common.name;
|
|
633
710
|
if (typeof name === 'object') {
|
|
634
711
|
name = name[lang] || name.en;
|
|
@@ -640,8 +717,8 @@ function List(options) {
|
|
|
640
717
|
if (hostname.length < 15) {
|
|
641
718
|
hostname += new Array(15 - hostname.length).join(' ');
|
|
642
719
|
}
|
|
643
|
-
const version
|
|
644
|
-
let alive
|
|
720
|
+
const version = objs.rows[i].value.common.installedVersion;
|
|
721
|
+
let alive = '';
|
|
645
722
|
let uptime = '';
|
|
646
723
|
for (let k = 0; k < keys.length; k++) {
|
|
647
724
|
if (keys[k] === objs.rows[i].value._id + '.alive') {
|
|
@@ -651,12 +728,24 @@ function List(options) {
|
|
|
651
728
|
uptime = states[k].val;
|
|
652
729
|
}
|
|
653
730
|
}
|
|
654
|
-
alive
|
|
731
|
+
alive = alive ? 'alive' : ' dead';
|
|
655
732
|
//if (uptime.toString().length < 10) uptime = new Array(10 - uptime.toString().length).join(' ') + uptime.toString();
|
|
656
733
|
if (!uptime) {
|
|
657
734
|
uptime = '-';
|
|
658
735
|
}
|
|
659
|
-
const text =
|
|
736
|
+
const text =
|
|
737
|
+
id +
|
|
738
|
+
' ' +
|
|
739
|
+
name +
|
|
740
|
+
' (version: ' +
|
|
741
|
+
version +
|
|
742
|
+
', hostname: ' +
|
|
743
|
+
hostname +
|
|
744
|
+
', ' +
|
|
745
|
+
alive +
|
|
746
|
+
', uptime: ' +
|
|
747
|
+
uptime +
|
|
748
|
+
')';
|
|
660
749
|
// todo
|
|
661
750
|
console.log(text);
|
|
662
751
|
}
|
|
@@ -670,15 +759,21 @@ function List(options) {
|
|
|
670
759
|
|
|
671
760
|
case 'enums':
|
|
672
761
|
case 'e':
|
|
673
|
-
objects.getObjectList({startkey: 'enum.', endkey: 'enum.\u9999'}, (err, objs) => {
|
|
762
|
+
objects.getObjectList({ startkey: 'enum.', endkey: 'enum.\u9999' }, (err, objs) => {
|
|
674
763
|
const reg = filter ? new RegExp(tools.pattern2RegEx('enum.' + filter)) : null;
|
|
675
764
|
for (let i = 0; i < objs.rows.length; i++) {
|
|
676
765
|
if (objs.rows[i].value.type !== 'enum') {
|
|
677
766
|
continue;
|
|
678
767
|
}
|
|
679
|
-
if (
|
|
680
|
-
|
|
681
|
-
|
|
768
|
+
if (
|
|
769
|
+
!reg ||
|
|
770
|
+
reg.test(objs.rows[i].value._id) ||
|
|
771
|
+
(objs.rows[i].value.common && reg.test(objs.rows[i].value.common.name))
|
|
772
|
+
) {
|
|
773
|
+
console.log(
|
|
774
|
+
'\n====================================================================================='
|
|
775
|
+
);
|
|
776
|
+
let id = objs.rows[i].value._id.substring(5);
|
|
682
777
|
let name = objs.rows[i].value.common.name;
|
|
683
778
|
if (typeof name === 'object') {
|
|
684
779
|
name = name[lang] || name.en;
|
|
@@ -687,7 +782,9 @@ function List(options) {
|
|
|
687
782
|
id += new Array(20 - id.length).join(' ');
|
|
688
783
|
}
|
|
689
784
|
console.log(id + '(' + name + ')');
|
|
690
|
-
console.log(
|
|
785
|
+
console.log(
|
|
786
|
+
'-------------------------------------------------------------------------------------'
|
|
787
|
+
);
|
|
691
788
|
|
|
692
789
|
if (objs.rows[i].value.common.members) {
|
|
693
790
|
console.log(objs.rows[i].value.common.members.join(', '));
|
|
@@ -700,19 +797,30 @@ function List(options) {
|
|
|
700
797
|
|
|
701
798
|
case 'files':
|
|
702
799
|
case 'f':
|
|
703
|
-
objects.getObjectList({startkey: '', endkey: '\u9999'}, (err, objs) => {
|
|
800
|
+
objects.getObjectList({ startkey: '', endkey: '\u9999' }, (err, objs) => {
|
|
704
801
|
const adapter = filter || null;
|
|
705
802
|
const names = filter ? filter.split('/') : null;
|
|
706
803
|
if (names && !names[0]) {
|
|
707
804
|
names.splice(0, 1);
|
|
708
805
|
}
|
|
709
806
|
|
|
710
|
-
const adapters = objs.rows
|
|
807
|
+
const adapters = objs.rows
|
|
808
|
+
.filter(
|
|
809
|
+
row =>
|
|
810
|
+
row.value.type === 'meta' &&
|
|
811
|
+
!(
|
|
812
|
+
adapter &&
|
|
813
|
+
row.value._id !== names[0] &&
|
|
814
|
+
!row.value._id.startsWith(`${names[0]}.`)
|
|
815
|
+
)
|
|
816
|
+
)
|
|
817
|
+
.map(row => row.value._id);
|
|
711
818
|
|
|
712
819
|
names && names.shift();
|
|
713
820
|
|
|
714
821
|
that.listAdaptersFiles(adapters, names ? names.join('/') : null, () =>
|
|
715
|
-
setTimeout(processExit, 1000, null)
|
|
822
|
+
setTimeout(processExit, 1000, null)
|
|
823
|
+
);
|
|
716
824
|
});
|
|
717
825
|
break;
|
|
718
826
|
|
|
@@ -721,7 +829,9 @@ function List(options) {
|
|
|
721
829
|
console.error('Unknown type: ' + type);
|
|
722
830
|
processExit(EXIT_CODES.INVALID_ARGUMENTS);
|
|
723
831
|
} else {
|
|
724
|
-
console.log(
|
|
832
|
+
console.log(
|
|
833
|
+
'Please specify type: objects, states, instances, adapters, users, groups, enums, files'
|
|
834
|
+
);
|
|
725
835
|
processExit();
|
|
726
836
|
}
|
|
727
837
|
break;
|