@phystack/device-phyos 4.5.56-dev → 4.5.57-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.
Files changed (65) hide show
  1. package/bin/phydevice +0 -0
  2. package/package.json +9 -9
  3. package/bin/index.js +0 -2
  4. package/dist/edge-hub.js +0 -1125
  5. package/dist/edge-hub.js.map +0 -1
  6. package/dist/http-proxy.js +0 -106
  7. package/dist/http-proxy.js.map +0 -1
  8. package/dist/index.js +0 -491
  9. package/dist/index.js.map +0 -1
  10. package/dist/methods/devdevice.js +0 -123
  11. package/dist/methods/devdevice.js.map +0 -1
  12. package/dist/methods/environment.js +0 -356
  13. package/dist/methods/environment.js.map +0 -1
  14. package/dist/methods/index.js +0 -24
  15. package/dist/methods/index.js.map +0 -1
  16. package/dist/methods/network/ca.js +0 -48
  17. package/dist/methods/network/ca.js.map +0 -1
  18. package/dist/methods/network/hostname.js +0 -56
  19. package/dist/methods/network/hostname.js.map +0 -1
  20. package/dist/methods/network/lan.js +0 -193
  21. package/dist/methods/network/lan.js.map +0 -1
  22. package/dist/methods/network/wifi.js +0 -299
  23. package/dist/methods/network/wifi.js.map +0 -1
  24. package/dist/methods/password.js +0 -87
  25. package/dist/methods/password.js.map +0 -1
  26. package/dist/methods/reboot.js +0 -22
  27. package/dist/methods/reboot.js.map +0 -1
  28. package/dist/methods/ssh.js +0 -148
  29. package/dist/methods/ssh.js.map +0 -1
  30. package/dist/services/scheduler.service.js +0 -335
  31. package/dist/services/scheduler.service.js.map +0 -1
  32. package/dist/store/types/network-interface.type.js +0 -3
  33. package/dist/store/types/network-interface.type.js.map +0 -1
  34. package/dist/time-sync.js +0 -123
  35. package/dist/time-sync.js.map +0 -1
  36. package/dist/types/command.types.js +0 -8
  37. package/dist/types/command.types.js.map +0 -1
  38. package/dist/types/container.types.js +0 -3
  39. package/dist/types/container.types.js.map +0 -1
  40. package/dist/types/event.types.js +0 -9
  41. package/dist/types/event.types.js.map +0 -1
  42. package/dist/types/job.types.js +0 -15
  43. package/dist/types/job.types.js.map +0 -1
  44. package/dist/types/twin.types.js +0 -34
  45. package/dist/types/twin.types.js.map +0 -1
  46. package/dist/utilities/audio-control.js +0 -919
  47. package/dist/utilities/audio-control.js.map +0 -1
  48. package/dist/utilities/docker-progress-tracker.js +0 -33
  49. package/dist/utilities/docker-progress-tracker.js.map +0 -1
  50. package/dist/utilities/docker.js +0 -1090
  51. package/dist/utilities/docker.js.map +0 -1
  52. package/dist/utilities/instances.js +0 -236
  53. package/dist/utilities/instances.js.map +0 -1
  54. package/dist/utilities/jobs.js +0 -103
  55. package/dist/utilities/jobs.js.map +0 -1
  56. package/dist/utilities/local-twins.js +0 -204
  57. package/dist/utilities/local-twins.js.map +0 -1
  58. package/dist/utilities/network-settings.js +0 -147
  59. package/dist/utilities/network-settings.js.map +0 -1
  60. package/dist/utilities/symlink.js +0 -47
  61. package/dist/utilities/symlink.js.map +0 -1
  62. package/dist/utilities/sysinfo.js +0 -128
  63. package/dist/utilities/sysinfo.js.map +0 -1
  64. package/dist/utilities/twin-manager.js +0 -108
  65. package/dist/utilities/twin-manager.js.map +0 -1
