@phystack/phyctl-phyos 4.5.48-dev → 4.5.50-dev
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 +58 -0
- package/bin/index.js +1 -40
- package/dist/commands/local/index.js +98 -0
- package/dist/commands/local/index.js.map +1 -0
- package/dist/dialog/network/lan.dialog.js +270 -0
- package/dist/dialog/network/lan.dialog.js.map +1 -0
- package/dist/dialog/network/proxy.dialog.js +90 -0
- package/dist/dialog/network/proxy.dialog.js.map +1 -0
- package/dist/dialog/network/wifi.dialog.js +202 -0
- package/dist/dialog/network/wifi.dialog.js.map +1 -0
- package/dist/index.js +618 -0
- package/dist/index.js.map +1 -0
- package/dist/store/types/twin.types.js +20 -0
- package/dist/store/types/twin.types.js.map +1 -0
- package/dist/utilities/validators.js +35 -0
- package/dist/utilities/validators.js.map +1 -0
- package/package.json +10 -12
package/README.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# phyctl
|
|
2
|
+
|
|
3
|
+
PhyStack control plane CLI for managing PhyOS devices.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Download the pre-built binary for your platform. No runtime dependencies required.
|
|
8
|
+
|
|
9
|
+
### Linux (x86_64)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
curl -fsSL https://os.phygrid.com/phystack-npm/releases/latest/phyctl-linux-x64.tar.gz | tar xz
|
|
13
|
+
sudo mv phyctl /usr/local/bin/
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### macOS (Apple Silicon)
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
curl -fsSL https://os.phygrid.com/phystack-npm/releases/latest/phyctl-darwin-arm64.tar.gz | tar xz
|
|
20
|
+
sudo mv phyctl /usr/local/bin/
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### macOS (Intel)
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
curl -fsSL https://os.phygrid.com/phystack-npm/releases/latest/phyctl-darwin-x64.tar.gz | tar xz
|
|
27
|
+
sudo mv phyctl /usr/local/bin/
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Linux (ARM64)
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
curl -fsSL https://os.phygrid.com/phystack-npm/releases/latest/phyctl-linux-arm64.tar.gz | tar xz
|
|
34
|
+
sudo mv phyctl /usr/local/bin/
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Install a specific version
|
|
38
|
+
|
|
39
|
+
Replace `latest` with the version number:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
curl -fsSL https://os.phygrid.com/phystack-npm/releases/4.5.48/phyctl-linux-x64.tar.gz | tar xz
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Verify installation
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
phyctl --version
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Supported platforms
|
|
52
|
+
|
|
53
|
+
| Platform | Architecture | Download |
|
|
54
|
+
|----------|-------------|----------|
|
|
55
|
+
| Linux | x86_64 | `phyctl-linux-x64.tar.gz` |
|
|
56
|
+
| Linux | ARM64 | `phyctl-linux-arm64.tar.gz` |
|
|
57
|
+
| macOS | ARM64 | `phyctl-darwin-arm64.tar.gz` |
|
|
58
|
+
| macOS | x86_64 | `phyctl-darwin-x64.tar.gz` |
|
package/bin/index.js
CHANGED
|
@@ -1,41 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const { execFileSync } = require('child_process');
|
|
4
|
-
const path = require('path');
|
|
5
|
-
const os = require('os');
|
|
6
|
-
|
|
7
|
-
const PLATFORMS = {
|
|
8
|
-
'darwin-arm64': '@phystack/phyctl-darwin-arm64',
|
|
9
|
-
'darwin-x64': '@phystack/phyctl-darwin-x64',
|
|
10
|
-
'linux-x64': '@phystack/phyctl-linux-x64',
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
const platformKey = `${os.platform()}-${os.arch()}`;
|
|
14
|
-
const pkg = PLATFORMS[platformKey];
|
|
15
|
-
|
|
16
|
-
if (!pkg) {
|
|
17
|
-
console.error(`phyctl: unsupported platform ${platformKey}`);
|
|
18
|
-
console.error(`Supported platforms: ${Object.keys(PLATFORMS).join(', ')}`);
|
|
19
|
-
process.exit(1);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
try {
|
|
23
|
-
const pkgDir = path.dirname(require.resolve(`${pkg}/package.json`));
|
|
24
|
-
const binPath = path.join(pkgDir, 'phyctl');
|
|
25
|
-
|
|
26
|
-
if (!require('fs').existsSync(binPath)) {
|
|
27
|
-
console.error(`phyctl: binary not found at ${binPath}`);
|
|
28
|
-
console.error('The platform package may not have been built. Run: yarn build:binaries');
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
try {
|
|
33
|
-
execFileSync(binPath, process.argv.slice(2), { stdio: 'inherit' });
|
|
34
|
-
} catch (e) {
|
|
35
|
-
process.exit(e.status || 1);
|
|
36
|
-
}
|
|
37
|
-
} catch (e) {
|
|
38
|
-
console.error(`phyctl: failed to resolve platform package ${pkg}`);
|
|
39
|
-
console.error('Try reinstalling: npm install @phystack/phyctl-phyos');
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
2
|
+
require('../dist/index.js');
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setupLocalCommands = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
function setupLocalCommands(phyClient) {
|
|
6
|
+
const local = new commander_1.Command('local');
|
|
7
|
+
local
|
|
8
|
+
.command('create')
|
|
9
|
+
.description('Create a local twin')
|
|
10
|
+
.requiredOption('-t, --twin <json>', 'JSON string of twin properties')
|
|
11
|
+
.action(async (options) => {
|
|
12
|
+
try {
|
|
13
|
+
const config = JSON.parse(options.twin);
|
|
14
|
+
await new Promise((resolve, reject) => {
|
|
15
|
+
phyClient.emit('createLocalTwin', {
|
|
16
|
+
data: {
|
|
17
|
+
twin: config
|
|
18
|
+
}
|
|
19
|
+
}, (response) => {
|
|
20
|
+
if (response.status === 'success' && response.twin) {
|
|
21
|
+
console.log('Created local twin with ID:', response.twin.id);
|
|
22
|
+
resolve();
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
console.error('Failed to create local twin:', response.message);
|
|
26
|
+
reject(new Error(response.message));
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error('Error creating local twin:', error);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
local
|
|
37
|
+
.command('remove <twinId>')
|
|
38
|
+
.description('Remove a local twin')
|
|
39
|
+
.action(async (twinId) => {
|
|
40
|
+
try {
|
|
41
|
+
await new Promise((resolve, reject) => {
|
|
42
|
+
phyClient.emit('removeLocalTwin', {
|
|
43
|
+
data: {
|
|
44
|
+
twinId
|
|
45
|
+
}
|
|
46
|
+
}, (response) => {
|
|
47
|
+
if (response.status === 'success') {
|
|
48
|
+
console.log(`Successfully removed local twin: ${twinId}`);
|
|
49
|
+
resolve();
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.error('Failed to remove local twin:', response.message);
|
|
53
|
+
reject(new Error(response.message));
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error('Error removing local twin:', error);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
local
|
|
64
|
+
.command('list')
|
|
65
|
+
.description('List all local twins')
|
|
66
|
+
.action(async () => {
|
|
67
|
+
try {
|
|
68
|
+
await new Promise((resolve, reject) => {
|
|
69
|
+
phyClient.emit('listLocalTwins', {}, (response) => {
|
|
70
|
+
if (response.status === 'success') {
|
|
71
|
+
const twins = response.twins;
|
|
72
|
+
if (typeof twins === 'object' && twins !== null) {
|
|
73
|
+
Object.values(twins).forEach((twin) => {
|
|
74
|
+
const image = twin.properties?.desired?.image || 'N/A';
|
|
75
|
+
console.log(`${twin.id} (${image})`);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.log('No local twins found');
|
|
80
|
+
}
|
|
81
|
+
resolve();
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
console.error('Failed to list local twins:', response.message);
|
|
85
|
+
reject(new Error(response.message));
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error('Error listing local twins:', error);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
return local;
|
|
96
|
+
}
|
|
97
|
+
exports.setupLocalCommands = setupLocalCommands;
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/local/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,270 @@
|
|
|
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.setupEthernet = void 0;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const lodash_1 = require("lodash");
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
async function getGatewayForInterface(iface) {
|
|
11
|
+
return new Promise((resolve) => {
|
|
12
|
+
(0, child_process_1.exec)(`ip route show default dev ${iface}`, (error, stdout) => {
|
|
13
|
+
if (error || !stdout) {
|
|
14
|
+
return resolve('N/A');
|
|
15
|
+
}
|
|
16
|
+
const match = stdout.match(/default via (\S+)/);
|
|
17
|
+
if (match) {
|
|
18
|
+
resolve(match[1]);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
resolve('N/A');
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async function getDNSServersForInterface(iface) {
|
|
27
|
+
return new Promise((resolve) => {
|
|
28
|
+
(0, child_process_1.exec)('systemd-resolve --status', (error, stdout) => {
|
|
29
|
+
if (error || !stdout) {
|
|
30
|
+
return resolve([]);
|
|
31
|
+
}
|
|
32
|
+
const lines = stdout.split('\n');
|
|
33
|
+
let blockStarted = false;
|
|
34
|
+
let dnsServers = [];
|
|
35
|
+
for (let i = 0; i < lines.length; i++) {
|
|
36
|
+
const line = lines[i];
|
|
37
|
+
if (line.startsWith('Link') && line.includes(`(${iface})`)) {
|
|
38
|
+
blockStarted = true;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (blockStarted) {
|
|
42
|
+
if (line.trim() === '' || line.startsWith('Link')) {
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
if (line.trim().startsWith('DNS Servers:')) {
|
|
46
|
+
let serversLine = line.replace('DNS Servers:', '').trim();
|
|
47
|
+
dnsServers = serversLine.split(/\s+/).map(entry => entry.split('#')[0]).filter(entry => entry);
|
|
48
|
+
}
|
|
49
|
+
else if (dnsServers.length && line.startsWith(' ')) {
|
|
50
|
+
let additional = line.trim().split(/\s+/).map(entry => entry.split('#')[0]).filter(entry => entry);
|
|
51
|
+
dnsServers = dnsServers.concat(additional);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
resolve(dnsServers);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
const setupEthernet = async (phyClientInstance) => {
|
|
60
|
+
const prompt = inquirer_1.default.createPromptModule({
|
|
61
|
+
input: process.stdin,
|
|
62
|
+
output: process.stdout,
|
|
63
|
+
});
|
|
64
|
+
if (!phyClientInstance || !phyClientInstance.isConnected()) {
|
|
65
|
+
console.log('PhyDevice is not running or disconnected');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const deviceNetworksResponse = await phyClientInstance.getDeviceNetworks();
|
|
69
|
+
const updatedNetworks = deviceNetworksResponse.data;
|
|
70
|
+
const ethernetInterfaces = (0, lodash_1.get)(updatedNetworks, 'networkInterfaces', [])
|
|
71
|
+
.filter((iface) => {
|
|
72
|
+
return iface.type === 'wired' ||
|
|
73
|
+
(!iface.type && iface.ifaceName && (iface.ifaceName.startsWith('en') || iface.ifaceName.startsWith('eth')));
|
|
74
|
+
});
|
|
75
|
+
if (ethernetInterfaces.length === 0) {
|
|
76
|
+
console.log('No wired interfaces found.');
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const validateIP = (input) => {
|
|
80
|
+
const ipRegex = /^(\d{1,3}\.){3}\d{1,3}$/;
|
|
81
|
+
if (!ipRegex.test(input)) {
|
|
82
|
+
return 'Please enter a valid IP address (e.g., 192.168.1.100)';
|
|
83
|
+
}
|
|
84
|
+
const parts = input.split('.');
|
|
85
|
+
for (const part of parts) {
|
|
86
|
+
const num = parseInt(part);
|
|
87
|
+
if (num < 0 || num > 255) {
|
|
88
|
+
return 'Each octet must be between 0 and 255';
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return true;
|
|
92
|
+
};
|
|
93
|
+
const validateSubnetMask = (input) => {
|
|
94
|
+
const validSubnets = [
|
|
95
|
+
'255.0.0.0',
|
|
96
|
+
'255.128.0.0',
|
|
97
|
+
'255.192.0.0',
|
|
98
|
+
'255.224.0.0',
|
|
99
|
+
'255.240.0.0',
|
|
100
|
+
'255.248.0.0',
|
|
101
|
+
'255.252.0.0',
|
|
102
|
+
'255.254.0.0',
|
|
103
|
+
'255.255.0.0',
|
|
104
|
+
'255.255.128.0',
|
|
105
|
+
'255.255.192.0',
|
|
106
|
+
'255.255.224.0',
|
|
107
|
+
'255.255.240.0',
|
|
108
|
+
'255.255.248.0',
|
|
109
|
+
'255.255.252.0',
|
|
110
|
+
'255.255.254.0',
|
|
111
|
+
'255.255.255.0',
|
|
112
|
+
'255.255.255.128',
|
|
113
|
+
'255.255.255.192',
|
|
114
|
+
'255.255.255.224',
|
|
115
|
+
'255.255.255.240',
|
|
116
|
+
'255.255.255.248',
|
|
117
|
+
'255.255.255.252'
|
|
118
|
+
];
|
|
119
|
+
if (!validSubnets.includes(input)) {
|
|
120
|
+
return 'Please enter a valid subnet mask (e.g., 255.255.255.0)';
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
};
|
|
124
|
+
const ethernetInterfaceChoices = ethernetInterfaces.map((iface) => ({
|
|
125
|
+
name: `${iface.ifaceName} (${iface.ip4 || 'unconfigured'} ${iface.mac})`,
|
|
126
|
+
value: iface.iface,
|
|
127
|
+
}));
|
|
128
|
+
const interfaceAnswer = await prompt([
|
|
129
|
+
{
|
|
130
|
+
type: 'list',
|
|
131
|
+
name: 'iface',
|
|
132
|
+
message: 'Select Ethernet interface:',
|
|
133
|
+
choices: [
|
|
134
|
+
...ethernetInterfaceChoices,
|
|
135
|
+
new inquirer_1.default.Separator(),
|
|
136
|
+
{ name: 'Go back', value: 'back' },
|
|
137
|
+
new inquirer_1.default.Separator(),
|
|
138
|
+
],
|
|
139
|
+
}
|
|
140
|
+
]);
|
|
141
|
+
if (interfaceAnswer.iface === 'back') {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const selectedInterface = ethernetInterfaces.find((iface) => iface.iface === interfaceAnswer.iface);
|
|
145
|
+
if (!selectedInterface) {
|
|
146
|
+
console.log('Selected interface not found');
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const networkInterfaces = (0, lodash_1.get)(updatedNetworks, 'networkInterfaces', []);
|
|
150
|
+
const detailedInterface = networkInterfaces.find((ni) => ni.iface === selectedInterface.iface);
|
|
151
|
+
const gateway = await getGatewayForInterface(selectedInterface.iface);
|
|
152
|
+
const dnsServers = await getDNSServersForInterface(selectedInterface.iface);
|
|
153
|
+
console.log(`Current configuration for ${selectedInterface.ifaceName}:`);
|
|
154
|
+
console.log(`Mode: ${(detailedInterface && detailedInterface.dhcp === true) ? 'DHCP' : 'Static'}`);
|
|
155
|
+
console.log(`IP Address: ${selectedInterface.ip4 || 'N/A'}`);
|
|
156
|
+
console.log(`Netmask: ${selectedInterface.ip4subnet || 'N/A'}`);
|
|
157
|
+
console.log(`Gateway: ${gateway}`);
|
|
158
|
+
console.log(`Default Route: ${selectedInterface.default ? 'Yes' : 'No'}`);
|
|
159
|
+
console.log(`DNS Server(s): ${dnsServers.length > 0 ? dnsServers.join(', ') : 'N/A'}`);
|
|
160
|
+
const actionChoices = [];
|
|
161
|
+
if (!(detailedInterface && detailedInterface.dhcp === true)) {
|
|
162
|
+
actionChoices.push({ name: 'Use DHCP', value: 'dhcp' });
|
|
163
|
+
}
|
|
164
|
+
actionChoices.push({ name: 'Configure Static IP', value: 'static' });
|
|
165
|
+
if (!(selectedInterface.ip4 && selectedInterface.ip4.startsWith("169."))) {
|
|
166
|
+
actionChoices.push({ name: 'Disable Interface', value: 'disable' });
|
|
167
|
+
}
|
|
168
|
+
actionChoices.push(new inquirer_1.default.Separator());
|
|
169
|
+
actionChoices.push({ name: 'Go back', value: 'back' });
|
|
170
|
+
actionChoices.push(new inquirer_1.default.Separator());
|
|
171
|
+
const actionAnswer = await prompt([
|
|
172
|
+
{
|
|
173
|
+
type: 'list',
|
|
174
|
+
name: 'action',
|
|
175
|
+
message: 'Select configuration:',
|
|
176
|
+
choices: actionChoices,
|
|
177
|
+
}
|
|
178
|
+
]);
|
|
179
|
+
if (actionAnswer.action === 'back') {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
let ethernetConfig;
|
|
183
|
+
if (actionAnswer.action === 'disable') {
|
|
184
|
+
const { confirmDisable } = await prompt({
|
|
185
|
+
type: 'confirm',
|
|
186
|
+
name: 'confirmDisable',
|
|
187
|
+
message: 'Are you sure you want to disable this interface?',
|
|
188
|
+
default: false
|
|
189
|
+
});
|
|
190
|
+
if (confirmDisable) {
|
|
191
|
+
await new Promise((resolve) => {
|
|
192
|
+
phyClientInstance.emit('setLanNetwork', {
|
|
193
|
+
method: 'setLanNetwork',
|
|
194
|
+
data: {
|
|
195
|
+
iface: selectedInterface,
|
|
196
|
+
isDisconnectCurrentNetwork: true,
|
|
197
|
+
dhcp: false,
|
|
198
|
+
ip: null,
|
|
199
|
+
gw: null,
|
|
200
|
+
dns: null
|
|
201
|
+
}
|
|
202
|
+
}, () => {
|
|
203
|
+
console.log('Interface disabled');
|
|
204
|
+
resolve(null);
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
if (actionAnswer.action === 'dhcp') {
|
|
211
|
+
ethernetConfig = {
|
|
212
|
+
iface: selectedInterface,
|
|
213
|
+
dhcp: true,
|
|
214
|
+
ip: null,
|
|
215
|
+
gw: null,
|
|
216
|
+
dns: null
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
const staticConfig = await prompt([
|
|
221
|
+
{
|
|
222
|
+
type: 'input',
|
|
223
|
+
name: 'ip',
|
|
224
|
+
message: 'Enter IP address (e.g., 192.168.1.100):',
|
|
225
|
+
validate: validateIP
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
type: 'input',
|
|
229
|
+
name: 'subnet',
|
|
230
|
+
message: 'Enter subnet mask (e.g., 255.255.255.0):',
|
|
231
|
+
validate: validateSubnetMask
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
type: 'input',
|
|
235
|
+
name: 'gw',
|
|
236
|
+
message: 'Enter gateway IP (optional):',
|
|
237
|
+
validate: (input) => input.trim() === "" ? true : validateIP(input),
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
type: 'input',
|
|
241
|
+
name: 'dns',
|
|
242
|
+
message: 'Enter DNS server IP (optional):',
|
|
243
|
+
validate: (input) => input.trim() === "" ? true : validateIP(input),
|
|
244
|
+
}
|
|
245
|
+
]);
|
|
246
|
+
const subnetBits = staticConfig.subnet.split('.')
|
|
247
|
+
.map((octet) => parseInt(octet).toString(2).padStart(8, '0'))
|
|
248
|
+
.join('')
|
|
249
|
+
.split('1').length - 1;
|
|
250
|
+
const cidrIp = `${staticConfig.ip}/${subnetBits}`;
|
|
251
|
+
ethernetConfig = {
|
|
252
|
+
iface: selectedInterface,
|
|
253
|
+
dhcp: false,
|
|
254
|
+
ip: cidrIp,
|
|
255
|
+
gw: staticConfig.gw.trim() === "" ? null : staticConfig.gw,
|
|
256
|
+
dns: staticConfig.dns.trim() === "" ? null : staticConfig.dns
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
console.log(`Configuring ${selectedInterface.ifaceName} with ${ethernetConfig.dhcp === true ? 'DHCP' : 'Static IP'}`);
|
|
260
|
+
await new Promise((resolve) => {
|
|
261
|
+
phyClientInstance.emit('setLanNetwork', { data: ethernetConfig }, () => {
|
|
262
|
+
console.log('Network configuration updated');
|
|
263
|
+
resolve(null);
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
267
|
+
return;
|
|
268
|
+
};
|
|
269
|
+
exports.setupEthernet = setupEthernet;
|
|
270
|
+
//# sourceMappingURL=lan.dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lan.dialog.js","sourceRoot":"","sources":["../../../src/dialog/network/lan.dialog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
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.setupProxy = void 0;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const setupProxy = async (phyClientInstance) => {
|
|
9
|
+
while (true) {
|
|
10
|
+
if (!phyClientInstance || !phyClientInstance.isConnected()) {
|
|
11
|
+
console.log('PhyDevice is not running or disconnected');
|
|
12
|
+
break;
|
|
13
|
+
}
|
|
14
|
+
const answers = await inquirer_1.default.prompt([
|
|
15
|
+
{
|
|
16
|
+
type: 'list',
|
|
17
|
+
name: 'isDefaultProxySettings',
|
|
18
|
+
message: 'Choose an option:',
|
|
19
|
+
choices: [{
|
|
20
|
+
name: 'Set proxy settings',
|
|
21
|
+
value: false
|
|
22
|
+
}, {
|
|
23
|
+
name: 'Clear proxy settings',
|
|
24
|
+
value: true
|
|
25
|
+
}, new inquirer_1.default.Separator(), {
|
|
26
|
+
name: 'Go back',
|
|
27
|
+
value: 'back'
|
|
28
|
+
}, new inquirer_1.default.Separator()],
|
|
29
|
+
},
|
|
30
|
+
]);
|
|
31
|
+
if (answers.isDefaultProxySettings === 'back') {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
if (answers.isDefaultProxySettings === true) {
|
|
35
|
+
const proxyConfig = {
|
|
36
|
+
isDefaultProxySettings: true,
|
|
37
|
+
hostname: undefined,
|
|
38
|
+
port: undefined,
|
|
39
|
+
username: undefined,
|
|
40
|
+
password: undefined,
|
|
41
|
+
};
|
|
42
|
+
phyClientInstance.emit('setProxy', { data: proxyConfig }, async () => {
|
|
43
|
+
console.log('Proxy configuration updated');
|
|
44
|
+
});
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
if (answers.isDefaultProxySettings === false) {
|
|
48
|
+
const proxySettings = await inquirer_1.default.prompt([
|
|
49
|
+
{
|
|
50
|
+
type: 'input',
|
|
51
|
+
name: 'hostname',
|
|
52
|
+
message: 'Enter the hostname:',
|
|
53
|
+
validate: (input) => input.trim() !== '' || 'Hostname cannot be empty',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
type: 'input',
|
|
57
|
+
name: 'port',
|
|
58
|
+
message: 'Enter the port number:',
|
|
59
|
+
validate: (input) => !isNaN(Number(input)) && input.trim() !== '' || 'Port must be a valid number and cannot be empty',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'input',
|
|
63
|
+
name: 'username',
|
|
64
|
+
message: 'Enter the username:',
|
|
65
|
+
validate: (input) => input.trim() !== '' || 'Username cannot be empty',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
type: 'password',
|
|
69
|
+
name: 'password',
|
|
70
|
+
message: 'Enter the password:',
|
|
71
|
+
mask: '*',
|
|
72
|
+
validate: (input) => input.trim() !== '' || 'Password cannot be empty',
|
|
73
|
+
},
|
|
74
|
+
]);
|
|
75
|
+
const proxyConfig = {
|
|
76
|
+
isDefaultProxySettings: false,
|
|
77
|
+
hostname: proxySettings.hostname,
|
|
78
|
+
port: proxySettings.port,
|
|
79
|
+
username: proxySettings.username,
|
|
80
|
+
password: proxySettings.password,
|
|
81
|
+
};
|
|
82
|
+
phyClientInstance.emit('setProxy', { data: proxyConfig }, async () => {
|
|
83
|
+
console.log('Proxy configuration updated');
|
|
84
|
+
});
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
exports.setupProxy = setupProxy;
|
|
90
|
+
//# sourceMappingURL=proxy.dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.dialog.js","sourceRoot":"","sources":["../../../src/dialog/network/proxy.dialog.ts"],"names":[],"mappings":"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"}
|