@phystack/device-phyos 4.4.31

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 (61) hide show
  1. package/README.md +6 -0
  2. package/bin/index.js +2 -0
  3. package/dist/edge-hub.js +1079 -0
  4. package/dist/edge-hub.js.map +1 -0
  5. package/dist/http-proxy.js +54 -0
  6. package/dist/http-proxy.js.map +1 -0
  7. package/dist/index.js +489 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/methods/devdevice.js +123 -0
  10. package/dist/methods/devdevice.js.map +1 -0
  11. package/dist/methods/environment.js +346 -0
  12. package/dist/methods/environment.js.map +1 -0
  13. package/dist/methods/index.js +24 -0
  14. package/dist/methods/index.js.map +1 -0
  15. package/dist/methods/network/ca.js +48 -0
  16. package/dist/methods/network/ca.js.map +1 -0
  17. package/dist/methods/network/hostname.js +56 -0
  18. package/dist/methods/network/hostname.js.map +1 -0
  19. package/dist/methods/network/lan.js +183 -0
  20. package/dist/methods/network/lan.js.map +1 -0
  21. package/dist/methods/network/wifi.js +289 -0
  22. package/dist/methods/network/wifi.js.map +1 -0
  23. package/dist/methods/reboot.js +22 -0
  24. package/dist/methods/reboot.js.map +1 -0
  25. package/dist/methods/ssh.js +148 -0
  26. package/dist/methods/ssh.js.map +1 -0
  27. package/dist/services/scheduler.service.js +325 -0
  28. package/dist/services/scheduler.service.js.map +1 -0
  29. package/dist/store/types/network-interface.type.js +3 -0
  30. package/dist/store/types/network-interface.type.js.map +1 -0
  31. package/dist/time-sync.js +109 -0
  32. package/dist/time-sync.js.map +1 -0
  33. package/dist/types/command.types.js +8 -0
  34. package/dist/types/command.types.js.map +1 -0
  35. package/dist/types/container.types.js +3 -0
  36. package/dist/types/container.types.js.map +1 -0
  37. package/dist/types/event.types.js +9 -0
  38. package/dist/types/event.types.js.map +1 -0
  39. package/dist/types/job.types.js +15 -0
  40. package/dist/types/job.types.js.map +1 -0
  41. package/dist/types/twin.types.js +21 -0
  42. package/dist/types/twin.types.js.map +1 -0
  43. package/dist/utilities/docker-progress-tracker.js +28 -0
  44. package/dist/utilities/docker-progress-tracker.js.map +1 -0
  45. package/dist/utilities/docker.js +819 -0
  46. package/dist/utilities/docker.js.map +1 -0
  47. package/dist/utilities/instances.js +169 -0
  48. package/dist/utilities/instances.js.map +1 -0
  49. package/dist/utilities/jobs.js +103 -0
  50. package/dist/utilities/jobs.js.map +1 -0
  51. package/dist/utilities/local-twins.js +204 -0
  52. package/dist/utilities/local-twins.js.map +1 -0
  53. package/dist/utilities/network-settings.js +147 -0
  54. package/dist/utilities/network-settings.js.map +1 -0
  55. package/dist/utilities/symlink.js +47 -0
  56. package/dist/utilities/symlink.js.map +1 -0
  57. package/dist/utilities/sysinfo.js +118 -0
  58. package/dist/utilities/sysinfo.js.map +1 -0
  59. package/dist/utilities/twin-manager.js +108 -0
  60. package/dist/utilities/twin-manager.js.map +1 -0
  61. package/package.json +68 -0
