iobroker.bee 0.2.0 → 0.2.2
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 +21 -3
- package/admin/jsonConfig.json +17 -3
- package/build/lib/commands.js +96 -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/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 +182 -3
- package/build/main.js.map +1 -1
- package/io-package.json +7 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ Fleet agent for ioBroker. It connects a delivered ioBroker system (in a house, a
|
|
|
25
25
|
|
|
26
26
|
If the owner installs adapters that are not part of the profile, the agent reports them, stops automatic updates and informs the owner via an ioBroker notification. The fleet manager sees the installation in the deviation list and can bring it back to managed mode (removing the own adapters or tolerating them as exceptions).
|
|
27
27
|
|
|
28
|
-
### Remote access to admin
|
|
28
|
+
### Remote access to admin, vis-2 and the console
|
|
29
29
|
|
|
30
30
|
A technician of the fleet manager can open admin or vis-2 of the system from the fleet management, without ioBroker.pro and without open ports on the device:
|
|
31
31
|
|
|
@@ -35,11 +35,22 @@ A technician of the fleet manager can open admin or vis-2 of the system from the
|
|
|
35
35
|
|
|
36
36
|
The owner can switch off each kind in the tab *Remote access*; the agent then refuses the session and the fleet management shows why. Running sessions are visible in `info.remoteAccess`. After a connection loss the agent reconnects until the session expires, also across restarts of the adapter. The server ends the session early when the technician ends it or the device is revoked.
|
|
37
37
|
|
|
38
|
+
**Console.** Off until the owner allows it (*Allow the console*), and only on Linux with `script` of util-linux (part of every Debian). Then every terminal the technician opens in the browser is a login shell on this system, as the user ioBroker runs as (usually `iobroker`), started in the ioBroker directory. No native module: `script` gives the shell a pseudo terminal, `stty` sets the size of its window. At most 4 shells per session; when the session or the connection ends, the shells get SIGHUP. `info.remoteAccessBy` shows how many shells are open. Whatever the shell may do beyond the rights of that user belongs in a sudo allow list for single commands, not in a general sudo. Note that the list the ioBroker installer writes (`/etc/sudoers.d/iobroker`) contains `apt`, `apt-get` and `dpkg` without password, which makes the console effectively root on a standard installation. Systems installed with `--hardened` have no sudo; there the OS updates below do not work either.
|
|
39
|
+
|
|
40
|
+
### Commands from the fleet management
|
|
41
|
+
|
|
42
|
+
From the asset detail a technician (permission `operate`) can start, stop and restart instances on this host, restart ioBroker, and install updates of operating system packages. The agent answers on the topic `reply`; the fleet management logs who did what.
|
|
43
|
+
|
|
44
|
+
- Instances: the same way admin does it, through the instance object (`common.enabled`, or rewriting it for a restart). Only instances of this host; `bee` itself can be restarted but not stopped from afar.
|
|
45
|
+
- Restart of ioBroker: host command `restartController` of js-controller.
|
|
46
|
+
- OS updates: js-controller (6 and newer, Linux) lists upgradeable packages (`apt list --upgradeable`) on every update of the repository, admin triggers that daily, and writes them to `system.host.<host>.osPackageUpdates`. The agent reports this list in the inventory, together with `/var/run/reboot-required`, and on request passes the chosen packages to the host command `upgradeOsPackages`, which runs apt (with sudo if ioBroker does not run as root). Packages that js-controller did not list are refused.
|
|
47
|
+
- Nothing of this while a job (update) is running, and one command at a time.
|
|
48
|
+
|
|
38
49
|
## Configuration
|
|
39
50
|
|
|
40
51
|
| Tab | Setting | Meaning |
|
|
41
52
|
| --- | --- | --- |
|
|
42
|
-
| Enrollment | Enrollment URL, token | from the factory image or the fleet manager; the token is stored encrypted |
|
|
53
|
+
| Enrollment | Enrollment URL, token | from the factory image or the fleet manager; the URL is preset to `https://bee.iobroker.click`, the token is stored encrypted |
|
|
43
54
|
| | comment | free text shown in the fleet management next to the installation, e.g. `Womo Mercedes KA-1525`; sent on enrollment and with the inventory. It helps to recognize the installation but proves nothing: the identity is the device certificate |
|
|
44
55
|
| Maintenance window | start, end | daily window for updates, may span midnight (e.g. 22:00–05:00) |
|
|
45
56
|
| | conditions | table of `state operator value`, e.g. `victron.0.soc >= 50`, `modem.0.roaming == false`, `presence.0.home == false` |
|
|
@@ -48,6 +59,7 @@ The owner can switch off each kind in the tab *Remote access*; the agent then re
|
|
|
48
59
|
| | observation after update, start timeout | verification of a rollout |
|
|
49
60
|
| | backup before every update | only disable for tests |
|
|
50
61
|
| Remote access | allow admin, allow vis-2 | whether the fleet manager may open the interface remotely (both allowed by default) |
|
|
62
|
+
| | allow the console | a shell on this system for the fleet manager (off by default, Linux only) |
|
|
51
63
|
|
|
52
64
|
## States
|
|
53
65
|
|
|
@@ -66,7 +78,7 @@ Files in `iobroker-data/bee.0/`: `device.json` (certificate and key, mode 0600),
|
|
|
66
78
|
|
|
67
79
|
## Not in this version
|
|
68
80
|
|
|
69
|
-
Platform updates of js-controller and Node.js (with a systemd watchdog outside ioBroker), vis-2 project distribution,
|
|
81
|
+
Platform updates of js-controller and Node.js (with a systemd watchdog outside ioBroker), vis-2 project distribution, recording of console sessions, signed artifacts. See the concept of the beekeeper project.
|
|
70
82
|
|
|
71
83
|
## Development
|
|
72
84
|
|
|
@@ -80,6 +92,12 @@ npm test # unit tests of planner, preflight and diff
|
|
|
80
92
|
|
|
81
93
|
## Changelog
|
|
82
94
|
|
|
95
|
+
### 0.2.2 (2026-11-10)
|
|
96
|
+
|
|
97
|
+
- Console: a shell on this system for the fleet management, in the browser of the technician; off unless the owner allows it, Linux with `script` (util-linux) only
|
|
98
|
+
- Enrollment URL preset to `https://bee.iobroker.click` (new instances)
|
|
99
|
+
- Commands from the fleet management: start, stop and restart instances, restart ioBroker, install OS updates listed by js-controller (6 and newer)
|
|
100
|
+
|
|
83
101
|
### 0.2.0 (2026-11-10)
|
|
84
102
|
|
|
85
103
|
- Remote access to admin and vis-2 through a tunnel to the fleet server, switchable per kind by the owner
|
package/admin/jsonConfig.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"enrollUrl": {
|
|
22
22
|
"type": "text",
|
|
23
23
|
"label": { "en": "Enrollment URL", "de": "Enrollment-URL" },
|
|
24
|
-
"placeholder": "https://
|
|
24
|
+
"placeholder": "https://bee.iobroker.click",
|
|
25
25
|
"xs": 12,
|
|
26
26
|
"sm": 12,
|
|
27
27
|
"md": 6,
|
|
@@ -73,8 +73,8 @@
|
|
|
73
73
|
"hdr3": {
|
|
74
74
|
"type": "staticText",
|
|
75
75
|
"text": {
|
|
76
|
-
"en": "Service staff of the fleet management can open admin or vis-2 of this system from afar, without ioBroker.pro and without open ports: on request, this adapter connects to the fleet server for the duration of the access. Every access is logged with person and purpose, and is shown below while it lasts. Changing these settings ends running accesses.",
|
|
77
|
-
"de": "Servicepersonal der Flottenverwaltung kann admin oder vis-2 dieses Systems aus der Ferne öffnen, ohne ioBroker.pro und ohne offene Ports: auf Anforderung verbindet sich dieser Adapter für die Dauer des Zugriffs mit dem Flottenserver. Jeder Zugriff wird mit Person und Zweck protokolliert und unten angezeigt, solange er läuft. Eine Änderung dieser Einstellungen beendet laufende Zugriffe."
|
|
76
|
+
"en": "Service staff of the fleet management can open admin or vis-2 of this system from afar, without ioBroker.pro and without open ports: on request, this adapter connects to the fleet server for the duration of the access. Every access is logged with person and purpose, and is shown below while it lasts. Changing these settings ends running accesses. The console is off until you allow it here.",
|
|
77
|
+
"de": "Servicepersonal der Flottenverwaltung kann admin oder vis-2 dieses Systems aus der Ferne öffnen, ohne ioBroker.pro und ohne offene Ports: auf Anforderung verbindet sich dieser Adapter für die Dauer des Zugriffs mit dem Flottenserver. Jeder Zugriff wird mit Person und Zweck protokolliert und unten angezeigt, solange er läuft. Eine Änderung dieser Einstellungen beendet laufende Zugriffe. Die Konsole ist aus, bis Sie sie hier erlauben."
|
|
78
78
|
},
|
|
79
79
|
"xs": 12,
|
|
80
80
|
"sm": 12,
|
|
@@ -109,6 +109,20 @@
|
|
|
109
109
|
"lg": 6,
|
|
110
110
|
"xl": 6
|
|
111
111
|
},
|
|
112
|
+
"allowConsole": {
|
|
113
|
+
"type": "checkbox",
|
|
114
|
+
"label": { "en": "Allow the console (a shell on this system)", "de": "Konsole erlauben (Shell auf diesem System)" },
|
|
115
|
+
"help": {
|
|
116
|
+
"en": "Only Linux. The shell runs as the user of ioBroker: full access to ioBroker, its data and, depending on the setup, to the system",
|
|
117
|
+
"de": "Nur Linux. Die Shell läuft als Nutzer von ioBroker: voller Zugriff auf ioBroker, seine Daten und, je nach Einrichtung, auf das System"
|
|
118
|
+
},
|
|
119
|
+
"newLine": true,
|
|
120
|
+
"xs": 12,
|
|
121
|
+
"sm": 12,
|
|
122
|
+
"md": 6,
|
|
123
|
+
"lg": 6,
|
|
124
|
+
"xl": 6
|
|
125
|
+
},
|
|
112
126
|
"_remoteAccessBy": {
|
|
113
127
|
"type": "state",
|
|
114
128
|
"oid": "info.remoteAccessBy",
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ACTION_DONE = exports.REBOOT_REQUIRED = void 0;
|
|
4
|
+
exports.supportedCommands = supportedCommands;
|
|
5
|
+
exports.osUpdatesFrom = osUpdatesFrom;
|
|
6
|
+
exports.instanceRefusal = instanceRefusal;
|
|
7
|
+
exports.chooseOsPackages = chooseOsPackages;
|
|
8
|
+
const protocol_1 = require("./protocol");
|
|
9
|
+
const util_1 = require("./util");
|
|
10
|
+
/**
|
|
11
|
+
* Commands of the fleet management to this system: start, stop or restart an instance (as admin does it,
|
|
12
|
+
* through the instance object), restart ioBroker, upgrade packages of the operating system. The last two
|
|
13
|
+
* are done by js-controller (host commands restartController and upgradeOsPackages); the agent only passes
|
|
14
|
+
* them on, and only packages js-controller listed itself as upgradeable.
|
|
15
|
+
*/
|
|
16
|
+
/** Exists on Debian and Ubuntu when an update asks for a reboot of the system */
|
|
17
|
+
exports.REBOOT_REQUIRED = '/var/run/reboot-required';
|
|
18
|
+
/** What this system can do: OS updates need Linux and js-controller 6 (it lists them and runs apt) */
|
|
19
|
+
function supportedCommands(jsController, platform = process.platform) {
|
|
20
|
+
const commands = ['instance', 'restart'];
|
|
21
|
+
if (platform === 'linux' && jsController && (0, util_1.compareVersions)(jsController, '6.0.0') >= 0) {
|
|
22
|
+
commands.push('osUpgrade');
|
|
23
|
+
}
|
|
24
|
+
return commands;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* OS updates from the state system.host.<host>.osPackageUpdates, which js-controller writes on every update
|
|
28
|
+
* of the repository: a JSON list of lines of `apt list --upgradeable`. Undefined if there is no such state.
|
|
29
|
+
*
|
|
30
|
+
* @param state the state of js-controller
|
|
31
|
+
* @param rebootRequired whether the system asks for a reboot
|
|
32
|
+
*/
|
|
33
|
+
function osUpdatesFrom(state, rebootRequired) {
|
|
34
|
+
if (!state || typeof state.val !== 'string') {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
let lines;
|
|
38
|
+
try {
|
|
39
|
+
lines = JSON.parse(state.val);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
if (!Array.isArray(lines)) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
const packages = lines
|
|
48
|
+
.filter((l) => typeof l === 'string')
|
|
49
|
+
.map(protocol_1.parseOsPackage)
|
|
50
|
+
.filter((p) => !!p);
|
|
51
|
+
return { packages, checkedAt: state.ts || null, rebootRequired };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Why a command for an instance is not carried out, or null.
|
|
55
|
+
*
|
|
56
|
+
* @param id instance, e.g. "javascript.0"
|
|
57
|
+
* @param action start, stop or restart
|
|
58
|
+
* @param own the instance of the agent itself (bee.0)
|
|
59
|
+
* @param obj the object system.adapter.<id>
|
|
60
|
+
* @param host the host of the agent
|
|
61
|
+
*/
|
|
62
|
+
function instanceRefusal(id, action, own, obj, host) {
|
|
63
|
+
if (typeof id !== 'string' || !protocol_1.INSTANCE_ID.test(id)) {
|
|
64
|
+
return `Ungültige Instanz ${String(id)}`;
|
|
65
|
+
}
|
|
66
|
+
if (action !== 'start' && action !== 'stop' && action !== 'restart') {
|
|
67
|
+
return `Unbekannte Aktion ${String(action)}`;
|
|
68
|
+
}
|
|
69
|
+
if (!obj || obj.type !== 'instance') {
|
|
70
|
+
return `Instanz ${id} gibt es auf dem Gerät nicht`;
|
|
71
|
+
}
|
|
72
|
+
if (obj.common.host !== host) {
|
|
73
|
+
return `Instanz ${id} gehört zum Host ${obj.common.host}, nicht zu ${host}`;
|
|
74
|
+
}
|
|
75
|
+
if (id === own && action === 'stop') {
|
|
76
|
+
return 'bee stoppen trennt die Anlage von der Flottenverwaltung; das geht nur am Gerät';
|
|
77
|
+
}
|
|
78
|
+
if (action === 'restart' && !obj.common.enabled) {
|
|
79
|
+
return `Instanz ${id} ist ausgeschaltet; starten statt neu starten`;
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
exports.ACTION_DONE = {
|
|
84
|
+
start: 'gestartet',
|
|
85
|
+
stop: 'gestoppt',
|
|
86
|
+
restart: 'neu gestartet',
|
|
87
|
+
};
|
|
88
|
+
/** The packages of a request that js-controller listed, or the names it did not list */
|
|
89
|
+
function chooseOsPackages(listed, wanted) {
|
|
90
|
+
const names = Array.isArray(wanted) ? wanted.filter((n) => typeof n === 'string') : [];
|
|
91
|
+
return {
|
|
92
|
+
packages: listed.filter(p => names.includes(p.name)),
|
|
93
|
+
unknown: names.filter(n => !listed.some(p => p.name === n)),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/lib/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MAX_SHELLS = void 0;
|
|
7
|
+
exports.findScript = findScript;
|
|
8
|
+
exports.loginShell = loginShell;
|
|
9
|
+
exports.consoleUser = consoleUser;
|
|
10
|
+
exports.parentOf = parentOf;
|
|
11
|
+
exports.startShell = startShell;
|
|
12
|
+
const node_child_process_1 = require("node:child_process");
|
|
13
|
+
const node_fs_1 = require("node:fs");
|
|
14
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
15
|
+
const tunnel_1 = require("./tunnel");
|
|
16
|
+
/**
|
|
17
|
+
* Console of the remote access: a shell on this system for one terminal in the browser of the technician.
|
|
18
|
+
* Each stream of the tunnel is one shell. No native module: `script` of util-linux (on every Debian) gives the
|
|
19
|
+
* shell a pseudo terminal, and `stty` sets the size of its window. Only Linux, and only when the owner allows it.
|
|
20
|
+
*/
|
|
21
|
+
/** Shells per access session at the same time */
|
|
22
|
+
exports.MAX_SHELLS = 4;
|
|
23
|
+
/** `script` of util-linux, null if this system has none (then there is no console) */
|
|
24
|
+
function findScript() {
|
|
25
|
+
if (process.platform !== 'linux') {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return ['/usr/bin/script', '/bin/script'].find(p => (0, node_fs_1.existsSync)(p)) ?? null;
|
|
29
|
+
}
|
|
30
|
+
function findStty() {
|
|
31
|
+
return ['/usr/bin/stty', '/bin/stty'].find(p => (0, node_fs_1.existsSync)(p)) ?? 'stty';
|
|
32
|
+
}
|
|
33
|
+
/** A shell to log in with; the one of a service user is often nologin, so not taken from /etc/passwd */
|
|
34
|
+
function loginShell(env = process.env) {
|
|
35
|
+
return ([env.SHELL, '/bin/bash', '/bin/sh'].find(s => !!s && !/(nologin|false)$/.test(s) && (0, node_fs_1.existsSync)(s)) ?? '/bin/sh');
|
|
36
|
+
}
|
|
37
|
+
/** The user the shell runs as: the user of ioBroker */
|
|
38
|
+
function consoleUser() {
|
|
39
|
+
try {
|
|
40
|
+
return node_os_1.default.userInfo().username;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return String(process.getuid?.() ?? '');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Parent process id from /proc/<pid>/stat; the name in parentheses may contain spaces and parentheses */
|
|
47
|
+
function parentOf(stat) {
|
|
48
|
+
const rest = stat.slice(stat.lastIndexOf(')') + 2).split(' ');
|
|
49
|
+
return parseInt(rest[1], 10);
|
|
50
|
+
}
|
|
51
|
+
/** The child of `script` (the shell) and the terminal it reads from, e.g. /dev/pts/3 */
|
|
52
|
+
function findTerminal(scriptPid) {
|
|
53
|
+
for (const entry of (0, node_fs_1.readdirSync)('/proc')) {
|
|
54
|
+
if (!/^\d+$/.test(entry)) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
if (parentOf((0, node_fs_1.readFileSync)(`/proc/${entry}/stat`, 'utf8')) === scriptPid) {
|
|
59
|
+
const tty = (0, node_fs_1.readlinkSync)(`/proc/${entry}/fd/0`);
|
|
60
|
+
if (tty.startsWith('/dev/pts/')) {
|
|
61
|
+
return { pid: parseInt(entry, 10), tty };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// the process ended meanwhile, or is not ours
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
function signalGroup(pid, signal) {
|
|
72
|
+
if (!pid) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
process.kill(-pid, signal);
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// already gone
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Runs one shell for a stream of the tunnel until one of both ends.
|
|
84
|
+
*
|
|
85
|
+
* @param stream stream of the tunnel, carrying console messages (see tunnel.ts)
|
|
86
|
+
* @param opts working directory, logger and who opened it
|
|
87
|
+
*/
|
|
88
|
+
function startShell(stream, opts) {
|
|
89
|
+
const script = findScript();
|
|
90
|
+
if (!script) {
|
|
91
|
+
stream.end((0, tunnel_1.consoleMessage)(tunnel_1.CONSOLE.EXIT, Buffer.from('keine Konsole auf diesem System')));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const shell = loginShell();
|
|
95
|
+
const home = (() => {
|
|
96
|
+
try {
|
|
97
|
+
return node_os_1.default.userInfo().homedir;
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return opts.cwd;
|
|
101
|
+
}
|
|
102
|
+
})();
|
|
103
|
+
// a fresh login environment instead of the one of the adapter process
|
|
104
|
+
const env = {
|
|
105
|
+
HOME: home,
|
|
106
|
+
USER: consoleUser(),
|
|
107
|
+
LOGNAME: consoleUser(),
|
|
108
|
+
SHELL: shell,
|
|
109
|
+
PATH: process.env.PATH || '/usr/local/bin:/usr/bin:/bin',
|
|
110
|
+
LANG: process.env.LANG || 'C.UTF-8',
|
|
111
|
+
TERM: 'xterm-256color',
|
|
112
|
+
COLORTERM: 'truecolor',
|
|
113
|
+
};
|
|
114
|
+
// detached: own process group, so that the end reaches everything started in it
|
|
115
|
+
const child = (0, node_child_process_1.spawn)(script, ['-qfec', `exec ${shell} -l`, '/dev/null'], {
|
|
116
|
+
cwd: (0, node_fs_1.existsSync)(opts.cwd) ? opts.cwd : home,
|
|
117
|
+
env,
|
|
118
|
+
detached: true,
|
|
119
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
120
|
+
});
|
|
121
|
+
let terminal = null;
|
|
122
|
+
let size = null;
|
|
123
|
+
let ended = false;
|
|
124
|
+
let killTimer = null;
|
|
125
|
+
const applySize = () => {
|
|
126
|
+
if (terminal && size) {
|
|
127
|
+
// the kernel tells the shell (SIGWINCH)
|
|
128
|
+
(0, node_child_process_1.execFile)(findStty(), ['-F', terminal.tty, 'cols', String(size.cols), 'rows', String(size.rows)], err => {
|
|
129
|
+
if (err) {
|
|
130
|
+
opts.log.debug(`Console: stty: ${err.message}`);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
// the shell needs a moment until it runs on its terminal
|
|
136
|
+
let tries = 0;
|
|
137
|
+
const lookup = setInterval(() => {
|
|
138
|
+
if (ended || terminal || ++tries > 60 || !child.pid) {
|
|
139
|
+
clearInterval(lookup);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
terminal = findTerminal(child.pid);
|
|
143
|
+
if (terminal) {
|
|
144
|
+
clearInterval(lookup);
|
|
145
|
+
applySize();
|
|
146
|
+
}
|
|
147
|
+
}, 50);
|
|
148
|
+
const stop = () => {
|
|
149
|
+
// nobody waits for a drain any more: read the pipes to their end, or the end of the shell is never seen
|
|
150
|
+
child.stdout?.resume();
|
|
151
|
+
child.stderr?.resume();
|
|
152
|
+
if (killTimer || ended) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
// hang up: the shell and what runs in its foreground get SIGHUP, as when an SSH connection drops
|
|
156
|
+
signalGroup(terminal?.pid, 'SIGHUP');
|
|
157
|
+
signalGroup(child.pid, 'SIGHUP');
|
|
158
|
+
killTimer = setTimeout(() => {
|
|
159
|
+
signalGroup(terminal?.pid, 'SIGKILL');
|
|
160
|
+
signalGroup(child.pid, 'SIGKILL');
|
|
161
|
+
}, 3000);
|
|
162
|
+
};
|
|
163
|
+
const forward = (chunk) => {
|
|
164
|
+
if (stream.destroyed || !stream.writable) {
|
|
165
|
+
// the browser is gone, the shell is being hung up: drop what it still writes
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (!stream.write((0, tunnel_1.consoleMessage)(tunnel_1.CONSOLE.DATA, chunk))) {
|
|
169
|
+
// the browser is slow: hold the shell back
|
|
170
|
+
child.stdout?.pause();
|
|
171
|
+
child.stderr?.pause();
|
|
172
|
+
stream.once('drain', () => {
|
|
173
|
+
child.stdout?.resume();
|
|
174
|
+
child.stderr?.resume();
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
child.stdout?.on('data', forward);
|
|
179
|
+
child.stderr?.on('data', forward);
|
|
180
|
+
child.stdin?.on('error', () => { });
|
|
181
|
+
const reader = new tunnel_1.ConsoleReader((type, payload) => {
|
|
182
|
+
if (type === tunnel_1.CONSOLE.DATA) {
|
|
183
|
+
child.stdin?.write(payload);
|
|
184
|
+
}
|
|
185
|
+
else if (type === tunnel_1.CONSOLE.RESIZE && payload.length >= 4) {
|
|
186
|
+
const clamp = (n) => Math.max(1, Math.min(1000, n));
|
|
187
|
+
size = { cols: clamp(payload.readUInt16BE(0)), rows: clamp(payload.readUInt16BE(2)) };
|
|
188
|
+
applySize();
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
stream.on('data', (chunk) => {
|
|
192
|
+
if (!reader.push(chunk)) {
|
|
193
|
+
stream.destroy(new Error('invalid console message'));
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
stream.on('end', stop);
|
|
197
|
+
stream.on('close', stop);
|
|
198
|
+
stream.on('error', stop);
|
|
199
|
+
child.on('error', err => {
|
|
200
|
+
opts.log.warn(`Console: ${err.message}`);
|
|
201
|
+
stop();
|
|
202
|
+
});
|
|
203
|
+
child.on('close', (code, signal) => {
|
|
204
|
+
ended = true;
|
|
205
|
+
clearInterval(lookup);
|
|
206
|
+
if (killTimer) {
|
|
207
|
+
clearTimeout(killTimer);
|
|
208
|
+
}
|
|
209
|
+
const result = signal ? signal : String(code ?? '');
|
|
210
|
+
if (!stream.destroyed && stream.writable) {
|
|
211
|
+
stream.end((0, tunnel_1.consoleMessage)(tunnel_1.CONSOLE.EXIT, Buffer.from(result)));
|
|
212
|
+
}
|
|
213
|
+
opts.log.info(`Console of ${opts.by} ended (${result})`);
|
|
214
|
+
opts.onEnd?.(result);
|
|
215
|
+
});
|
|
216
|
+
opts.log.info(`Console: shell ${shell} as ${consoleUser()} started for ${opts.by}`);
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=console.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/lib/console.ts"],"names":[],"mappings":"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"}
|
package/build/lib/protocol.js
CHANGED
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
* fleet/<tenant>/<device>/state device -> server heartbeat, online flag (also Last Will)
|
|
10
10
|
* fleet/<tenant>/<device>/inventory device -> server full inventory or diff to the last one
|
|
11
11
|
* fleet/<tenant>/<device>/result device -> server progress and result of reconciliation
|
|
12
|
+
* fleet/<tenant>/<device>/reply device -> server progress and result of a command (JobMessage.ref)
|
|
12
13
|
* fleet/<tenant>/<device>/desired server -> device desired state, RETAINED
|
|
13
|
-
* fleet/<tenant>/<device>/job server -> device one-shot requests (resync, refresh)
|
|
14
|
+
* fleet/<tenant>/<device>/job server -> device one-shot requests (resync, refresh, tunnel, commands)
|
|
14
15
|
* fleet/<tenant>/control server -> device fleet-wide control (emergency stop), RETAINED
|
|
15
16
|
*
|
|
16
17
|
* Payloads are JSON, gzip-compressed. Receivers accept plain JSON as well.
|
|
@@ -19,10 +20,11 @@
|
|
|
19
20
|
* WebSocket to TUNNEL_PATH of the server and carries the connections of the browser (see tunnel.ts).
|
|
20
21
|
*/
|
|
21
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.TERMINAL_JOB_STATES = exports.TUNNEL_PATH = exports.ACCESS_KINDS = exports.MAX_COMMENT_LENGTH = exports.PROTOCOL_VERSION = void 0;
|
|
23
|
+
exports.TERMINAL_JOB_STATES = exports.TUNNEL_PATH = exports.ACCESS_KINDS = exports.INSTANCE_ID = exports.MAX_COMMENT_LENGTH = exports.PROTOCOL_VERSION = void 0;
|
|
23
24
|
exports.deviceTopic = deviceTopic;
|
|
24
25
|
exports.controlTopic = controlTopic;
|
|
25
26
|
exports.normalizeComment = normalizeComment;
|
|
27
|
+
exports.parseOsPackage = parseOsPackage;
|
|
26
28
|
exports.PROTOCOL_VERSION = 1;
|
|
27
29
|
function deviceTopic(tenantId, deviceId, topic) {
|
|
28
30
|
return `fleet/${tenantId}/${deviceId}/${topic}`;
|
|
@@ -48,7 +50,20 @@ function normalizeComment(value) {
|
|
|
48
50
|
.trim();
|
|
49
51
|
return s || undefined;
|
|
50
52
|
}
|
|
51
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Parses a line of `apt list --upgradeable`, e.g.
|
|
55
|
+
* "openssl/stable-security 3.0.15-1~deb12u1 arm64 [upgradable from: 3.0.14-1~deb12u2]"
|
|
56
|
+
*/
|
|
57
|
+
function parseOsPackage(line) {
|
|
58
|
+
const m = /^([a-z0-9][a-z0-9+.-]*)\/\S*\s+(\S+)(?:.*\[[^\]:]*:\s*([^\]\s]+)\])?/i.exec(line.trim());
|
|
59
|
+
if (!m) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
return { name: m[1], version: m[2], ...(m[3] ? { from: m[3] } : {}) };
|
|
63
|
+
}
|
|
64
|
+
/** Instance id as the commands accept it, e.g. "javascript.0" */
|
|
65
|
+
exports.INSTANCE_ID = /^[a-z0-9][a-z0-9_-]*\.\d{1,4}$/;
|
|
66
|
+
exports.ACCESS_KINDS = ['admin', 'vis', 'console'];
|
|
52
67
|
/** WebSocket path of the tunnel endpoint on the server */
|
|
53
68
|
exports.TUNNEL_PATH = '/tunnel';
|
|
54
69
|
exports.TERMINAL_JOB_STATES = ['done', 'blocked'];
|
|
@@ -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;AA8GD,wCAMC;AAlJY,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;AA0GD;;;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,8 @@ 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");
|
|
43
45
|
const enrollment_1 = require("./lib/enrollment");
|
|
44
46
|
const inventory_1 = require("./lib/inventory");
|
|
45
47
|
const jobs_1 = require("./lib/jobs");
|
|
@@ -49,6 +51,7 @@ const preflight_1 = require("./lib/preflight");
|
|
|
49
51
|
const protocol_1 = require("./lib/protocol");
|
|
50
52
|
const remote_1 = require("./lib/remote");
|
|
51
53
|
const transport_1 = require("./lib/transport");
|
|
54
|
+
const tunnel_1 = require("./lib/tunnel");
|
|
52
55
|
const util_1 = require("./lib/util");
|
|
53
56
|
class BeeAdapter extends utils.Adapter {
|
|
54
57
|
dataDir = '';
|
|
@@ -67,10 +70,14 @@ class BeeAdapter extends utils.Adapter {
|
|
|
67
70
|
errorLog = [];
|
|
68
71
|
errorsSinceHeartbeat = 0;
|
|
69
72
|
reconciling = false;
|
|
73
|
+
/** A command of the fleet management is being carried out (one at a time) */
|
|
74
|
+
commandRunning = false;
|
|
70
75
|
lastWaitReason = '';
|
|
71
76
|
unloading = false;
|
|
72
77
|
/** Open remote access sessions by session id */
|
|
73
78
|
tunnels = new Map();
|
|
79
|
+
/** Running shells of the console per session */
|
|
80
|
+
shells = new Map();
|
|
74
81
|
constructor(options = {}) {
|
|
75
82
|
super({ ...options, name: 'bee' });
|
|
76
83
|
this.on('ready', () => this.onReady());
|
|
@@ -251,6 +258,115 @@ class BeeAdapter extends utils.Adapter {
|
|
|
251
258
|
else if (msg.cmd === 'tunnel' && msg.tunnel) {
|
|
252
259
|
await this.openTunnel(msg.tunnel, false);
|
|
253
260
|
}
|
|
261
|
+
else if (msg.ref && (msg.cmd === 'instance' || msg.cmd === 'restart' || msg.cmd === 'osUpgrade')) {
|
|
262
|
+
await this.runCommand(msg);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
// ------------------------------------------------------------------ commands of the fleet management
|
|
266
|
+
async reply(ref, state, message) {
|
|
267
|
+
const msg = { v: protocol_1.PROTOCOL_VERSION, ts: Date.now(), ref, state, ...(message ? { message } : {}) };
|
|
268
|
+
await this.transport?.publish('reply', msg);
|
|
269
|
+
}
|
|
270
|
+
/** Sends the inventory again a while after a command, when the instances show its effect */
|
|
271
|
+
inventorySoon() {
|
|
272
|
+
for (const ms of [5_000, 30_000]) {
|
|
273
|
+
this.timers.push(setTimeout(() => void this.sendInventory(false), ms));
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
async runCommand(msg) {
|
|
277
|
+
const ref = msg.ref;
|
|
278
|
+
const by = msg.by || 'Flottenverwaltung';
|
|
279
|
+
if (this.reconciling || this.jobs?.isActive()) {
|
|
280
|
+
await this.reply(ref, 'error', 'Während eines Auftrags (Update) nicht möglich');
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
if (this.commandRunning) {
|
|
284
|
+
await this.reply(ref, 'error', 'Es läuft schon ein Befehl');
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
this.commandRunning = true;
|
|
288
|
+
try {
|
|
289
|
+
if (msg.cmd === 'instance') {
|
|
290
|
+
await this.instanceCommand(ref, by, msg.instance);
|
|
291
|
+
}
|
|
292
|
+
else if (msg.cmd === 'restart') {
|
|
293
|
+
this.log.warn(`Restart of ioBroker on request of ${by} (fleet management)`);
|
|
294
|
+
// the answer goes out first, the restart takes the agent down too
|
|
295
|
+
await this.reply(ref, 'done', 'ioBroker startet neu');
|
|
296
|
+
this.sendToHost(`system.host.${this.host}`, 'restartController', {});
|
|
297
|
+
}
|
|
298
|
+
else if (msg.cmd === 'osUpgrade') {
|
|
299
|
+
await this.osUpgradeCommand(ref, by, msg.osUpgrade);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
catch (e) {
|
|
303
|
+
this.log.warn(`Command ${msg.cmd} of ${by} failed: ${e.message}`);
|
|
304
|
+
await this.reply(ref, 'error', e.message);
|
|
305
|
+
}
|
|
306
|
+
finally {
|
|
307
|
+
this.commandRunning = false;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/** Start, stop or restart an instance on this host, the same way admin does it */
|
|
311
|
+
async instanceCommand(ref, by, req) {
|
|
312
|
+
const id = req?.id;
|
|
313
|
+
const action = req?.action;
|
|
314
|
+
const objId = `system.adapter.${id}`;
|
|
315
|
+
const obj = typeof id === 'string' && /^[\w.-]+$/.test(id) ? await this.getForeignObjectAsync(objId) : null;
|
|
316
|
+
const refusal = (0, commands_1.instanceRefusal)(id, action, this.namespace, obj, this.host || '');
|
|
317
|
+
if (refusal || !req) {
|
|
318
|
+
await this.reply(ref, 'error', refusal || 'Instanz fehlt');
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
this.log.info(`Instance ${req.id}: ${req.action} on request of ${by} (fleet management)`);
|
|
322
|
+
const own = req.id === this.namespace;
|
|
323
|
+
if (own) {
|
|
324
|
+
// a restart of this instance ends this process: answer first
|
|
325
|
+
await this.reply(ref, 'done', `${req.id} startet neu`);
|
|
326
|
+
}
|
|
327
|
+
await this.extendForeignObjectAsync(objId, req.action === 'restart' ? {} : { common: { enabled: req.action === 'start' } });
|
|
328
|
+
if (!own) {
|
|
329
|
+
await this.reply(ref, 'done', `${req.id} ${commands_1.ACTION_DONE[req.action]}`);
|
|
330
|
+
this.inventorySoon();
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/** Upgrade OS packages through js-controller, only those it listed itself */
|
|
334
|
+
async osUpgradeCommand(ref, by, req) {
|
|
335
|
+
const host = `system.host.${this.host}`;
|
|
336
|
+
const hostObj = await this.getForeignObjectAsync(host);
|
|
337
|
+
if (!(0, commands_1.supportedCommands)(String(hostObj?.common?.installedVersion || '')).includes('osUpgrade')) {
|
|
338
|
+
await this.reply(ref, 'error', 'OS-Updates brauchen Linux und js-controller ab 6');
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
const listed = (0, commands_1.osUpdatesFrom)(await this.getForeignStateAsync(`${host}.osPackageUpdates`), false)?.packages ?? [];
|
|
342
|
+
const { packages, unknown } = (0, commands_1.chooseOsPackages)(listed, req?.packages);
|
|
343
|
+
if (!packages.length || unknown.length) {
|
|
344
|
+
await this.reply(ref, 'error', unknown.length ? `Nicht als aktualisierbar gelistet: ${unknown.join(', ')}` : 'Keine Pakete angegeben');
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
const names = packages.map(p => p.name).join(', ');
|
|
348
|
+
this.log.warn(`Upgrade of OS packages ${names} on request of ${by} (fleet management)`);
|
|
349
|
+
await this.reply(ref, 'running', `apt: ${names}`);
|
|
350
|
+
// js-controller runs apt (with sudo if it is not root) and answers when it is through
|
|
351
|
+
const answer = (await Promise.race([
|
|
352
|
+
this.sendToHostAsync(host, 'upgradeOsPackages', {
|
|
353
|
+
packages: packages.map(p => ({ name: p.name })),
|
|
354
|
+
restart: !!req?.restart,
|
|
355
|
+
}),
|
|
356
|
+
new Promise(resolve => {
|
|
357
|
+
this.timers.push(setTimeout(() => resolve({ error: 'Keine Antwort von js-controller nach 30 Minuten' }), 30 * 60_000));
|
|
358
|
+
}),
|
|
359
|
+
]));
|
|
360
|
+
if (answer?.success) {
|
|
361
|
+
this.log.info(`OS packages upgraded: ${names}`);
|
|
362
|
+
await this.reply(ref, 'done', `${packages.length} ${packages.length === 1 ? 'Paket' : 'Pakete'} aktualisiert${req?.restart ? ', ioBroker startet neu' : ''}`);
|
|
363
|
+
this.inventorySoon();
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
const error = answer?.error || 'js-controller meldet einen Fehler';
|
|
367
|
+
this.log.warn(`OS upgrade failed: ${error}`);
|
|
368
|
+
await this.reply(ref, 'error', error);
|
|
369
|
+
}
|
|
254
370
|
}
|
|
255
371
|
// ------------------------------------------------------------------ remote access
|
|
256
372
|
/** Kinds of remote access the owner allows in the instance settings */
|
|
@@ -262,8 +378,41 @@ class BeeAdapter extends utils.Adapter {
|
|
|
262
378
|
if (this.config.allowVis !== false) {
|
|
263
379
|
kinds.push('vis');
|
|
264
380
|
}
|
|
381
|
+
if (this.config.allowConsole === true && (0, console_1.findScript)()) {
|
|
382
|
+
kinds.push('console');
|
|
383
|
+
}
|
|
265
384
|
return kinds;
|
|
266
385
|
}
|
|
386
|
+
/** One shell for a stream of a console session, at most MAX_SHELLS at the same time */
|
|
387
|
+
openShell(t, stream) {
|
|
388
|
+
const running = this.shells.get(t.id) ?? 0;
|
|
389
|
+
if (running >= console_1.MAX_SHELLS) {
|
|
390
|
+
stream.end(Buffer.concat([
|
|
391
|
+
(0, tunnel_1.consoleMessage)(tunnel_1.CONSOLE.DATA, Buffer.from(`Höchstens ${console_1.MAX_SHELLS} Shells je Sitzung.\r\n`)),
|
|
392
|
+
(0, tunnel_1.consoleMessage)(tunnel_1.CONSOLE.EXIT, Buffer.from('zu viele Shells')),
|
|
393
|
+
]));
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
this.shells.set(t.id, running + 1);
|
|
397
|
+
void this.updateAccessStates();
|
|
398
|
+
(0, console_1.startShell)(stream, {
|
|
399
|
+
cwd: (0, node_path_1.join)(utils.controllerDir, '..', '..'),
|
|
400
|
+
log: this.log,
|
|
401
|
+
by: t.by,
|
|
402
|
+
onEnd: () => {
|
|
403
|
+
const n = (this.shells.get(t.id) ?? 1) - 1;
|
|
404
|
+
if (n > 0) {
|
|
405
|
+
this.shells.set(t.id, n);
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
this.shells.delete(t.id);
|
|
409
|
+
}
|
|
410
|
+
if (!this.unloading) {
|
|
411
|
+
void this.updateAccessStates();
|
|
412
|
+
}
|
|
413
|
+
},
|
|
414
|
+
});
|
|
415
|
+
}
|
|
267
416
|
/**
|
|
268
417
|
* Opens the tunnel of an access session, or refuses it with a reason the operator sees.
|
|
269
418
|
*
|
|
@@ -281,8 +430,18 @@ class BeeAdapter extends utils.Adapter {
|
|
|
281
430
|
}
|
|
282
431
|
let refusal = null;
|
|
283
432
|
let target = null;
|
|
433
|
+
const isConsole = t.kind === 'console';
|
|
284
434
|
if (!this.allowedAccess().includes(t.kind)) {
|
|
285
|
-
refusal =
|
|
435
|
+
refusal = !isConsole
|
|
436
|
+
? `Fernzugriff auf ${remote_1.ACCESS_LABEL[t.kind]} ist am Gerät abgeschaltet`
|
|
437
|
+
: this.config.allowConsole === true
|
|
438
|
+
? 'Die Konsole braucht Linux mit script (util-linux)'
|
|
439
|
+
: 'Die Konsole ist am Gerät nicht freigegeben';
|
|
440
|
+
}
|
|
441
|
+
else if (isConsole) {
|
|
442
|
+
if (this.tunnels.size >= 4) {
|
|
443
|
+
refusal = 'Zu viele gleichzeitige Fernzugriffe auf dem Gerät';
|
|
444
|
+
}
|
|
286
445
|
}
|
|
287
446
|
else {
|
|
288
447
|
// only an instance of this kind on this host, whatever the server asks for
|
|
@@ -298,12 +457,14 @@ class BeeAdapter extends utils.Adapter {
|
|
|
298
457
|
}
|
|
299
458
|
const client = new remote_1.TunnelClient(t, {
|
|
300
459
|
target,
|
|
460
|
+
...(isConsole && !refusal ? { handler: (stream) => this.openShell(t, stream) } : {}),
|
|
301
461
|
refusal,
|
|
302
462
|
ca: (0, transport_1.trustedCas)(this.creds?.ca || ''),
|
|
303
463
|
log: this.log,
|
|
304
464
|
onEnd: (c, reason) => {
|
|
305
465
|
if (this.tunnels.get(t.id) === c) {
|
|
306
466
|
this.tunnels.delete(t.id);
|
|
467
|
+
this.shells.delete(t.id);
|
|
307
468
|
this.log.info(`Remote access to ${remote_1.ACCESS_LABEL[t.kind]} by ${t.by} ended (${reason})`);
|
|
308
469
|
}
|
|
309
470
|
if (!this.unloading) {
|
|
@@ -317,7 +478,7 @@ class BeeAdapter extends utils.Adapter {
|
|
|
317
478
|
}
|
|
318
479
|
else {
|
|
319
480
|
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}`);
|
|
481
|
+
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
482
|
}
|
|
322
483
|
client.start();
|
|
323
484
|
await this.saveTunnels();
|
|
@@ -326,12 +487,20 @@ class BeeAdapter extends utils.Adapter {
|
|
|
326
487
|
async saveTunnels() {
|
|
327
488
|
await (0, util_1.writeJsonAtomic)((0, node_path_1.join)(this.dataDir, 'tunnels.json'), [...this.tunnels.values()].map(c => c.req));
|
|
328
489
|
}
|
|
490
|
+
/** " (2 Shells offen)" for a console */
|
|
491
|
+
shellText(t) {
|
|
492
|
+
if (t.kind !== 'console') {
|
|
493
|
+
return '';
|
|
494
|
+
}
|
|
495
|
+
const n = this.shells.get(t.id) ?? 0;
|
|
496
|
+
return n ? ` (${n} ${n === 1 ? 'Shell' : 'Shells'} offen)` : '';
|
|
497
|
+
}
|
|
329
498
|
/** Shows the owner who is connected right now, and why */
|
|
330
499
|
async updateAccessStates() {
|
|
331
500
|
const active = [...this.tunnels.values()].map(c => c.req);
|
|
332
501
|
await this.setState('info.remoteAccess', active.length > 0, true);
|
|
333
502
|
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' })})`)
|
|
503
|
+
.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
504
|
.join('; '), true);
|
|
336
505
|
}
|
|
337
506
|
// ------------------------------------------------------------------ inventory and heartbeat
|
|
@@ -352,6 +521,16 @@ class BeeAdapter extends utils.Adapter {
|
|
|
352
521
|
admin: (0, remote_1.describeTargets)(await (0, remote_1.findTargets)(this, 'admin')),
|
|
353
522
|
vis: (0, remote_1.describeTargets)(await (0, remote_1.findTargets)(this, 'vis')),
|
|
354
523
|
};
|
|
524
|
+
if (inv.remoteAccess.includes('console')) {
|
|
525
|
+
inv.consoleUser = (0, console_1.consoleUser)();
|
|
526
|
+
}
|
|
527
|
+
inv.commands = (0, commands_1.supportedCommands)(inv.software.jsController);
|
|
528
|
+
if (inv.commands.includes('osUpgrade')) {
|
|
529
|
+
const updates = (0, commands_1.osUpdatesFrom)(await this.getForeignStateAsync(`system.host.${this.host}.osPackageUpdates`), (0, node_fs_1.existsSync)(commands_1.REBOOT_REQUIRED));
|
|
530
|
+
if (updates) {
|
|
531
|
+
inv.osUpdates = updates;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
355
534
|
return inv;
|
|
356
535
|
}
|
|
357
536
|
async sendInventory(full) {
|
package/build/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "bee",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.2",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.2.2": {
|
|
7
|
+
"en": "Console: a shell on this system for the fleet management, off unless the owner allows it (Linux only); commands from the fleet management: start, stop and restart instances, restart ioBroker, install OS updates listed by js-controller; enrollment URL preset to https://bee.iobroker.click",
|
|
8
|
+
"de": "Konsole: eine Shell auf diesem System für die Flottenverwaltung, aus, bis der Besitzer sie erlaubt (nur Linux); Befehle der Flottenverwaltung: Instanzen starten, stoppen und neu starten, ioBroker neu starten, von js-controller gemeldete OS-Updates einspielen; Enrollment-URL mit https://bee.iobroker.click vorbelegt"
|
|
9
|
+
},
|
|
6
10
|
"0.2.0": {
|
|
7
11
|
"en": "Remote access to admin and vis-2 through a tunnel to the fleet server, switchable per kind by the owner; versions and adapter packages (tgz) set per asset by the fleet server",
|
|
8
12
|
"de": "Fernzugriff auf admin und vis-2 über einen Tunnel zum Flottenserver, je Art vom Besitzer abschaltbar; Versionen und Adapterpakete (tgz) je Anlage vom Flottenserver"
|
|
@@ -132,11 +136,12 @@
|
|
|
132
136
|
"enrollToken"
|
|
133
137
|
],
|
|
134
138
|
"native": {
|
|
135
|
-
"enrollUrl": "",
|
|
139
|
+
"enrollUrl": "https://bee.iobroker.click",
|
|
136
140
|
"enrollToken": "",
|
|
137
141
|
"comment": "",
|
|
138
142
|
"allowAdmin": true,
|
|
139
143
|
"allowVis": true,
|
|
144
|
+
"allowConsole": false,
|
|
140
145
|
"windowStart": "02:00",
|
|
141
146
|
"windowEnd": "05:00",
|
|
142
147
|
"ignoreWindow": false,
|
package/package.json
CHANGED