iobroker.bee 0.2.0 → 0.2.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/README.md +26 -3
- package/admin/jsonConfig.json +17 -3
- package/build/lib/commands.js +105 -0
- package/build/lib/commands.js.map +1 -0
- package/build/lib/console.js +218 -0
- package/build/lib/console.js.map +1 -0
- package/build/lib/instances.js +67 -0
- package/build/lib/instances.js.map +1 -0
- package/build/lib/inventory.js +14 -2
- package/build/lib/inventory.js.map +1 -1
- package/build/lib/protocol.js +18 -3
- package/build/lib/protocol.js.map +1 -1
- package/build/lib/remote.js +6 -2
- package/build/lib/remote.js.map +1 -1
- package/build/lib/transport.js.map +1 -1
- package/build/lib/tunnel.js +58 -2
- package/build/lib/tunnel.js.map +1 -1
- package/build/main.js +195 -7
- package/build/main.js.map +1 -1
- package/io-package.json +11 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/lib/protocol.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/lib/protocol.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAMH,kCAEC;AAED,oCAEC;AASD,4CAWC;AAkHD,wCAMC;AAtJY,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAIlC,SAAgB,WAAW,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAAY;IACxE,OAAO,SAAS,QAAQ,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;AACpD,CAAC;AAED,SAAgB,YAAY,CAAC,QAAgB;IACzC,OAAO,SAAS,QAAQ,UAAU,CAAC;AACvC,CAAC;AAED,kFAAkF;AACrE,QAAA,kBAAkB,GAAG,GAAG,CAAC;AAEtC;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,CAAC,GAAG,KAAK;SACV,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;SACzB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,0BAAkB,CAAC;SAC5B,IAAI,EAAE,CAAC;IACZ,OAAO,CAAC,IAAI,SAAS,CAAC;AAC1B,CAAC;AA8GD;;;GAGG;AACH,SAAgB,cAAc,CAAC,IAAY;IACvC,MAAM,CAAC,GAAG,uEAAuE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACpG,IAAI,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,iEAAiE;AACpD,QAAA,WAAW,GAAG,gCAAgC,CAAC;AAwG/C,QAAA,YAAY,GAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAetE,0DAA0D;AAC7C,QAAA,WAAW,GAAG,SAAS,CAAC;AAyBxB,QAAA,mBAAmB,GAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC"}
|
package/build/lib/remote.js
CHANGED
|
@@ -12,13 +12,13 @@ const node_net_1 = __importDefault(require("node:net"));
|
|
|
12
12
|
const node_tls_1 = __importDefault(require("node:tls"));
|
|
13
13
|
const ws_1 = __importDefault(require("ws"));
|
|
14
14
|
const tunnel_1 = require("./tunnel");
|
|
15
|
-
exports.ACCESS_LABEL = { admin: 'admin', vis: 'vis-2' };
|
|
15
|
+
exports.ACCESS_LABEL = { admin: 'admin', vis: 'vis-2', console: 'Konsole' };
|
|
16
16
|
/**
|
|
17
17
|
* Local web interfaces for a kind: the enabled admin instances, or web instances for vis-2 (only with vis-2
|
|
18
18
|
* installed), on this host, in the order of the instance number.
|
|
19
19
|
*/
|
|
20
20
|
async function findTargets(adapter, kind) {
|
|
21
|
-
if (kind === 'vis' && !(await adapter.getForeignObjectAsync('system.adapter.vis-2'))) {
|
|
21
|
+
if (kind === 'console' || (kind === 'vis' && !(await adapter.getForeignObjectAsync('system.adapter.vis-2')))) {
|
|
22
22
|
return [];
|
|
23
23
|
}
|
|
24
24
|
const name = kind === 'admin' ? 'admin' : 'web';
|
|
@@ -187,6 +187,10 @@ class TunnelClient {
|
|
|
187
187
|
});
|
|
188
188
|
}
|
|
189
189
|
onStream(stream) {
|
|
190
|
+
if (this.opts.handler) {
|
|
191
|
+
this.opts.handler(stream);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
190
194
|
const t = this.opts.target;
|
|
191
195
|
if (!t) {
|
|
192
196
|
stream.destroy(new Error('no target'));
|
package/build/lib/remote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/lib/remote.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/lib/remote.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/lib/transport.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/lib/transport.ts"],"names":[],"mappings":"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"}
|
package/build/lib/tunnel.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Mux = exports.TunnelStream = exports.CLOSE = exports.REFUSE_HEADER = exports.MAX_PAYLOAD = exports.WINDOW = exports.FRAME = void 0;
|
|
3
|
+
exports.Mux = exports.TunnelStream = exports.ConsoleReader = exports.CONSOLE = exports.CLOSE = exports.REFUSE_HEADER = exports.MAX_PAYLOAD = exports.WINDOW = exports.FRAME = void 0;
|
|
4
|
+
exports.consoleMessage = consoleMessage;
|
|
5
|
+
exports.resizeMessage = resizeMessage;
|
|
4
6
|
/**
|
|
5
7
|
* Stream multiplexer of the remote access tunnel.
|
|
6
8
|
*
|
|
@@ -12,7 +14,8 @@ exports.Mux = exports.TunnelStream = exports.CLOSE = exports.REFUSE_HEADER = exp
|
|
|
12
14
|
*
|
|
13
15
|
* type (1 byte) | stream id (4 bytes, big endian) | payload
|
|
14
16
|
*
|
|
15
|
-
* OPEN server -> agent new stream; the agent connects it to the local web interface
|
|
17
|
+
* OPEN server -> agent new stream; the agent connects it to the local web interface, or starts a shell
|
|
18
|
+
* (console, see CONSOLE)
|
|
16
19
|
* DATA both bytes of the stream, at most MAX_PAYLOAD
|
|
17
20
|
* END both no more bytes in this direction (half close)
|
|
18
21
|
* RESET both abort; payload: reason (UTF-8)
|
|
@@ -43,6 +46,59 @@ exports.CLOSE = {
|
|
|
43
46
|
/** Another connection of the same session took over */
|
|
44
47
|
REPLACED: 4009,
|
|
45
48
|
};
|
|
49
|
+
/**
|
|
50
|
+
* A stream of a console session carries messages instead of raw bytes, because besides the bytes of the
|
|
51
|
+
* terminal the size of the window travels too:
|
|
52
|
+
*
|
|
53
|
+
* type (1 byte) | length (4 bytes, big endian) | payload
|
|
54
|
+
*
|
|
55
|
+
* DATA both bytes of the terminal: input of the browser, output of the shell
|
|
56
|
+
* RESIZE server -> agent columns (2 bytes) | rows (2 bytes)
|
|
57
|
+
* EXIT agent -> server the shell ended; payload: exit code or signal (UTF-8)
|
|
58
|
+
*/
|
|
59
|
+
exports.CONSOLE = { DATA: 1, RESIZE: 2, EXIT: 3 };
|
|
60
|
+
const MAX_CONSOLE_MESSAGE = 1024 * 1024;
|
|
61
|
+
function consoleMessage(type, payload = Buffer.alloc(0)) {
|
|
62
|
+
const buf = Buffer.allocUnsafe(5 + payload.length);
|
|
63
|
+
buf[0] = type;
|
|
64
|
+
buf.writeUInt32BE(payload.length, 1);
|
|
65
|
+
payload.copy(buf, 5);
|
|
66
|
+
return buf;
|
|
67
|
+
}
|
|
68
|
+
function resizeMessage(cols, rows) {
|
|
69
|
+
const payload = Buffer.allocUnsafe(4);
|
|
70
|
+
payload.writeUInt16BE(cols, 0);
|
|
71
|
+
payload.writeUInt16BE(rows, 2);
|
|
72
|
+
return consoleMessage(exports.CONSOLE.RESIZE, payload);
|
|
73
|
+
}
|
|
74
|
+
/** Splits the bytes of a console stream into messages */
|
|
75
|
+
class ConsoleReader {
|
|
76
|
+
onMessage;
|
|
77
|
+
buf = Buffer.alloc(0);
|
|
78
|
+
constructor(onMessage) {
|
|
79
|
+
this.onMessage = onMessage;
|
|
80
|
+
}
|
|
81
|
+
/** @returns false if the stream is broken (message too large); then nothing more comes out */
|
|
82
|
+
push(chunk) {
|
|
83
|
+
this.buf = this.buf.length ? Buffer.concat([this.buf, chunk]) : chunk;
|
|
84
|
+
while (this.buf.length >= 5) {
|
|
85
|
+
const length = this.buf.readUInt32BE(1);
|
|
86
|
+
if (length > MAX_CONSOLE_MESSAGE) {
|
|
87
|
+
this.buf = Buffer.alloc(0);
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
if (this.buf.length < 5 + length) {
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
const type = this.buf[0];
|
|
94
|
+
const payload = this.buf.subarray(5, 5 + length);
|
|
95
|
+
this.buf = this.buf.subarray(5 + length);
|
|
96
|
+
this.onMessage(type, payload);
|
|
97
|
+
}
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.ConsoleReader = ConsoleReader;
|
|
46
102
|
function frame(type, id, payload) {
|
|
47
103
|
const buf = Buffer.allocUnsafe(5 + (payload?.length ?? 0));
|
|
48
104
|
buf[0] = type;
|
package/build/lib/tunnel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/lib/tunnel.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/lib/tunnel.ts"],"names":[],"mappings":"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"}
|
package/build/main.js
CHANGED
|
@@ -40,6 +40,9 @@ const utils = __importStar(require("@iobroker/adapter-core"));
|
|
|
40
40
|
const node_fs_1 = require("node:fs");
|
|
41
41
|
const node_os_1 = __importDefault(require("node:os"));
|
|
42
42
|
const node_path_1 = require("node:path");
|
|
43
|
+
const commands_1 = require("./lib/commands");
|
|
44
|
+
const console_1 = require("./lib/console");
|
|
45
|
+
const instances_1 = require("./lib/instances");
|
|
43
46
|
const enrollment_1 = require("./lib/enrollment");
|
|
44
47
|
const inventory_1 = require("./lib/inventory");
|
|
45
48
|
const jobs_1 = require("./lib/jobs");
|
|
@@ -49,6 +52,7 @@ const preflight_1 = require("./lib/preflight");
|
|
|
49
52
|
const protocol_1 = require("./lib/protocol");
|
|
50
53
|
const remote_1 = require("./lib/remote");
|
|
51
54
|
const transport_1 = require("./lib/transport");
|
|
55
|
+
const tunnel_1 = require("./lib/tunnel");
|
|
52
56
|
const util_1 = require("./lib/util");
|
|
53
57
|
class BeeAdapter extends utils.Adapter {
|
|
54
58
|
dataDir = '';
|
|
@@ -67,10 +71,14 @@ class BeeAdapter extends utils.Adapter {
|
|
|
67
71
|
errorLog = [];
|
|
68
72
|
errorsSinceHeartbeat = 0;
|
|
69
73
|
reconciling = false;
|
|
74
|
+
/** A command of the fleet management is being carried out (one at a time) */
|
|
75
|
+
commandRunning = false;
|
|
70
76
|
lastWaitReason = '';
|
|
71
77
|
unloading = false;
|
|
72
78
|
/** Open remote access sessions by session id */
|
|
73
79
|
tunnels = new Map();
|
|
80
|
+
/** Running shells of the console per session */
|
|
81
|
+
shells = new Map();
|
|
74
82
|
constructor(options = {}) {
|
|
75
83
|
super({ ...options, name: 'bee' });
|
|
76
84
|
this.on('ready', () => this.onReady());
|
|
@@ -251,6 +259,115 @@ class BeeAdapter extends utils.Adapter {
|
|
|
251
259
|
else if (msg.cmd === 'tunnel' && msg.tunnel) {
|
|
252
260
|
await this.openTunnel(msg.tunnel, false);
|
|
253
261
|
}
|
|
262
|
+
else if (msg.ref && (msg.cmd === 'instance' || msg.cmd === 'restart' || msg.cmd === 'osUpgrade')) {
|
|
263
|
+
await this.runCommand(msg);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// ------------------------------------------------------------------ commands of the fleet management
|
|
267
|
+
async reply(ref, state, message) {
|
|
268
|
+
const msg = { v: protocol_1.PROTOCOL_VERSION, ts: Date.now(), ref, state, ...(message ? { message } : {}) };
|
|
269
|
+
await this.transport?.publish('reply', msg);
|
|
270
|
+
}
|
|
271
|
+
/** Sends the inventory again a while after a command, when the instances show its effect */
|
|
272
|
+
inventorySoon() {
|
|
273
|
+
for (const ms of [5_000, 30_000]) {
|
|
274
|
+
this.timers.push(setTimeout(() => void this.sendInventory(false), ms));
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
async runCommand(msg) {
|
|
278
|
+
const ref = msg.ref;
|
|
279
|
+
const by = msg.by || 'Flottenverwaltung';
|
|
280
|
+
if (this.reconciling || this.jobs?.isActive()) {
|
|
281
|
+
await this.reply(ref, 'error', 'Während eines Auftrags (Update) nicht möglich');
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
if (this.commandRunning) {
|
|
285
|
+
await this.reply(ref, 'error', 'Es läuft schon ein Befehl');
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
this.commandRunning = true;
|
|
289
|
+
try {
|
|
290
|
+
if (msg.cmd === 'instance') {
|
|
291
|
+
await this.instanceCommand(ref, by, msg.instance);
|
|
292
|
+
}
|
|
293
|
+
else if (msg.cmd === 'restart') {
|
|
294
|
+
this.log.warn(`Restart of ioBroker on request of ${by} (fleet management)`);
|
|
295
|
+
// the answer goes out first, the restart takes the agent down too
|
|
296
|
+
await this.reply(ref, 'done', 'ioBroker startet neu');
|
|
297
|
+
this.sendToHost(`system.host.${this.host}`, 'restartController', {});
|
|
298
|
+
}
|
|
299
|
+
else if (msg.cmd === 'osUpgrade') {
|
|
300
|
+
await this.osUpgradeCommand(ref, by, msg.osUpgrade);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
catch (e) {
|
|
304
|
+
this.log.warn(`Command ${msg.cmd} of ${by} failed: ${e.message}`);
|
|
305
|
+
await this.reply(ref, 'error', e.message);
|
|
306
|
+
}
|
|
307
|
+
finally {
|
|
308
|
+
this.commandRunning = false;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/** Start, stop or restart an instance on this host, the same way admin does it */
|
|
312
|
+
async instanceCommand(ref, by, req) {
|
|
313
|
+
const id = req?.id;
|
|
314
|
+
const action = req?.action;
|
|
315
|
+
const objId = `system.adapter.${id}`;
|
|
316
|
+
const obj = typeof id === 'string' && /^[\w.-]+$/.test(id) ? await this.getForeignObjectAsync(objId) : null;
|
|
317
|
+
const refusal = (0, commands_1.instanceRefusal)(id, action, this.namespace, obj, this.host || '');
|
|
318
|
+
if (refusal || !req) {
|
|
319
|
+
await this.reply(ref, 'error', refusal || 'Instanz fehlt');
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
this.log.info(`Instance ${req.id}: ${req.action} on request of ${by} (fleet management)`);
|
|
323
|
+
const own = req.id === this.namespace;
|
|
324
|
+
if (own) {
|
|
325
|
+
// a restart of this instance ends this process: answer first
|
|
326
|
+
await this.reply(ref, 'done', `${req.id} startet neu`);
|
|
327
|
+
}
|
|
328
|
+
await this.extendForeignObjectAsync(objId, req.action === 'restart' ? {} : { common: { enabled: req.action === 'start' } });
|
|
329
|
+
if (!own) {
|
|
330
|
+
await this.reply(ref, 'done', `${req.id} ${commands_1.ACTION_DONE[req.action]}`);
|
|
331
|
+
this.inventorySoon();
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
/** Upgrade OS packages through js-controller, only those it listed itself */
|
|
335
|
+
async osUpgradeCommand(ref, by, req) {
|
|
336
|
+
const host = `system.host.${this.host}`;
|
|
337
|
+
const hostObj = await this.getForeignObjectAsync(host);
|
|
338
|
+
if (!(0, commands_1.supportedCommands)(String(hostObj?.common?.installedVersion || '')).includes('osUpgrade')) {
|
|
339
|
+
await this.reply(ref, 'error', 'OS-Updates brauchen Linux und js-controller ab 6');
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
const listed = (0, commands_1.osUpdatesFrom)(await this.getForeignStateAsync(`${host}.osPackageUpdates`), false)?.packages ?? [];
|
|
343
|
+
const { packages, unknown } = (0, commands_1.chooseOsPackages)(listed, req?.packages);
|
|
344
|
+
if (!packages.length || unknown.length) {
|
|
345
|
+
await this.reply(ref, 'error', unknown.length ? `Nicht als aktualisierbar gelistet: ${unknown.join(', ')}` : 'Keine Pakete angegeben');
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
const names = packages.map(p => p.name).join(', ');
|
|
349
|
+
this.log.warn(`Upgrade of OS packages ${names} on request of ${by} (fleet management)`);
|
|
350
|
+
await this.reply(ref, 'running', `apt: ${names}`);
|
|
351
|
+
// js-controller runs apt (with sudo if it is not root) and answers when it is through
|
|
352
|
+
const answer = (await Promise.race([
|
|
353
|
+
this.sendToHostAsync(host, 'upgradeOsPackages', {
|
|
354
|
+
packages: packages.map(p => ({ name: p.name })),
|
|
355
|
+
restart: !!req?.restart,
|
|
356
|
+
}),
|
|
357
|
+
new Promise(resolve => {
|
|
358
|
+
this.timers.push(setTimeout(() => resolve({ error: 'Keine Antwort von js-controller nach 30 Minuten' }), 30 * 60_000));
|
|
359
|
+
}),
|
|
360
|
+
]));
|
|
361
|
+
if (answer?.success) {
|
|
362
|
+
this.log.info(`OS packages upgraded: ${names}`);
|
|
363
|
+
await this.reply(ref, 'done', `${packages.length} ${packages.length === 1 ? 'Paket' : 'Pakete'} aktualisiert${req?.restart ? ', ioBroker startet neu' : ''}`);
|
|
364
|
+
this.inventorySoon();
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
const error = answer?.error || 'js-controller meldet einen Fehler';
|
|
368
|
+
this.log.warn(`OS upgrade failed: ${error}`);
|
|
369
|
+
await this.reply(ref, 'error', error);
|
|
370
|
+
}
|
|
254
371
|
}
|
|
255
372
|
// ------------------------------------------------------------------ remote access
|
|
256
373
|
/** Kinds of remote access the owner allows in the instance settings */
|
|
@@ -262,8 +379,41 @@ class BeeAdapter extends utils.Adapter {
|
|
|
262
379
|
if (this.config.allowVis !== false) {
|
|
263
380
|
kinds.push('vis');
|
|
264
381
|
}
|
|
382
|
+
if (this.config.allowConsole === true && (0, console_1.findScript)()) {
|
|
383
|
+
kinds.push('console');
|
|
384
|
+
}
|
|
265
385
|
return kinds;
|
|
266
386
|
}
|
|
387
|
+
/** One shell for a stream of a console session, at most MAX_SHELLS at the same time */
|
|
388
|
+
openShell(t, stream) {
|
|
389
|
+
const running = this.shells.get(t.id) ?? 0;
|
|
390
|
+
if (running >= console_1.MAX_SHELLS) {
|
|
391
|
+
stream.end(Buffer.concat([
|
|
392
|
+
(0, tunnel_1.consoleMessage)(tunnel_1.CONSOLE.DATA, Buffer.from(`Höchstens ${console_1.MAX_SHELLS} Shells je Sitzung.\r\n`)),
|
|
393
|
+
(0, tunnel_1.consoleMessage)(tunnel_1.CONSOLE.EXIT, Buffer.from('zu viele Shells')),
|
|
394
|
+
]));
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
this.shells.set(t.id, running + 1);
|
|
398
|
+
void this.updateAccessStates();
|
|
399
|
+
(0, console_1.startShell)(stream, {
|
|
400
|
+
cwd: (0, node_path_1.join)(utils.controllerDir, '..', '..'),
|
|
401
|
+
log: this.log,
|
|
402
|
+
by: t.by,
|
|
403
|
+
onEnd: () => {
|
|
404
|
+
const n = (this.shells.get(t.id) ?? 1) - 1;
|
|
405
|
+
if (n > 0) {
|
|
406
|
+
this.shells.set(t.id, n);
|
|
407
|
+
}
|
|
408
|
+
else {
|
|
409
|
+
this.shells.delete(t.id);
|
|
410
|
+
}
|
|
411
|
+
if (!this.unloading) {
|
|
412
|
+
void this.updateAccessStates();
|
|
413
|
+
}
|
|
414
|
+
},
|
|
415
|
+
});
|
|
416
|
+
}
|
|
267
417
|
/**
|
|
268
418
|
* Opens the tunnel of an access session, or refuses it with a reason the operator sees.
|
|
269
419
|
*
|
|
@@ -281,8 +431,18 @@ class BeeAdapter extends utils.Adapter {
|
|
|
281
431
|
}
|
|
282
432
|
let refusal = null;
|
|
283
433
|
let target = null;
|
|
434
|
+
const isConsole = t.kind === 'console';
|
|
284
435
|
if (!this.allowedAccess().includes(t.kind)) {
|
|
285
|
-
refusal =
|
|
436
|
+
refusal = !isConsole
|
|
437
|
+
? `Fernzugriff auf ${remote_1.ACCESS_LABEL[t.kind]} ist am Gerät abgeschaltet`
|
|
438
|
+
: this.config.allowConsole === true
|
|
439
|
+
? 'Die Konsole braucht Linux mit script (util-linux)'
|
|
440
|
+
: 'Die Konsole ist am Gerät nicht freigegeben';
|
|
441
|
+
}
|
|
442
|
+
else if (isConsole) {
|
|
443
|
+
if (this.tunnels.size >= 4) {
|
|
444
|
+
refusal = 'Zu viele gleichzeitige Fernzugriffe auf dem Gerät';
|
|
445
|
+
}
|
|
286
446
|
}
|
|
287
447
|
else {
|
|
288
448
|
// only an instance of this kind on this host, whatever the server asks for
|
|
@@ -298,12 +458,14 @@ class BeeAdapter extends utils.Adapter {
|
|
|
298
458
|
}
|
|
299
459
|
const client = new remote_1.TunnelClient(t, {
|
|
300
460
|
target,
|
|
461
|
+
...(isConsole && !refusal ? { handler: (stream) => this.openShell(t, stream) } : {}),
|
|
301
462
|
refusal,
|
|
302
463
|
ca: (0, transport_1.trustedCas)(this.creds?.ca || ''),
|
|
303
464
|
log: this.log,
|
|
304
465
|
onEnd: (c, reason) => {
|
|
305
466
|
if (this.tunnels.get(t.id) === c) {
|
|
306
467
|
this.tunnels.delete(t.id);
|
|
468
|
+
this.shells.delete(t.id);
|
|
307
469
|
this.log.info(`Remote access to ${remote_1.ACCESS_LABEL[t.kind]} by ${t.by} ended (${reason})`);
|
|
308
470
|
}
|
|
309
471
|
if (!this.unloading) {
|
|
@@ -317,7 +479,7 @@ class BeeAdapter extends utils.Adapter {
|
|
|
317
479
|
}
|
|
318
480
|
else {
|
|
319
481
|
this.tunnels.set(t.id, client);
|
|
320
|
-
this.log.info(`Remote access to ${remote_1.ACCESS_LABEL[t.kind]} (${target.instance}) ${resumed ? 'resumed' : 'opened'} by ${t.by} until ${new Date(t.expiresAt).toLocaleTimeString()}: ${t.purpose}`);
|
|
482
|
+
this.log.info(`Remote access to ${remote_1.ACCESS_LABEL[t.kind]}${target ? ` (${target.instance})` : ''} ${resumed ? 'resumed' : 'opened'} by ${t.by} until ${new Date(t.expiresAt).toLocaleTimeString()}: ${t.purpose}`);
|
|
321
483
|
}
|
|
322
484
|
client.start();
|
|
323
485
|
await this.saveTunnels();
|
|
@@ -326,12 +488,20 @@ class BeeAdapter extends utils.Adapter {
|
|
|
326
488
|
async saveTunnels() {
|
|
327
489
|
await (0, util_1.writeJsonAtomic)((0, node_path_1.join)(this.dataDir, 'tunnels.json'), [...this.tunnels.values()].map(c => c.req));
|
|
328
490
|
}
|
|
491
|
+
/** " (2 Shells offen)" for a console */
|
|
492
|
+
shellText(t) {
|
|
493
|
+
if (t.kind !== 'console') {
|
|
494
|
+
return '';
|
|
495
|
+
}
|
|
496
|
+
const n = this.shells.get(t.id) ?? 0;
|
|
497
|
+
return n ? ` (${n} ${n === 1 ? 'Shell' : 'Shells'} offen)` : '';
|
|
498
|
+
}
|
|
329
499
|
/** Shows the owner who is connected right now, and why */
|
|
330
500
|
async updateAccessStates() {
|
|
331
501
|
const active = [...this.tunnels.values()].map(c => c.req);
|
|
332
502
|
await this.setState('info.remoteAccess', active.length > 0, true);
|
|
333
503
|
await this.setState('info.remoteAccessBy', active
|
|
334
|
-
.map(t => `${remote_1.ACCESS_LABEL[t.kind]}${t.instance ? ` (${t.instance})` : ''}: ${t.by}, ${t.purpose} (bis ${new Date(t.expiresAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })})`)
|
|
504
|
+
.map(t => `${remote_1.ACCESS_LABEL[t.kind]}${t.instance ? ` (${t.instance})` : ''}${this.shellText(t)}: ${t.by}, ${t.purpose} (bis ${new Date(t.expiresAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })})`)
|
|
335
505
|
.join('; '), true);
|
|
336
506
|
}
|
|
337
507
|
// ------------------------------------------------------------------ inventory and heartbeat
|
|
@@ -352,6 +522,16 @@ class BeeAdapter extends utils.Adapter {
|
|
|
352
522
|
admin: (0, remote_1.describeTargets)(await (0, remote_1.findTargets)(this, 'admin')),
|
|
353
523
|
vis: (0, remote_1.describeTargets)(await (0, remote_1.findTargets)(this, 'vis')),
|
|
354
524
|
};
|
|
525
|
+
if (inv.remoteAccess.includes('console')) {
|
|
526
|
+
inv.consoleUser = (0, console_1.consoleUser)();
|
|
527
|
+
}
|
|
528
|
+
inv.commands = (0, commands_1.supportedCommands)(inv.software.jsController);
|
|
529
|
+
if (inv.commands.includes('osUpgrade')) {
|
|
530
|
+
const updates = (0, commands_1.osUpdatesFrom)(await this.getForeignStateAsync(`system.host.${this.host}.osPackageUpdates`), (0, node_fs_1.existsSync)(commands_1.REBOOT_REQUIRED));
|
|
531
|
+
if (updates) {
|
|
532
|
+
inv.osUpdates = updates;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
355
535
|
return inv;
|
|
356
536
|
}
|
|
357
537
|
async sendInventory(full) {
|
|
@@ -434,15 +614,23 @@ class BeeAdapter extends utils.Adapter {
|
|
|
434
614
|
if (!obj?.common.enabled || obj.common.host !== this.host) {
|
|
435
615
|
continue;
|
|
436
616
|
}
|
|
437
|
-
// scheduled instances are not running permanently
|
|
438
|
-
if (obj.common.mode !== 'daemon') {
|
|
617
|
+
// scheduled instances are not running permanently, and for files for web nothing runs at all
|
|
618
|
+
if (obj.common.mode !== 'daemon' || (0, instances_1.onlyWww)(obj)) {
|
|
439
619
|
continue;
|
|
440
620
|
}
|
|
441
|
-
const alive = await this.getForeignStateAsync(
|
|
442
|
-
list.push({ id: obj._id.replace('system.adapter.', ''), alive
|
|
621
|
+
const alive = await (0, instances_1.instanceRunning)(obj, id => this.getForeignStateAsync(id), () => this.webInstances());
|
|
622
|
+
list.push({ id: obj._id.replace('system.adapter.', ''), alive });
|
|
443
623
|
}
|
|
444
624
|
return list;
|
|
445
625
|
}
|
|
626
|
+
/** Enabled web instances, e.g. ["web.0"], for web extensions that run in every one of them */
|
|
627
|
+
async webInstances() {
|
|
628
|
+
const res = await this.getObjectViewAsync('system', 'instance', {
|
|
629
|
+
startkey: 'system.adapter.web.',
|
|
630
|
+
endkey: 'system.adapter.web.香',
|
|
631
|
+
});
|
|
632
|
+
return res.rows.filter(r => r.value?.common.enabled).map(r => r.id.replace('system.adapter.', ''));
|
|
633
|
+
}
|
|
446
634
|
// ------------------------------------------------------------------ reconciliation
|
|
447
635
|
async report(state, detail, steps) {
|
|
448
636
|
const d = this.desired;
|