@iobroker/js-controller-cli 4.0.21 → 4.1.0-alpha.0-20220819-74ceeddc

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.
Files changed (76) hide show
  1. package/build/index.d.ts +89 -0
  2. package/{index.js → build/index.js} +7 -1
  3. package/build/lib/cli/cliCert.d.ts +16 -0
  4. package/build/lib/cli/cliCert.d.ts.map +1 -0
  5. package/{lib → build/lib}/cli/cliCert.js +5 -9
  6. package/build/lib/cli/cliCert.js.map +1 -0
  7. package/build/lib/cli/cliCommand.d.ts +24 -0
  8. package/build/lib/cli/cliCommand.d.ts.map +1 -0
  9. package/{lib → build/lib}/cli/cliCommand.js +2 -5
  10. package/build/lib/cli/cliCommand.js.map +1 -0
  11. package/build/lib/cli/cliCompact.d.ts +26 -0
  12. package/build/lib/cli/cliCompact.d.ts.map +1 -0
  13. package/{lib → build/lib}/cli/cliCompact.js +23 -43
  14. package/build/lib/cli/cliCompact.js.map +1 -0
  15. package/build/lib/cli/cliDebug.d.ts +19 -0
  16. package/build/lib/cli/cliDebug.d.ts.map +1 -0
  17. package/{lib → build/lib}/cli/cliDebug.js +6 -13
  18. package/build/lib/cli/cliDebug.js.map +1 -0
  19. package/build/lib/cli/cliHost.d.ts +36 -0
  20. package/build/lib/cli/cliHost.d.ts.map +1 -0
  21. package/{lib → build/lib}/cli/cliHost.js +22 -47
  22. package/build/lib/cli/cliHost.js.map +1 -0
  23. package/build/lib/cli/cliLogs.d.ts +58 -0
  24. package/build/lib/cli/cliLogs.d.ts.map +1 -0
  25. package/{lib → build/lib}/cli/cliLogs.js +16 -19
  26. package/build/lib/cli/cliLogs.js.map +1 -0
  27. package/build/lib/cli/cliMessage.d.ts +10 -0
  28. package/build/lib/cli/cliMessage.d.ts.map +1 -0
  29. package/{lib → build/lib}/cli/cliMessage.js +5 -7
  30. package/build/lib/cli/cliMessage.js.map +1 -0
  31. package/build/lib/cli/cliObjects.d.ts +105 -0
  32. package/build/lib/cli/cliObjects.d.ts.map +1 -0
  33. package/{lib → build/lib}/cli/cliObjects.js +69 -110
  34. package/build/lib/cli/cliObjects.js.map +1 -0
  35. package/build/lib/cli/cliPlugin.d.ts +23 -0
  36. package/build/lib/cli/cliPlugin.d.ts.map +1 -0
  37. package/{lib → build/lib}/cli/cliPlugin.js +24 -50
  38. package/build/lib/cli/cliPlugin.js.map +1 -0
  39. package/build/lib/cli/cliProcess.d.ts +50 -0
  40. package/build/lib/cli/cliProcess.d.ts.map +1 -0
  41. package/{lib → build/lib}/cli/cliProcess.js +50 -62
  42. package/build/lib/cli/cliProcess.js.map +1 -0
  43. package/build/lib/cli/cliStates.d.ts +51 -0
  44. package/build/lib/cli/cliStates.d.ts.map +1 -0
  45. package/{lib → build/lib}/cli/cliStates.js +64 -86
  46. package/build/lib/cli/cliStates.js.map +1 -0
  47. package/build/lib/cli/cliTools.d.ts +64 -0
  48. package/build/lib/cli/cliTools.d.ts.map +1 -0
  49. package/{lib → build/lib}/cli/cliTools.js +1 -12
  50. package/build/lib/cli/cliTools.js.map +1 -0
  51. package/build/lib/cli/messages.d.ts +53 -0
  52. package/build/lib/cli/messages.d.ts.map +1 -0
  53. package/{lib → build/lib}/cli/messages.js +27 -66
  54. package/build/lib/cli/messages.js.map +1 -0
  55. package/build/lib/setup/setupBackup.d.ts +126 -0
  56. package/build/lib/setup/setupBackup.d.ts.map +1 -0
  57. package/build/lib/setup/setupBackup.js +1031 -0
  58. package/build/lib/setup/setupBackup.js.map +1 -0
  59. package/build/lib/setup/setupInstall.d.ts +23 -0
  60. package/build/lib/setup/setupInstall.d.ts.map +1 -0
  61. package/build/lib/setup/setupInstall.js +1620 -0
  62. package/build/lib/setup/setupInstall.js.map +1 -0
  63. package/build/lib/setup/setupList.d.ts +49 -0
  64. package/build/lib/setup/setupList.d.ts.map +1 -0
  65. package/build/lib/setup/setupList.js +722 -0
  66. package/build/lib/setup/setupList.js.map +1 -0
  67. package/build/lib/setup/setupPacketManager.d.ts +65 -0
  68. package/build/lib/setup/setupPacketManager.d.ts.map +1 -0
  69. package/build/lib/setup/setupPacketManager.js +216 -0
  70. package/build/lib/setup/setupPacketManager.js.map +1 -0
  71. package/build/lib/setup/setupUpload.d.ts +72 -0
  72. package/build/lib/setup/setupUpload.d.ts.map +1 -0
  73. package/build/lib/setup/setupUpload.js +784 -0
  74. package/build/lib/setup/setupUpload.js.map +1 -0
  75. package/package.json +18 -11
  76. package/lib/setup/setupList.js +0 -840