@@ -0,0 +1,56 @@
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.updateHostname = void 0;
7
+ const util_1 = __importDefault(require("util"));
8
+ const child_process_1 = __importDefault(require("child_process"));
9
+ const updateHostname = async (displayName) => {
10
+ try {
11
+ const createHostsCommand = `
12
+ if [ ! -f /etc/hosts ]; then
13
+ echo "127.0.0.1 localhost edgehub phyos" | sudo tee /etc/hosts
14
+ sudo chmod 644 /etc/hosts
15
+ fi
16
+ `;
17
+ await util_1.default.promisify(child_process_1.default.exec)(createHostsCommand);
18
+ const command = `
19
+ new_hostname="${displayName}"
20
+ if [ "$(hostname)" != "$new_hostname" ]; then
21
+ echo "hostname requires update"
22
+ sudo hostnamectl set-hostname "$new_hostname" &&
23
+ echo "$new_hostname" | sudo tee /etc/hostname &&
24
+
25
+ # Replace 127.0.0.1 line with default entries + new hostname (remove any old/unwanted entries)
26
+ sudo sed -i 's/^127.0.0.1.*$/127.0.0.1 localhost edgehub phyos '"$new_hostname"'/' /etc/hosts &&
27
+
28
+ # Restart basic hostname services
29
+ sudo systemctl restart systemd-hostnamed
30
+ sudo systemctl restart systemd-resolved
31
+ sudo systemctl restart NetworkManager
32
+
33
+ # Reload systemd config just in case
34
+ sudo systemctl daemon-reload
35
+
36
+ # Fully stop avahi-daemon and its socket
37
+ sudo systemctl stop avahi-daemon.socket
38
+ sudo systemctl stop avahi-daemon.service
39
+ # Force-kill if still running (won't error if not)
40
+ sudo killall avahi-daemon || true
41
+ sleep 2
42
+
43
+ # Start them again
44
+ sudo systemctl start avahi-daemon.socket
45
+ sudo systemctl start avahi-daemon.service
46
+ fi
47
+ `;
48
+ await util_1.default.promisify(child_process_1.default.exec)(command);
49
+ }
50
+ catch (error) {
51
+ console.error('Failed to update hostname or restart services:', error);
52
+ }
53
+ };
54
+ exports.updateHostname = updateHostname;
55
+ exports.default = exports.updateHostname;
56
+ //# sourceMappingURL=hostname.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostname.js","sourceRoot":"","sources":["../../../src/methods/network/hostname.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,kEAA+B;AAExB,MAAM,cAAc,GAAG,KAAK,EAAE,WAAmB,EAAiB,EAAE;IACzE,IAAI,CAAC;QAEH,MAAM,kBAAkB,GAAG;;;;;KAK1B,CAAC;QACF,MAAM,cAAI,CAAC,SAAS,CAAC,uBAAE,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAGlD,MAAM,OAAO,GAAG;sBACE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4B5B,CAAC;QACF,MAAM,cAAI,CAAC,SAAS,CAAC,uBAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC;AACH,CAAC,CAAC;AA9CW,QAAA,cAAc,kBA8CzB;AAEF,kBAAe,sBAAc,CAAC"}
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.setLanNetwork = exports.configureWiredNetwork = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const yaml = __importStar(require("js-yaml"));
29
+ const network_settings_1 = require("../../utilities/network-settings");
30
+ const phy_logger_1 = require("@phystack/phy-logger");
31
+ const child_process_1 = require("child_process");
32
+ const logger = new phy_logger_1.PhyLogger({
33
+ logToFile: false,
34
+ logToConsole: true,
35
+ includeTrace: true,
36
+ namespace: 'lan.ts',
37
+ });
38
+ async function updateNetplanInterface(ifaceName, newConfig) {
39
+ let data;
40
+ console.log("updateNetplanInterface(): ifaceName:", ifaceName, "newConfig:", newConfig);
41
+ try {
42
+ const txt = await fs.promises.readFile('/etc/netplan/04-lan.yaml', 'utf8');
43
+ console.log("old 04-lan.yaml:", txt);
44
+ data = yaml.load(txt);
45
+ if (!data || !data.network) {
46
+ data = { network: { version: 2, ethernets: {} } };
47
+ }
48
+ if (!data.network.ethernets) {
49
+ data.network.ethernets = {};
50
+ }
51
+ }
52
+ catch (error) {
53
+ data = { network: { version: 2, ethernets: {} } };
54
+ }
55
+ data.network.ethernets[ifaceName] = newConfig;
56
+ const outYaml = yaml.dump(data);
57
+ console.log("new 04-lan.yaml:", outYaml);
58
+ await fs.promises.writeFile('/etc/netplan/04-lan.yaml', outYaml, { encoding: 'utf8', mode: 0o600 });
59
+ await fs.promises.chmod('/etc/netplan/04-lan.yaml', 0o600);
60
+ await (0, network_settings_1.applyNetworkSettings)();
61
+ }
62
+ function generateSelfAssignedIP(mac) {
63
+ const sanitizedMac = mac.replace(/[:\-]/g, '');
64
+ if (sanitizedMac.length >= 4) {
65
+ const octet1Hex = sanitizedMac.substring(sanitizedMac.length - 4, sanitizedMac.length - 2);
66
+ const octet2Hex = sanitizedMac.substring(sanitizedMac.length - 2);
67
+ const octet1 = parseInt(octet1Hex, 16);
68
+ const octet2 = parseInt(octet2Hex, 16);
69
+ return `169.254.${octet1}.${octet2}`;
70
+ }
71
+ return '169.254.1.1';
72
+ }
73
+ const saveLanSettings = async (settings) => {
74
+ const iface = settings.iface;
75
+ const config = { optional: true, dhcp6: false };
76
+ if (settings.dhcp) {
77
+ config.dhcp4 = true;
78
+ config['dhcp4-overrides'] = {
79
+ 'route-metric': 100,
80
+ };
81
+ }
82
+ else {
83
+ config.dhcp4 = false;
84
+ if (settings.ip) {
85
+ config.addresses = [settings.ip];
86
+ }
87
+ if (settings.dns) {
88
+ config.nameservers = { addresses: [settings.dns] };
89
+ }
90
+ if (settings.gw) {
91
+ config.routes = [{
92
+ to: "0.0.0.0/0",
93
+ via: settings.gw,
94
+ metric: 100,
95
+ }];
96
+ }
97
+ }
98
+ await updateNetplanInterface(iface.ifaceName, config);
99
+ };
100
+ const disconnectWiredNetwork = async (iface) => {
101
+ logger.info(`disconnectWiredNetwork(): Starting disconnect for ${iface.ifaceName}`);
102
+ try {
103
+ await new Promise((resolve, reject) => {
104
+ const ifup = (0, child_process_1.spawn)('sudo', ['ip', 'link', 'set', iface.ifaceName, 'up'], { stdio: 'pipe' });
105
+ ifup.on('close', (code) => {
106
+ if (code === 0)
107
+ resolve();
108
+ else
109
+ reject(new Error(`Failed to bring up interface with code ${code}`));
110
+ });
111
+ ifup.on('error', reject);
112
+ });
113
+ const selfAssignedIP = generateSelfAssignedIP(iface.mac);
114
+ const ipWithPrefix = `${selfAssignedIP}/16`;
115
+ const config = {
116
+ optional: true,
117
+ dhcp4: false,
118
+ dhcp6: false,
119
+ addresses: [ipWithPrefix],
120
+ 'routing-policy': [],
121
+ };
122
+ await updateNetplanInterface(iface.ifaceName, config);
123
+ logger.info(`disconnectWiredNetwork(): Successfully reset ${iface.ifaceName}`);
124
+ return {
125
+ status: 'success',
126
+ message: `Reset network configuration for ${iface.ifaceName}`,
127
+ };
128
+ }
129
+ catch (error) {
130
+ logger.error('disconnectWiredNetwork(): Error:', error);
131
+ return {
132
+ status: 'error',
133
+ message: `Failed to reset network configuration: ${error.message}`,
134
+ };
135
+ }
136
+ };
137
+ const configureWiredNetwork = async (lanConfiguration) => {
138
+ try {
139
+ let response;
140
+ if (lanConfiguration.isDisconnectCurrentNetwork) {
141
+ response = await disconnectWiredNetwork(lanConfiguration.iface);
142
+ }
143
+ else {
144
+ await saveLanSettings(lanConfiguration);
145
+ await (0, network_settings_1.applyNetworkSettings)();
146
+ response = { status: 'success', message: 'LAN network set' };
147
+ }
148
+ if (response.status === 'success') {
149
+ response.message = 'LAN network set';
150
+ }
151
+ return response;
152
+ }
153
+ catch (error) {
154
+ logger.error('Error saving wired network:', error);
155
+ return { status: 'error', message: 'LAN network did not set' };
156
+ }
157
+ };
158
+ exports.configureWiredNetwork = configureWiredNetwork;
159
+ const setLanNetwork = async (data) => {
160
+ logger.info(`setLanNetwork(): Configuring ${data.iface.ifaceName}`);
161
+ try {
162
+ if (data.isDisconnectCurrentNetwork) {
163
+ return await disconnectWiredNetwork(data.iface);
164
+ }
165
+ return await (0, exports.configureWiredNetwork)({
166
+ iface: data.iface,
167
+ dhcp: data.dhcp,
168
+ ip: data.ip,
169
+ gw: data.gw,
170
+ dns: data.dns,
171
+ });
172
+ }
173
+ catch (error) {
174
+ logger.error('setLanNetwork(): Error:', error);
175
+ return {
176
+ status: 'error',
177
+ message: `Failed to configure network: ${error.message}`,
178
+ };
179
+ }
180
+ };
181
+ exports.setLanNetwork = setLanNetwork;
182
+ exports.default = { saveLanSettings, disconnectWiredNetwork, updateNetplanInterface, generateSelfAssignedIP, configureWiredNetwork: exports.configureWiredNetwork, setLanNetwork: exports.setLanNetwork };
183
+ //# sourceMappingURL=lan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lan.js","sourceRoot":"","sources":["../../../src/methods/network/lan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.configureWirelessNetwork = exports.saveWirelessNetworkSettings = exports.connectWirelessNetwork = exports.disconnectWirelessNetwork = exports.loadWirelessNetworkSettings = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const yaml = __importStar(require("js-yaml"));
29
+ const child_process_1 = require("child_process");
30
+ const phy_logger_1 = require("@phystack/phy-logger");
31
+ const logger = new phy_logger_1.PhyLogger({
32
+ logToFile: false,
33
+ logToConsole: true,
34
+ includeTrace: true,
35
+ namespace: 'device-phyos > methods > wifi',
36
+ });
37
+ const loadWirelessNetworkSettings = (iface) => {
38
+ logger.info(`loadWirelessNetworkSettings(): Loading wireless network settings for interface ${iface.iface}`);
39
+ const settings = {
40
+ ssid: null,
41
+ key: null,
42
+ dhcp: true,
43
+ ip: null,
44
+ mac: iface?.mac ?? null,
45
+ up: !!(iface !== undefined),
46
+ dns: null,
47
+ gw: null,
48
+ hidden: null,
49
+ };
50
+ const configPath = '/etc/netplan/03-wifi.yaml';
51
+ if (fs.existsSync(configPath)) {
52
+ try {
53
+ const txt = fs.readFileSync(configPath, 'utf-8');
54
+ const data = yaml.load(txt);
55
+ if (data && data.network?.wifis?.[iface.iface]) {
56
+ const cfg = data.network.wifis[iface.iface];
57
+ settings.dhcp = cfg.dhcp4 ?? true;
58
+ settings.ip = null;
59
+ settings.dns = null;
60
+ settings.gw = null;
61
+ settings.ssid = null;
62
+ settings.key = null;
63
+ }
64
+ }
65
+ catch (error) {
66
+ logger.error(`loadWirelessNetworkSettings(): Error reading the configuration file: `, error);
67
+ }
68
+ }
69
+ return settings;
70
+ };
71
+ exports.loadWirelessNetworkSettings = loadWirelessNetworkSettings;
72
+ const deletePreviousConnection = async (iface) => {
73
+ logger.info(`deletePreviousConnection(): Attempting to delete previous network connection for interface ${iface.iface}`);
74
+ const configPath = '/etc/netplan/03-wifi.yaml';
75
+ let previousSSID = null;
76
+ if (fs.existsSync(configPath)) {
77
+ try {
78
+ const txt = fs.readFileSync(configPath, 'utf8');
79
+ const data = yaml.load(txt);
80
+ const ifaceConfig = data?.network?.wifis?.[iface.iface];
81
+ if (ifaceConfig && ifaceConfig['access-points']) {
82
+ const ssids = Object.keys(ifaceConfig['access-points']);
83
+ if (ssids.length > 0) {
84
+ previousSSID = ssids[0];
85
+ }
86
+ }
87
+ }
88
+ catch (error) {
89
+ logger.warn(`deletePreviousConnection(): Could not read previous network SSID from config file:`, error);
90
+ }
91
+ }
92
+ if (previousSSID) {
93
+ logger.info(`deletePreviousConnection(): Deleting connection profile for SSID: ${previousSSID}`);
94
+ await new Promise((resolve, reject) => {
95
+ const deleteConn = (0, child_process_1.spawn)('sudo', ['nmcli', 'connection', 'delete', previousSSID], { stdio: 'pipe' });
96
+ deleteConn.on('close', (code) => {
97
+ if (code === 0 || code === 10)
98
+ resolve();
99
+ else
100
+ reject(new Error(`Failed to delete connection ${previousSSID} with code ${code}`));
101
+ });
102
+ deleteConn.on('error', reject);
103
+ });
104
+ }
105
+ else {
106
+ logger.info(`deletePreviousConnection(): No previous network connection found to delete.`);
107
+ }
108
+ };
109
+ const disconnectWirelessNetwork = async (iface) => {
110
+ logger.info(`disconnectWirelessNetwork(): Starting disconnect process for interface: ${iface.iface}`);
111
+ try {
112
+ await new Promise((resolve, reject) => {
113
+ const disconnect = (0, child_process_1.spawn)('sudo', ['nmcli', 'device', 'disconnect', iface.iface], { stdio: 'pipe' });
114
+ disconnect.on('close', (code) => {
115
+ if (code === 0 || code === 6)
116
+ resolve();
117
+ else
118
+ reject(new Error(`Failed to disconnect with code ${code}`));
119
+ });
120
+ disconnect.on('error', reject);
121
+ });
122
+ await deletePreviousConnection(iface);
123
+ await new Promise((resolve, reject) => {
124
+ const setManaged = (0, child_process_1.spawn)('sudo', ['nmcli', 'device', 'set', iface.iface, 'managed', 'yes'], { stdio: 'pipe' });
125
+ setManaged.on('close', (code) => {
126
+ if (code === 0)
127
+ resolve();
128
+ else
129
+ reject(new Error(`Failed to set device as managed with code ${code}`));
130
+ });
131
+ setManaged.on('error', reject);
132
+ });
133
+ const updatedSettings = {
134
+ ssid: "",
135
+ key: "",
136
+ dhcp: true,
137
+ ip: null,
138
+ mac: iface?.mac ?? null,
139
+ up: false,
140
+ dns: null,
141
+ gw: null,
142
+ hidden: null,
143
+ };
144
+ await (0, exports.saveWirelessNetworkSettings)(updatedSettings, iface.iface);
145
+ logger.info(`disconnectWirelessNetwork(): Successfully disconnected interface ${iface.iface}`);
146
+ return {
147
+ status: 'success',
148
+ message: `Disconnected from wireless network on interface ${iface.iface}`
149
+ };
150
+ }
151
+ catch (error) {
152
+ logger.error('disconnectWirelessNetwork(): Error:', error);
153
+ return {
154
+ status: 'error',
155
+ message: `Failed to disconnect wireless network: ${error.message}`
156
+ };
157
+ }
158
+ };
159
+ exports.disconnectWirelessNetwork = disconnectWirelessNetwork;
160
+ const connectWirelessNetwork = async (wirelessConfig) => {
161
+ try {
162
+ logger.debug('connectWirelessNetwork(): Starting with config:', JSON.stringify(wirelessConfig, null, 2));
163
+ const { ssid, key, iface } = wirelessConfig;
164
+ const currentSettings = (0, exports.loadWirelessNetworkSettings)(iface);
165
+ if (currentSettings.ssid) {
166
+ logger.info(`connectWirelessNetwork(): Currently connected to ${currentSettings.ssid}, disconnecting first`);
167
+ await (0, exports.disconnectWirelessNetwork)(iface);
168
+ }
169
+ await new Promise((resolve, reject) => {
170
+ const setManaged = (0, child_process_1.spawn)('sudo', ['nmcli', 'device', 'set', iface.iface, 'managed', 'yes'], { stdio: 'pipe' });
171
+ setManaged.on('close', (code) => {
172
+ if (code === 0)
173
+ resolve();
174
+ else
175
+ reject(new Error(`Failed to set device as managed with code ${code}`));
176
+ });
177
+ setManaged.on('error', reject);
178
+ });
179
+ await deletePreviousConnection(iface);
180
+ await new Promise((resolve, reject) => {
181
+ const connect = (0, child_process_1.spawn)('sudo', [
182
+ 'nmcli',
183
+ 'device',
184
+ 'wifi',
185
+ 'connect',
186
+ ssid,
187
+ 'password',
188
+ key,
189
+ 'ifname',
190
+ iface.iface
191
+ ], { stdio: 'pipe' });
192
+ connect.on('close', (code) => {
193
+ if (code === 0)
194
+ resolve();
195
+ else
196
+ reject(new Error(`Failed to connect with code ${code}`));
197
+ });
198
+ connect.on('error', reject);
199
+ });
200
+ const updatedSettings = {
201
+ ssid: ssid,
202
+ key: key,
203
+ dhcp: true,
204
+ ip: null,
205
+ mac: iface?.mac ?? null,
206
+ up: true,
207
+ dns: null,
208
+ gw: null,
209
+ hidden: null,
210
+ };
211
+ await (0, exports.saveWirelessNetworkSettings)(updatedSettings, iface.iface);
212
+ logger.info(`connectWirelessNetwork(): Successfully connected to network: ${ssid}`);
213
+ return { status: 'success', message: 'Wireless network connected' };
214
+ }
215
+ catch (error) {
216
+ logger.error('connectWirelessNetwork(): Error:', error);
217
+ return { status: 'error', message: `Failed to connect to wireless network: ${error}` };
218
+ }
219
+ };
220
+ exports.connectWirelessNetwork = connectWirelessNetwork;
221
+ const saveWirelessNetworkSettings = async (settings, ifname) => {
222
+ logger.info(`saveWirelessNetworkSettings(): Saving wireless network settings on interface: ${ifname}`);
223
+ const data = {
224
+ network: {
225
+ version: 2,
226
+ renderer: 'NetworkManager',
227
+ wifis: {
228
+ [ifname]: {
229
+ optional: true,
230
+ dhcp6: false,
231
+ 'access-points': {
232
+ [settings.ssid]: settings.key ? { password: settings.key } : {}
233
+ }
234
+ }
235
+ }
236
+ }
237
+ };
238
+ if (settings.dhcp) {
239
+ data.network.wifis[ifname].dhcp4 = true;
240
+ }
241
+ else {
242
+ data.network.wifis[ifname].dhcp4 = false;
243
+ if (settings.ip) {
244
+ data.network.wifis[ifname].addresses = [settings.ip];
245
+ }
246
+ if (settings.dns) {
247
+ data.network.wifis[ifname].nameservers = { addresses: [settings.dns] };
248
+ }
249
+ if (settings.gw) {
250
+ data.network.wifis[ifname].routes = [{
251
+ to: "0.0.0.0/0",
252
+ via: settings.gw,
253
+ metric: 200
254
+ }];
255
+ }
256
+ }
257
+ const txt = yaml.dump(data);
258
+ await fs.promises.writeFile('/etc/netplan/03-wifi.yaml', txt, { encoding: 'utf8', mode: 0o600 });
259
+ await new Promise((resolve, reject) => {
260
+ const netplanApply = (0, child_process_1.spawn)('sudo', ['netplan', 'apply'], { stdio: 'pipe' });
261
+ netplanApply.on('close', (code) => {
262
+ if (code === 0) {
263
+ resolve();
264
+ }
265
+ else {
266
+ reject(new Error(`netplan apply failed with exit code ${code}`));
267
+ }
268
+ });
269
+ netplanApply.on('error', reject);
270
+ });
271
+ };
272
+ exports.saveWirelessNetworkSettings = saveWirelessNetworkSettings;
273
+ const configureWirelessNetwork = async (config) => {
274
+ if (!config) {
275
+ return { status: 'error', message: 'Invalid configuration data' };
276
+ }
277
+ if (!config.iface?.iface) {
278
+ return { status: 'error', message: 'Invalid configuration - missing interface' };
279
+ }
280
+ if (config.isDisconnectCurrentNetwork) {
281
+ return await (0, exports.disconnectWirelessNetwork)(config.iface);
282
+ }
283
+ if (!config.ssid) {
284
+ return { status: 'error', message: 'Invalid configuration - missing SSID' };
285
+ }
286
+ return await (0, exports.connectWirelessNetwork)(config);
287
+ };
288
+ exports.configureWirelessNetwork = configureWirelessNetwork;
289
+ //# sourceMappingURL=wifi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wifi.js","sourceRoot":"","sources":["../../../src/methods/network/wifi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
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
+ const child_process_1 = __importDefault(require("child_process"));
7
+ exports.default = async () => {
8
+ console.log('Reboot command received');
9
+ await new Promise(resolve => setTimeout(resolve, 1000));
10
+ await new Promise(resolve => child_process_1.default.exec('systemctl reboot', {}, err => {
11
+ if (err) {
12
+ console.error('Failed to execute reboot:', err);
13
+ resolve(false);
14
+ }
15
+ else {
16
+ console.log('Reboot initiated successfully.');
17
+ resolve(true);
18
+ }
19
+ }));
20
+ return 'rebooting';
21
+ };
22
+ //# sourceMappingURL=reboot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reboot.js","sourceRoot":"","sources":["../../src/methods/reboot.ts"],"names":[],"mappings":";;;;;AAAA,kEAA+B;AAE/B,kBAAe,KAAK,IAAI,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAExD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAC1B,uBAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE;QACpC,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}