@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.
- package/README.md +6 -0
- package/bin/index.js +2 -0
- package/dist/edge-hub.js +1079 -0
- package/dist/edge-hub.js.map +1 -0
- package/dist/http-proxy.js +54 -0
- package/dist/http-proxy.js.map +1 -0
- package/dist/index.js +489 -0
- package/dist/index.js.map +1 -0
- package/dist/methods/devdevice.js +123 -0
- package/dist/methods/devdevice.js.map +1 -0
- package/dist/methods/environment.js +346 -0
- package/dist/methods/environment.js.map +1 -0
- package/dist/methods/index.js +24 -0
- package/dist/methods/index.js.map +1 -0
- package/dist/methods/network/ca.js +48 -0
- package/dist/methods/network/ca.js.map +1 -0
- package/dist/methods/network/hostname.js +56 -0
- package/dist/methods/network/hostname.js.map +1 -0
- package/dist/methods/network/lan.js +183 -0
- package/dist/methods/network/lan.js.map +1 -0
- package/dist/methods/network/wifi.js +289 -0
- package/dist/methods/network/wifi.js.map +1 -0
- package/dist/methods/reboot.js +22 -0
- package/dist/methods/reboot.js.map +1 -0
- package/dist/methods/ssh.js +148 -0
- package/dist/methods/ssh.js.map +1 -0
- package/dist/services/scheduler.service.js +325 -0
- package/dist/services/scheduler.service.js.map +1 -0
- package/dist/store/types/network-interface.type.js +3 -0
- package/dist/store/types/network-interface.type.js.map +1 -0
- package/dist/time-sync.js +109 -0
- package/dist/time-sync.js.map +1 -0
- package/dist/types/command.types.js +8 -0
- package/dist/types/command.types.js.map +1 -0
- package/dist/types/container.types.js +3 -0
- package/dist/types/container.types.js.map +1 -0
- package/dist/types/event.types.js +9 -0
- package/dist/types/event.types.js.map +1 -0
- package/dist/types/job.types.js +15 -0
- package/dist/types/job.types.js.map +1 -0
- package/dist/types/twin.types.js +21 -0
- package/dist/types/twin.types.js.map +1 -0
- package/dist/utilities/docker-progress-tracker.js +28 -0
- package/dist/utilities/docker-progress-tracker.js.map +1 -0
- package/dist/utilities/docker.js +819 -0
- package/dist/utilities/docker.js.map +1 -0
- package/dist/utilities/instances.js +169 -0
- package/dist/utilities/instances.js.map +1 -0
- package/dist/utilities/jobs.js +103 -0
- package/dist/utilities/jobs.js.map +1 -0
- package/dist/utilities/local-twins.js +204 -0
- package/dist/utilities/local-twins.js.map +1 -0
- package/dist/utilities/network-settings.js +147 -0
- package/dist/utilities/network-settings.js.map +1 -0
- package/dist/utilities/symlink.js +47 -0
- package/dist/utilities/symlink.js.map +1 -0
- package/dist/utilities/sysinfo.js +118 -0
- package/dist/utilities/sysinfo.js.map +1 -0
- package/dist/utilities/twin-manager.js +108 -0
- package/dist/utilities/twin-manager.js.map +1 -0
- 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"}
|