@@ -1,840 +0,0 @@
1
- /**
2
- * List different objects for CLI
3
- *
4
- * Copyright 2013-2022 bluefox <dogafox@gmail.com>
5
- *
6
- * MIT License
7
- *
8
- */
9
-
10
- 'use strict';
11
-
12
- /** @class */
13
- function List(options) {
14
- const that = this;
15
-
16
- options = options || {};
17
-
18
- if (!options.states) {
19
- throw new Error('Invalid Modified arguments: states is missing');
20
- }
21
- if (!options.objects) {
22
- throw new Error('Invalid arguments: objects is missing');
23
- }
24
- if (!options.processExit) {
25
- throw new Error('Invalid arguments: processExit is missing');
26
- }
27
-
28
- const { tools } = require('@iobroker/js-controller-common');
29
- const fs = require('fs-extra');
30
- const { EXIT_CODES } = require('@iobroker/js-controller-common');
31
-
32
- this.config = fs.readJSONSync(tools.getConfigFileName());
33
-
34
- const objects = options.objects;
35
- const states = options.states;
36
- const processExit = options.processExit;
37
-
38
- function perm2str(perm) {
39
- let result = '';
40
- // user
41
- result += perm & 0x400 ? 'r' : '-';
42
- result += perm & 0x200 ? 'w' : '-';
43
- result += perm & 0x100 ? 'x' : '-';
44
- // group
45
- result += perm & 0x040 ? 'r' : '-';
46
- result += perm & 0x020 ? 'w' : '-';
47
- result += perm & 0x010 ? 'x' : '-';
48
- // any
49
- result += perm & 0x004 ? 'r' : '-';
50
- result += perm & 0x002 ? 'w' : '-';
51
- result += perm & 0x001 ? 'x' : '-';
52
- return result;
53
- }
54
-
55
- this.showFileHeader = function (adapter) {
56
- adapter && console.log(`\n-- ${adapter} --`);
57
- console.log(' Modified at |Permission| User | Group | Size | Name');
58
- console.log('----------------+----------+--------------+--------------+------+---------');
59
- };
60
-
61
- this.showFile = (adapter, path, file) => {
62
- //drwxr-xr-x 1 odroid odroid 43 Oct 3 2013 .xsessionrc
63
- let text = '';
64
- let time;
65
- if (file.modifiedAt) {
66
- const ts = new Date(file.modifiedAt);
67
- time = ts.toISOString();
68
- time = time.replace('T', ' ');
69
- time = time.substring(0, 16) + ' ';
70
- } else {
71
- time = new Array(18).join(' ');
72
- }
73
- text += time;
74
-
75
- if (file.acl) {
76
- text += (file.isDir ? 'd' : '-') + perm2str(file.acl.permissions || 0);
77
- let owner = file.acl.owner;
78
- if (owner) {
79
- owner = owner.substring(12);
80
- if (owner.length < 15) {
81
- owner = new Array(15 - owner.length).join(' ') + owner;
82
- }
83
- } else {
84
- owner = new Array(15).join(' ');
85
- }
86
- text += ' ' + owner;
87
- let group = file.acl.ownerGroup;
88
- if (group) {
89
- group = group.substring(13);
90
- if (group.length < 15) {
91
- group = new Array(15 - group.length).join(' ') + group;
92
- }
93
- } else {
94
- group = new Array(15).join(' ');
95
- }
96
-
97
- text += ' ' + group;
98
- } else {
99
- text += (file.isDir ? 'd' : '-') + '?????????' + new Array(31).join(' ');
100
- }
101
- let size = file.stats && file.stats.size ? file.stats.size.toString() : '';
102
- if (size.length < 7) {
103
- size = new Array(7 - size.length).join(' ') + size;
104
- }
105
-
106
- text += ' ' + size + ' ' + adapter + (!path || path[0] === '/' ? '' : '/') + path + '/' + file.file;
107
- if (file.isDir) {
108
- text += '/';
109
- console.log(text);
110
- } else {
111
- console.log(text);
112
- }
113
- };
114
-
115
- this.showObjectHeader = () => {
116
- console.log('ObjectAC | StateAC | User | Group | ID');
117
- console.log('---------+---------+--------------+--------------+--------------');
118
- };
119
-
120
- this.showObject = obj => {
121
- //drwxr-xr-x 1 odroid odroid 43 Oct 3 2013 .xsessionrc
122
- let text = '';
123
- if (obj.acl) {
124
- text +=
125
- perm2str(obj.acl.object || 0) +
126
- ' ' +
127
- (obj.type === 'state' ? perm2str(obj.acl.state || 0) : ' ');
128
- let owner = obj.acl.owner;
129
- if (owner) {
130
- owner = owner.substring(12);
131
- if (owner.length < 15) {
132
- owner = new Array(15 - owner.length).join(' ') + owner;
133
- }
134
- } else {
135
- owner = new Array(15).join(' ');
136
- }
137
- text += ' ' + owner;
138
- let group = obj.acl.ownerGroup;
139
- if (group) {
140
- group = group.substring(13);
141
- if (group.length < 15) {
142
- group = new Array(15 - group.length).join(' ') + group;
143
- }
144
- } else {
145
- group = new Array(15).join(' ');
146
- }
147
- text += ' ' + group;
148
- } else {
149
- text += '?????????' + (obj.type === 'state' ? ' ?????????' : ' ') + new Array(31).join(' ');
150
- }
151
- text += ' ' + obj._id;
152
- console.log(text);
153
- };
154
-
155
- this.listDirectory = (adapter, path, allFiles, callback) => {
156
- if (typeof path === 'function') {
157
- callback = path;
158
- path = '';
159
- allFiles = [];
160
- }
161
- if (typeof allFiles === 'function') {
162
- callback = allFiles;
163
- allFiles = [];
164
- }
165
- allFiles = allFiles || [];
166
-
167
- path = path || '';
168
-
169
- objects.readDir(adapter, path, null, (err, files) => {
170
- if (err && err.code === 'ENOTDIR') {
171
- const pos = path.lastIndexOf('/');
172
- if (pos !== -1) {
173
- const dir = path.substring(0, pos);
174
- const fname = path.substring(pos + 1);
175
- objects.readDir(adapter, dir, null, function (err, files) {
176
- if (err) {
177
- console.log('Cannot read "' + path + '": ' + err);
178
- typeof callback === 'function' && callback(allFiles);
179
- } else {
180
- for (let f = 0; f < files.length; f++) {
181
- if (files[f].file === '.' || files[f].file === '..') {
182
- continue;
183
- }
184
- if (files[f].file === fname) {
185
- allFiles.push({ adapter: adapter, path: path, file: files[f] });
186
- break;
187
- }
188
- }
189
- typeof callback === 'function' && callback(allFiles);
190
- }
191
- });
192
- } else if (typeof callback === 'function') {
193
- callback(allFiles);
194
- }
195
- } else {
196
- let count = 0;
197
- for (let f = 0; f < files.length; f++) {
198
- if (files[f].file === '.' || files[f].file === '..') {
199
- continue;
200
- }
201
- allFiles.push({ adapter: adapter, path: path, file: files[f] });
202
- if (files[f].isDir) {
203
- count++;
204
- that.listDirectory(adapter, path + '/' + files[f].file, allFiles, function () {
205
- if (!--count && callback) {
206
- typeof callback === 'function' && callback(allFiles);
207
- }
208
- });
209
- }
210
- }
211
- if (!count && typeof callback === 'function') {
212
- callback(allFiles);
213
- }
214
- }
215
- });
216
- };
217
-
218
- function sortFiles(a, b) {
219
- let a1 = a.path + a.file.file;
220
- if (a1[0] !== '/') {
221
- a1 = '/' + a1;
222
- }
223
- let b1 = b.path + b.file.file;
224
- if (b1[0] !== '/') {
225
- b1 = '/' + b1;
226
- }
227
- return a1.localeCompare(b1);
228
- }
229
-
230
- this.listAdaptersFiles = (adapters, filter, callback) => {
231
- if (typeof filter === 'function') {
232
- callback = filter;
233
- filter = null;
234
- }
235
- if (filter) {
236
- filter = filter.replace(/\*/g, '');
237
- if (filter[filter.length - 1] === '/') {
238
- filter = filter.substring(0, filter.length - 1);
239
- }
240
- }
241
-
242
- if (adapters && adapters.length) {
243
- const adapter = adapters.shift();
244
- this.listDirectory(adapter, filter, files => {
245
- files.sort(sortFiles);
246
- that.showFileHeader(adapter);
247
-
248
- files
249
- .filter(f => !filter || (f.path + '/' + f.file.file).startsWith(filter))
250
- .forEach(f => that.showFile(f.adapter, f.path, f.file));
251
-
252
- that.listAdaptersFiles(adapters, callback);
253
- });
254
- } else {
255
- typeof callback === 'function' && callback();
256
- }
257
- };
258
-
259
- function readOnlineState(lines, flags, cb, _result) {
260
- _result = _result || [];
261
- if (!lines || !lines.length) {
262
- cb(_result);
263
- } else {
264
- const task = lines.shift();
265
- const id = task.id + '.alive';
266
- states.getState(id, (err, state) => {
267
- if (state && state.val) {
268
- _result.push('+ ' + task.value);
269
- } else if (!flags.alive) {
270
- _result.push(' ' + task.value);
271
- }
272
- setImmediate(readOnlineState, lines, flags, cb, _result);
273
- });
274
- }
275
- }
276
-
277
- this.list = (type, filter, flags) => {
278
- objects.getObject('system.config', (err, systemConf) => {
279
- const lang = (systemConf && systemConf.common && systemConf.common.language) || 'en';
280
- switch (type) {
281
- case 'objects':
282
- case 'o':
283
- objects.getObjectList(null, (err, objs) => {
284
- const reg = filter ? new RegExp(tools.pattern2RegEx(filter)) : null;
285
- for (let i = 0; i < objs.rows.length; i++) {
286
- let name =
287
- objs.rows[i].value && objs.rows[i].value.common && objs.rows[i].value.common.name;
288
- if (tools.isObject(name)) {
289
- name = name[lang] || name.en;
290
- }
291
- if (
292
- !reg ||
293
- reg.test(objs.rows[i].value._id) ||
294
- (objs.rows[i].value.common && reg.test(name))
295
- ) {
296
- if (objs.rows[i].value.type) {
297
- let id = objs.rows[i].value._id;
298
- let type = objs.rows[i].value.type;
299
- if (id.length < 40) {
300
- id += new Array(40 - id.length).join(' ');
301
- }
302
- if (type.length < 10) {
303
- type += new Array(10 - type.length).join(' ');
304
- }
305
-
306
- console.log(id + ': ' + type + ' - ' + (name || ''));
307
- } else {
308
- console.log(objs.rows[i].value._id);
309
- }
310
- }
311
- }
312
- processExit();
313
- });
314
- break;
315
-
316
- case 'states':
317
- case 's':
318
- states.getKeys(filter || '*', (err, keys) => {
319
- if (err) {
320
- console.error(err);
321
- return void processExit(EXIT_CODES.CANNOT_GET_STATES);
322
- }
323
- states.getStates(keys, (err, states) => {
324
- if (err) {
325
- console.error(err);
326
- return void processExit(EXIT_CODES.CANNOT_GET_STATES);
327
- }
328
- for (let i = 0; i < states.length; i++) {
329
- let id = keys[i];
330
- let from = states[i].from || '';
331
- let type = typeof states[i].val;
332
- if (type.length < 10) {
333
- type += new Array(10 - type.length).join(' ');
334
- }
335
- if (id.length < 40) {
336
- id += new Array(40 - id.length).join(' ');
337
- }
338
- if (from.length < 30) {
339
- from += new Array(30 - from.length).join(' ');
340
- }
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
- );
352
- }
353
- processExit();
354
- });
355
- });
356
- break;
357
-
358
- case 'adapters':
359
- case 'a':
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;
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
- }
384
-
385
- const text = id + ': ' + name + ' - v' + objs.rows[i].value.common.version;
386
-
387
- console.log(text);
388
- }
389
- }
390
- processExit();
391
- }
392
- );
393
- break;
394
-
395
- case 'instances':
396
- case 'i':
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') {
412
- continue;
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
- }
434
-
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
- }
447
-
448
- if (host && host.length < 40) {
449
- host = host.padEnd(40);
450
- }
451
-
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
- }
467
-
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 });
481
- }
482
- }
483
- readOnlineState(lines, flags, result => {
484
- console.log(result.join('\n'));
485
- console.log('\n+ instance is alive');
486
- processExit();
487
- });
488
- }
489
- );
490
- break;
491
-
492
- case 'users':
493
- case 'u':
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;
506
- }
507
-
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
- }
542
- }
543
- console.log(text + ' ' + gs.join(', '));
544
- }
545
- }
546
- processExit();
547
- }
548
- );
549
- });
550
- break;
551
-
552
- case 'groups':
553
- case 'g':
554
- objects.getObjectList({ startkey: 'system.group.', endkey: 'system.group.\u9999' }, (err, objs) => {
555
- const reg = filter ? new RegExp(tools.pattern2RegEx('system.group.' + filter)) : null;
556
- console.log('');
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
- );
566
- for (let i = 0; i < objs.rows.length; i++) {
567
- if (objs.rows[i].value.type !== 'group') {
568
- continue;
569
- }
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);
576
- //let name = objs.rows[i].value.common.name;
577
-
578
- if (id === 'administrator') {
579
- objs.rows[i].value.common.acl = {
580
- file: {
581
- read: true,
582
- write: true,
583
- delete: true,
584
- create: true,
585
- list: true
586
- },
587
- object: {
588
- read: true,
589
- write: true,
590
- delete: true,
591
- list: true
592
- },
593
- state: {
594
- read: true,
595
- write: true,
596
- delete: true,
597
- create: true,
598
- list: true
599
- },
600
- user: {
601
- write: true,
602
- create: true,
603
- delete: true
604
- },
605
- other: {
606
- execute: true,
607
- http: true,
608
- sendto: true
609
- }
610
- };
611
- }
612
-
613
- if (id.length < 20) {
614
- id += new Array(20 - id.length).join(' ');
615
- }
616
- let text = id;
617
- text += ' | ';
618
- if (objs.rows[i].value.common.acl && objs.rows[i].value.common.acl.object) {
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 ? '+' : '-') + ' ';
623
- text += '|';
624
- } else {
625
- text += ' |';
626
- }
627
- if (objs.rows[i].value.common.acl && objs.rows[i].value.common.acl.state) {
628
- text += ' ';
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 ? '+' : '-') + ' ';
633
- text += '|';
634
- } else {
635
- text += ' |';
636
- }
637
- if (objs.rows[i].value.common.acl && objs.rows[i].value.common.acl.file) {
638
- text += ' ';
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 ? '+' : '-') + ' ';
644
- text += '|';
645
- } else {
646
- text += ' |';
647
- }
648
- if (objs.rows[i].value.common.acl && objs.rows[i].value.common.acl.users) {
649
- text += ' ';
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 ? '+' : '-') + ' ';
653
- text += '|';
654
- } else {
655
- text += ' |';
656
- }
657
- if (objs.rows[i].value.common.acl && objs.rows[i].value.common.acl.other) {
658
- text += ' ';
659
- let others = '';
660
- for (const r of Object.keys(objs.rows[i].value.common.acl.other)) {
661
- others += r + (objs.rows[i].value.common.acl.other[r] ? '+' : '-') + ' ';
662
- }
663
- if (others.length < 23) {
664
- others += new Array(23 - others.length).join(' ');
665
- }
666
- text += others + '|';
667
- } else {
668
- text += new Array(25).join(' ') + '|';
669
- }
670
-
671
- //if (name.length < 30) name += new Array(30 - name.length).join(' ');
672
- if (objs.rows[i].value.common.members) {
673
- for (let m = 0; m < objs.rows[i].value.common.members.length; m++) {
674
- objs.rows[i].value.common.members[m] =
675
- objs.rows[i].value.common.members[m].substring(12);
676
- }
677
- text += ' ' + objs.rows[i].value.common.members.join(', ');
678
- }
679
- //text += '| (' + name + ')';
680
- console.log(text);
681
- }
682
- }
683
-
684
- console.log(
685
- '--------------------+---------+---------+-----------+-------+------------------------+---------'
686
- );
687
- console.log('Legend: (l)ist, (r)ead, (w)rite, (c)reate, (d)elete');
688
- processExit();
689
- });
690
- break;
691
-
692
- case 'h':
693
- case 'hosts':
694
- objects.getObjectList({ startkey: 'system.host.', endkey: 'system.host.\u9999' }, (err, objs) => {
695
- states.getKeys('system.host.*', (err, keys) => {
696
- states.getStates(keys, (err, states) => {
697
- const reg = filter ? new RegExp(tools.pattern2RegEx('system.host.' + filter)) : null;
698
-
699
- for (let i = 0; i < objs.rows.length; i++) {
700
- if (objs.rows[i].value.type !== 'host') {
701
- continue;
702
- }
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);
709
- let name = objs.rows[i].value.common.name;
710
- if (typeof name === 'object') {
711
- name = name[lang] || name.en;
712
- }
713
- if (id.length < 20) {
714
- id += new Array(20 - id.length).join(' ');
715
- }
716
- let hostname = objs.rows[i].value.common.hostname;
717
- if (hostname.length < 15) {
718
- hostname += new Array(15 - hostname.length).join(' ');
719
- }
720
- const version = objs.rows[i].value.common.installedVersion;
721
- let alive = '';
722
- let uptime = '';
723
- for (let k = 0; k < keys.length; k++) {
724
- if (keys[k] === objs.rows[i].value._id + '.alive') {
725
- alive = states[k].val;
726
- }
727
- if (keys[k] === objs.rows[i].value._id + '.uptime') {
728
- uptime = states[k].val;
729
- }
730
- }
731
- alive = alive ? 'alive' : ' dead';
732
- //if (uptime.toString().length < 10) uptime = new Array(10 - uptime.toString().length).join(' ') + uptime.toString();
733
- if (!uptime) {
734
- uptime = '-';
735
- }
736
- const text =
737
- id +
738
- ' ' +
739
- name +
740
- ' (version: ' +
741
- version +
742
- ', hostname: ' +
743
- hostname +
744
- ', ' +
745
- alive +
746
- ', uptime: ' +
747
- uptime +
748
- ')';
749
- // todo
750
- console.log(text);
751
- }
752
- }
753
-
754
- processExit();
755
- });
756
- });
757
- });
758
- break;
759
-
760
- case 'enums':
761
- case 'e':
762
- objects.getObjectList({ startkey: 'enum.', endkey: 'enum.\u9999' }, (err, objs) => {
763
- const reg = filter ? new RegExp(tools.pattern2RegEx('enum.' + filter)) : null;
764
- for (let i = 0; i < objs.rows.length; i++) {
765
- if (objs.rows[i].value.type !== 'enum') {
766
- continue;
767
- }
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);
777
- let name = objs.rows[i].value.common.name;
778
- if (typeof name === 'object') {
779
- name = name[lang] || name.en;
780
- }
781
- if (id.length < 20) {
782
- id += new Array(20 - id.length).join(' ');
783
- }
784
- console.log(id + '(' + name + ')');
785
- console.log(
786
- '-------------------------------------------------------------------------------------'
787
- );
788
-
789
- if (objs.rows[i].value.common.members) {
790
- console.log(objs.rows[i].value.common.members.join(', '));
791
- }
792
- }
793
- }
794
- processExit();
795
- });
796
- break;
797
-
798
- case 'files':
799
- case 'f':
800
- objects.getObjectList({ startkey: '', endkey: '\u9999' }, (err, objs) => {
801
- const adapter = filter || null;
802
- const names = filter ? filter.split('/') : null;
803
- if (names && !names[0]) {
804
- names.splice(0, 1);
805
- }
806
-
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);
818
-
819
- names && names.shift();
820
-
821
- that.listAdaptersFiles(adapters, names ? names.join('/') : null, () => processExit());
822
- });
823
- break;
824
-
825
- default:
826
- if (type) {
827
- console.error('Unknown type: ' + type);
828
- return void processExit(EXIT_CODES.INVALID_ARGUMENTS);
829
- } else {
830
- console.log(
831
- 'Please specify type: objects, states, instances, adapters, users, groups, enums, files'
832
- );
833
- return void processExit();
834
- }
835
- }
836
- });
837
- };
838
- }
839
-
840
- module.exports = List;