@@ -1,204 +0,0 @@
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.localTwinManager = exports.LocalTwinManager = void 0;
7
- const uuid_1 = require("uuid");
8
- const fs_1 = __importDefault(require("fs"));
9
- const twin_types_1 = require("../types/twin.types");
10
- const phy_logger_1 = require("@phystack/phy-logger");
11
- const twin_manager_1 = require("./twin-manager");
12
- const LOCAL_TWINS_PATH = '/data/settings/phyhub/local-twins.json';
13
- const logger = new phy_logger_1.PhyLogger({
14
- logToFile: false,
15
- logToConsole: true,
16
- includeTrace: true,
17
- namespace: 'local-twins',
18
- });
19
- class LocalTwinManager {
20
- static instance;
21
- storage = { twins: {} };
22
- constructor() {
23
- this.loadStorage();
24
- }
25
- static getInstance() {
26
- if (!LocalTwinManager.instance) {
27
- LocalTwinManager.instance = new LocalTwinManager();
28
- }
29
- return LocalTwinManager.instance;
30
- }
31
- loadStorage() {
32
- if (!fs_1.default.existsSync(LOCAL_TWINS_PATH)) {
33
- this.saveStorage();
34
- return;
35
- }
36
- const content = fs_1.default.readFileSync(LOCAL_TWINS_PATH, 'utf8');
37
- this.storage = JSON.parse(content);
38
- }
39
- saveStorage() {
40
- try {
41
- const dir = LOCAL_TWINS_PATH.split('/').slice(0, -1).join('/');
42
- if (!fs_1.default.existsSync(dir)) {
43
- fs_1.default.mkdirSync(dir, { recursive: true });
44
- }
45
- fs_1.default.writeFileSync(LOCAL_TWINS_PATH, JSON.stringify(this.storage, null, 2));
46
- }
47
- catch (error) {
48
- logger.error(`Failed to save local twins storage: ${error}`);
49
- }
50
- }
51
- async reportEdgeTwinProperties(twinId, properties) {
52
- const twin = this.storage.twins[twinId];
53
- if (!twin) {
54
- logger.error(`reportEdgeTwinProperties(): Twin ${twinId} not found`);
55
- return;
56
- }
57
- this.storage.twins[twinId] = {
58
- ...twin,
59
- properties: {
60
- desired: twin.properties.desired,
61
- reported: {
62
- ...twin.properties.reported,
63
- ...properties
64
- }
65
- }
66
- };
67
- this.saveStorage();
68
- }
69
- async getAllLocalTwins() {
70
- return this.storage.twins;
71
- }
72
- async getCachedTwins(twinId) {
73
- if (twinId) {
74
- return this.storage.twins[twinId];
75
- }
76
- const twinsByType = {};
77
- Object.values(this.storage.twins).forEach(twin => {
78
- if (!twinsByType[twin.type]) {
79
- twinsByType[twin.type] = [];
80
- }
81
- twinsByType[twin.type].push(twin.id);
82
- });
83
- return twinsByType;
84
- }
85
- async cacheTwins(twins) {
86
- twins.forEach(twin => {
87
- this.storage.twins[twin.id] = twin;
88
- });
89
- this.saveStorage();
90
- }
91
- async removeCachedTwin(twinId) {
92
- const ids = Array.isArray(twinId) ? twinId : [twinId];
93
- ids.forEach(id => {
94
- delete this.storage.twins[id];
95
- });
96
- this.saveStorage();
97
- }
98
- async createLocalTwin(config, deviceId, tenantId) {
99
- if (config.properties?.desired?.containerCreateOptions) {
100
- config.properties.desired.createOptions = config.properties.desired.containerCreateOptions;
101
- delete config.properties.desired.containerCreateOptions;
102
- }
103
- const configImage = config.properties?.desired?.['docker-credentials']?.image || config.properties?.desired?.image;
104
- if (configImage) {
105
- const getBaseImageName = (image) => {
106
- const nameWithoutTag = image.split(':')[0];
107
- if (!nameWithoutTag.includes('/')) {
108
- return nameWithoutTag;
109
- }
110
- const parts = nameWithoutTag.split('/');
111
- if (parts.length === 2 && !parts[0].includes('.')) {
112
- return nameWithoutTag;
113
- }
114
- if (parts.length === 2 && parts[0] === 'library') {
115
- return parts[1];
116
- }
117
- return parts.slice(1).join('/');
118
- };
119
- const configBaseName = getBaseImageName(configImage);
120
- console.log(`Looking for twin with base image name: ${configBaseName}`);
121
- console.log(`Config image: ${configImage}`);
122
- const twinManager = await (0, twin_manager_1.getTwinManagerInstance)();
123
- const twinsByType = await twinManager.getCachedTwins();
124
- console.log(`Twins by type: ${JSON.stringify(twinsByType, null, 2)}`);
125
- const edgeTwinIds = twinsByType[twin_types_1.TwinTypeEnum.Edge] || [];
126
- console.log(`Found ${edgeTwinIds.length} edge twins to check`);
127
- const edgeTwins = await Promise.all(edgeTwinIds.map(async (id) => {
128
- const twin = await twinManager.getCachedTwins(id);
129
- console.log(`Retrieved twin ${id}: ${JSON.stringify(twin, null, 2)}`);
130
- return twin;
131
- }));
132
- for (const twin of edgeTwins) {
133
- if (!twin) {
134
- console.log('Skipping undefined twin');
135
- continue;
136
- }
137
- const twinImage = twin.properties?.desired?.image;
138
- if (!twinImage) {
139
- console.log(`Skipping twin ${twin.id}: no image`);
140
- continue;
141
- }
142
- const twinBaseName = getBaseImageName(twinImage);
143
- console.log(`Comparing twin ${twin.id} image: ${twinImage} (base: ${twinBaseName})`);
144
- if (configBaseName === twinBaseName) {
145
- console.log(`Found matching twin: ${twin.id}`);
146
- const twinId = twin.id;
147
- const updatedTwin = {
148
- ...twin,
149
- properties: {
150
- desired: config.properties?.desired,
151
- reported: twin.properties.reported
152
- },
153
- updatedAt: new Date(),
154
- lastStatusUpdatedAt: new Date(),
155
- };
156
- this.storage.twins[twinId] = updatedTwin;
157
- this.saveStorage();
158
- return twinId;
159
- }
160
- }
161
- console.log('No matching twin found after checking all twins');
162
- }
163
- const twinId = (0, uuid_1.v4)();
164
- const twin = {
165
- id: twinId,
166
- type: twin_types_1.TwinTypeEnum.Edge,
167
- deviceId: deviceId,
168
- tenantId: tenantId,
169
- version: 1,
170
- status: twin_types_1.TwinStatusEnum.Starting,
171
- notes: '',
172
- createdAt: new Date(),
173
- updatedAt: new Date(),
174
- lastStatusUpdatedAt: new Date(),
175
- properties: {
176
- desired: config.properties?.desired || config,
177
- reported: {
178
- lastError: undefined
179
- }
180
- }
181
- };
182
- this.storage.twins[twinId] = twin;
183
- this.saveStorage();
184
- return twinId;
185
- }
186
- updateLocalTwin(twinId, twin) {
187
- if (this.storage.twins[twinId]) {
188
- this.storage.twins[twinId] = twin;
189
- this.saveStorage();
190
- }
191
- }
192
- isLocalTwin(twinId) {
193
- return !!this.storage.twins[twinId];
194
- }
195
- listLocalTwins() {
196
- return Object.values(this.storage.twins);
197
- }
198
- getLocalTwin(twinId) {
199
- return this.storage.twins[twinId] || null;
200
- }
201
- }
202
- exports.LocalTwinManager = LocalTwinManager;
203
- exports.localTwinManager = LocalTwinManager.getInstance();
204
- //# sourceMappingURL=local-twins.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-twins.js","sourceRoot":"","sources":["../../src/utilities/local-twins.ts"],"names":[],"mappings":"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"}
@@ -1,147 +0,0 @@
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.ensureNetwork = exports.createNetwork = exports.removeNetwork = exports.networkExists = exports.applyNetworkSettings = void 0;
7
- const dockerode_1 = __importDefault(require("dockerode"));
8
- const docker = new dockerode_1.default();
9
- const phy_logger_1 = require("@phystack/phy-logger");
10
- const logger = new phy_logger_1.PhyLogger({
11
- logToFile: false,
12
- logToConsole: true,
13
- includeTrace: true,
14
- namespace: 'network-settings.ts',
15
- });
16
- const applyNetworkSettings = async () => {
17
- logger.info('applyNetworkSettings(): applying network settings');
18
- const { spawn } = require('child_process');
19
- try {
20
- await new Promise((resolve, reject) => {
21
- const netplanApply = spawn('sudo', ['netplan', 'apply'], { stdio: 'pipe' });
22
- let stdout = '';
23
- let stderr = '';
24
- netplanApply.stdout.on('data', (data) => {
25
- stdout += data.toString();
26
- });
27
- netplanApply.stderr.on('data', (data) => {
28
- stderr += data.toString();
29
- });
30
- netplanApply.on('close', (code) => {
31
- if (code === 0) {
32
- logger.info('applyNetworkSettings(): Netplan applied:', stdout);
33
- resolve();
34
- }
35
- else {
36
- reject(new Error(`Netplan apply failed with code ${code}: ${stderr}`));
37
- }
38
- });
39
- netplanApply.on('error', (error) => {
40
- reject(error);
41
- });
42
- });
43
- await new Promise((resolve, reject) => {
44
- const daemonReload = spawn('systemctl', ['daemon-reload'], { stdio: 'pipe' });
45
- let stdout = '';
46
- let stderr = '';
47
- daemonReload.stdout.on('data', (data) => {
48
- stdout += data.toString();
49
- });
50
- daemonReload.stderr.on('data', (data) => {
51
- stderr += data.toString();
52
- });
53
- daemonReload.on('close', (code) => {
54
- if (code === 0) {
55
- logger.info('applyNetworkSettings(): Daemon reloaded:', stdout);
56
- resolve();
57
- }
58
- else {
59
- reject(new Error(`Daemon reload failed with code ${code}: ${stderr}`));
60
- }
61
- });
62
- daemonReload.on('error', (error) => {
63
- reject(error);
64
- });
65
- });
66
- }
67
- catch (error) {
68
- logger.error('applyNetworkSettings(): Error:', error);
69
- throw error;
70
- }
71
- };
72
- exports.applyNetworkSettings = applyNetworkSettings;
73
- const networkExists = async (networkName) => {
74
- try {
75
- logger.info(`networkExists(): Checking for network ${networkName}`);
76
- const networks = await docker.listNetworks({ filters: { name: [networkName] } });
77
- return networks.length > 0;
78
- }
79
- catch (error) {
80
- logger.error(`networkExists(): Error checking for network ${networkName}`, error);
81
- return false;
82
- }
83
- };
84
- exports.networkExists = networkExists;
85
- const removeNetwork = async (networkName) => {
86
- try {
87
- const networks = await docker.listNetworks({ filters: { name: [networkName] } });
88
- if (networks.length > 0) {
89
- const network = docker.getNetwork(networks[0].Id);
90
- await network.remove();
91
- logger.info(`removeNetwork(): Network ${networkName} removed`);
92
- }
93
- }
94
- catch (error) {
95
- const isExpectedError = networkName === 'azure-iot-edge' &&
96
- error.statusCode === 404 &&
97
- (error.message?.includes('no such network') || error.message?.includes('unknown network'));
98
- if (!isExpectedError) {
99
- logger.error(`removeNetwork(): Failed to remove network ${networkName}`, error);
100
- }
101
- }
102
- };
103
- exports.removeNetwork = removeNetwork;
104
- const createNetwork = async (networkName, subnet) => {
105
- logger.info(`createNetwork(): Creating network ${networkName} with subnet ${subnet}`);
106
- try {
107
- await docker.createNetwork({
108
- Name: networkName,
109
- IPAM: {
110
- Driver: 'default',
111
- Config: [
112
- {
113
- Subnet: subnet,
114
- },
115
- ],
116
- },
117
- });
118
- logger.info(`createNetwork(): Network ${networkName} created with subnet ${subnet}`);
119
- }
120
- catch (error) {
121
- const isNetworkExistsError = error.statusCode === 409 &&
122
- error.message?.includes(`network with name ${networkName} already exists`);
123
- if (!isNetworkExistsError) {
124
- logger.error(`createNetwork(): Failed to create network ${networkName}`, error);
125
- }
126
- }
127
- };
128
- exports.createNetwork = createNetwork;
129
- const ensureNetwork = async () => {
130
- logger.info(`ensureNetwork(): Ensuring network`);
131
- const oldNetworkName = 'azure-iot-edge';
132
- const newNetworkName = 'phyos-edge-net';
133
- const subnet = '172.26.128.0/24';
134
- const oldExists = await (0, exports.networkExists)(oldNetworkName);
135
- if (oldExists) {
136
- await (0, exports.removeNetwork)(oldNetworkName);
137
- }
138
- const newExists = await (0, exports.networkExists)(newNetworkName);
139
- if (!newExists) {
140
- await (0, exports.createNetwork)(newNetworkName, subnet);
141
- }
142
- else {
143
- logger.info(`ensureNetwork(): Network ${newNetworkName} already exists`);
144
- }
145
- };
146
- exports.ensureNetwork = ensureNetwork;
147
- //# sourceMappingURL=network-settings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network-settings.js","sourceRoot":"","sources":["../../src/utilities/network-settings.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
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.ensureEnvSymlink = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const phy_logger_1 = require("@phystack/phy-logger");
9
- const logger = new phy_logger_1.PhyLogger({
10
- logToFile: false,
11
- logToConsole: true,
12
- includeTrace: true,
13
- namespace: 'symlink-utility',
14
- });
15
- const ensureEnvSymlink = () => {
16
- const targetPath = '/data/settings/phyos.env';
17
- const symlinkPath = '/etc/phyos.env';
18
- let symlinkFixed = false;
19
- try {
20
- fs_1.default.mkdirSync('/data/settings', { recursive: true });
21
- if (!fs_1.default.existsSync(targetPath)) {
22
- fs_1.default.writeFileSync(targetPath, 'PROD');
23
- }
24
- try {
25
- const currentTarget = fs_1.default.readlinkSync(symlinkPath);
26
- if (currentTarget !== targetPath) {
27
- fs_1.default.unlinkSync(symlinkPath);
28
- fs_1.default.symlinkSync(targetPath, symlinkPath);
29
- symlinkFixed = true;
30
- }
31
- }
32
- catch (error) {
33
- if (fs_1.default.existsSync(symlinkPath)) {
34
- fs_1.default.unlinkSync(symlinkPath);
35
- }
36
- fs_1.default.symlinkSync(targetPath, symlinkPath);
37
- symlinkFixed = true;
38
- }
39
- return symlinkFixed;
40
- }
41
- catch (error) {
42
- logger.error('ensureEnvSymlink(): Failed to setup symlink:', error);
43
- return false;
44
- }
45
- };
46
- exports.ensureEnvSymlink = ensureEnvSymlink;
47
- //# sourceMappingURL=symlink.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"symlink.js","sourceRoot":"","sources":["../../src/utilities/symlink.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAEpB,qDAAiD;AAEjD,MAAM,MAAM,GAAG,IAAI,sBAAS,CAAC;IAC3B,SAAS,EAAE,KAAK;IAChB,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,iBAAiB;CAC7B,CAAC,CAAC;AAEI,MAAM,gBAAgB,GAAG,GAAY,EAAE;IAC5C,MAAM,UAAU,GAAG,0BAA0B,CAAC;IAC9C,MAAM,WAAW,GAAG,gBAAgB,CAAC;IACrC,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,IAAI,CAAC;QAEH,YAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAGpD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAGD,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,YAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACnD,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;gBACjC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC3B,YAAE,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBACxC,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC7B,CAAC;YACD,YAAE,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACxC,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AApCW,QAAA,gBAAgB,oBAoC3B"}
@@ -1,128 +0,0 @@
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 () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.getDeviceNetworks = getDeviceNetworks;
40
- const systeminformation_1 = __importDefault(require("systeminformation"));
41
- const child_process_1 = require("child_process");
42
- const util_1 = require("util");
43
- const fs = __importStar(require("fs"));
44
- const yaml = __importStar(require("js-yaml"));
45
- const execAsync = (0, util_1.promisify)(child_process_1.exec);
46
- async function isDhcpEnabled(iface) {
47
- try {
48
- try {
49
- if (fs.existsSync('/etc/netplan/04-lan.yaml')) {
50
- const lanConfig = yaml.load(fs.readFileSync('/etc/netplan/04-lan.yaml', 'utf8'));
51
- if (lanConfig?.network?.ethernets?.[iface]) {
52
- const ifaceConfig = lanConfig.network.ethernets[iface];
53
- if (ifaceConfig.dhcp4 === true) {
54
- return true;
55
- }
56
- else if (ifaceConfig.dhcp4 === false) {
57
- return false;
58
- }
59
- }
60
- }
61
- }
62
- catch (error) {
63
- console.error(`Error reading LAN netplan config for ${iface}:`, error);
64
- }
65
- try {
66
- if (fs.existsSync('/etc/netplan/03-wifi.yaml')) {
67
- const wifiConfig = yaml.load(fs.readFileSync('/etc/netplan/03-wifi.yaml', 'utf8'));
68
- if (wifiConfig?.network?.wifis?.[iface]) {
69
- const ifaceConfig = wifiConfig.network.wifis[iface];
70
- if (ifaceConfig.dhcp4 === true) {
71
- return true;
72
- }
73
- else if (ifaceConfig.dhcp4 === false) {
74
- return false;
75
- }
76
- }
77
- }
78
- }
79
- catch (error) {
80
- console.error(`Error reading WiFi netplan config for ${iface}:`, error);
81
- }
82
- const { stdout: nmOutput } = await execAsync(`nmcli device show ${iface} 2>/dev/null | grep "DHCP4.OPTION" || echo ""`);
83
- if (nmOutput.includes('DHCP4.OPTION')) {
84
- return true;
85
- }
86
- const { stdout: dhclientOutput } = await execAsync(`ps aux | grep "dhclient.*${iface}" | grep -v grep || echo ""`);
87
- if (dhclientOutput) {
88
- return true;
89
- }
90
- const { stdout: networkdOutput } = await execAsync(`networkctl status ${iface} 2>/dev/null | grep "DHCP" || echo ""`);
91
- if (networkdOutput.includes('DHCP: yes')) {
92
- return true;
93
- }
94
- return false;
95
- }
96
- catch (error) {
97
- console.error(`Error checking DHCP for ${iface}:`, error);
98
- return false;
99
- }
100
- }
101
- async function getDeviceNetworks() {
102
- const valueObject = {
103
- wifiInterfaces: '*',
104
- wifiNetworks: '*',
105
- wifiConnections: '*',
106
- };
107
- const info = await systeminformation_1.default.get(valueObject);
108
- let netIfaces = await systeminformation_1.default.networkInterfaces();
109
- if (!Array.isArray(netIfaces)) {
110
- netIfaces = [netIfaces];
111
- }
112
- netIfaces = await Promise.all(netIfaces.map(async (iface) => {
113
- const dhcp = await isDhcpEnabled(iface.iface);
114
- return {
115
- ...iface,
116
- dhcp,
117
- type: iface.type ||
118
- (iface.ifaceName &&
119
- (iface.ifaceName.startsWith('en') || iface.ifaceName.startsWith('eth'))
120
- ? 'wired'
121
- : 'unknown')
122
- };
123
- }));
124
- info.networkInterfaces = netIfaces;
125
- return info;
126
- }
127
- exports.default = getDeviceNetworks;
128
- //# sourceMappingURL=sysinfo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sysinfo.js","sourceRoot":"","sources":["../../src/utilities/sysinfo.ts"],"names":[],"mappings":"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"}
@@ -1,108 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTwinManagerInstance = exports.TwinManager = void 0;
4
- const local_twins_1 = require("./local-twins");
5
- const phy_logger_1 = require("@phystack/phy-logger");
6
- const logger = new phy_logger_1.PhyLogger({
7
- logToFile: false,
8
- logToConsole: true,
9
- includeTrace: true,
10
- namespace: 'twin-manager',
11
- });
12
- class TwinManager {
13
- static instance;
14
- hubDevice;
15
- constructor() { }
16
- static async getInstance() {
17
- if (!TwinManager.instance) {
18
- TwinManager.instance = new TwinManager();
19
- }
20
- return TwinManager.instance;
21
- }
22
- setHubDevice(hubDevice) {
23
- this.hubDevice = hubDevice;
24
- }
25
- async reportEdgeTwinProperties(twinId, properties) {
26
- if (local_twins_1.localTwinManager.isLocalTwin(twinId)) {
27
- return local_twins_1.localTwinManager.reportEdgeTwinProperties(twinId, properties);
28
- }
29
- return this.hubDevice.reportEdgeTwinProperties(twinId, properties);
30
- }
31
- async cacheHubTwin(twin) {
32
- if (!this.hubDevice)
33
- return;
34
- await this.hubDevice.cacheTwins([twin]);
35
- }
36
- async getAllLocalTwins() {
37
- return local_twins_1.localTwinManager.getAllLocalTwins();
38
- }
39
- async getLocalTwins() {
40
- return local_twins_1.localTwinManager.getCachedTwins();
41
- }
42
- async getCachedTwins(twinId) {
43
- const hubDeviceTwin = this.hubDevice ? await this.hubDevice.getCachedTwins(twinId) : {};
44
- if (twinId) {
45
- const localTwin = await local_twins_1.localTwinManager.getCachedTwins(twinId);
46
- if (localTwin) {
47
- if (hubDeviceTwin) {
48
- return {
49
- ...localTwin,
50
- properties: {
51
- desired: {
52
- ...hubDeviceTwin.properties.desired,
53
- image: localTwin.properties.desired.image,
54
- createOptions: localTwin.properties.desired.createOptions,
55
- },
56
- reported: {
57
- ...hubDeviceTwin.properties.reported,
58
- }
59
- }
60
- };
61
- }
62
- return localTwin;
63
- }
64
- return hubDeviceTwin;
65
- }
66
- const [hubTwins = {}, localTwins = {}] = await Promise.all([
67
- this.hubDevice ? this.hubDevice.getCachedTwins() : {},
68
- local_twins_1.localTwinManager.getCachedTwins(),
69
- ]);
70
- const mergedTwins = {};
71
- Object.entries(hubTwins).forEach(([type, ids]) => {
72
- mergedTwins[type] = [...ids];
73
- });
74
- Object.entries(localTwins).forEach(([type, localIds]) => {
75
- if (!mergedTwins[type]) {
76
- mergedTwins[type] = [];
77
- }
78
- localIds.forEach((localId) => {
79
- if (!mergedTwins[type].includes(localId)) {
80
- mergedTwins[type].unshift(localId);
81
- }
82
- else {
83
- mergedTwins[type] = mergedTwins[type].filter(id => id !== localId);
84
- mergedTwins[type].unshift(localId);
85
- }
86
- });
87
- });
88
- return mergedTwins;
89
- }
90
- getLocalTwinManager() {
91
- return local_twins_1.localTwinManager;
92
- }
93
- getHubDevice() {
94
- return this.hubDevice;
95
- }
96
- setScheduler(scheduler) {
97
- return this.hubDevice.setScheduler(scheduler);
98
- }
99
- async addTwin(twin) {
100
- return local_twins_1.localTwinManager.cacheTwins([twin]);
101
- }
102
- async removeTwin(twinId) {
103
- return local_twins_1.localTwinManager.removeCachedTwin(twinId);
104
- }
105
- }
106
- exports.TwinManager = TwinManager;
107
- exports.getTwinManagerInstance = TwinManager.getInstance;
108
- //# sourceMappingURL=twin-manager.js.map