@phystack/device-phyos 4.5.56-dev → 4.5.58-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/README.md +22 -35
  2. package/bin/index.js +22 -1
  3. package/package.json +13 -8
  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
package/dist/index.js DELETED
@@ -1,491 +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
- const fs_1 = __importDefault(require("fs"));
7
- const child_process_1 = require("child_process");
8
- const hub_device_1 = __importDefault(require("@phystack/hub-device"));
9
- const phy_logger_1 = require("@phystack/phy-logger");
10
- const edge_hub_1 = require("./edge-hub");
11
- const instances_1 = require("./utilities/instances");
12
- const methods_1 = require("./methods");
13
- const scheduler_service_1 = require("./services/scheduler.service");
14
- const time_sync_1 = __importDefault(require("./time-sync"));
15
- const environment_1 = require("./methods/environment");
16
- const ca_1 = require("./methods/network/ca");
17
- const twin_manager_1 = require("./utilities/twin-manager");
18
- const { connectToPhyHub } = hub_device_1.default;
19
- const phyosEnvPath = '/etc/phyos.env';
20
- const phyosVersionPath = '/etc/phyos.version';
21
- const credentialsMigrationPath = '/data/migration.json';
22
- const environmentFilePath = '/etc/environment';
23
- const regionFilePath = '/data/settings/phyhub/region.json';
24
- const customProxyFilePath = '/data/environment-custom-proxy';
25
- const logger = new phy_logger_1.PhyLogger({
26
- logToFile: false,
27
- logToConsole: true,
28
- includeTrace: true,
29
- namespace: 'device-phyos',
30
- });
31
- function sourceEnvironment() {
32
- let gridEnv = 'PROD';
33
- try {
34
- const symlinkFixed = (0, environment_1.ensureEnvironmentSymlink)();
35
- try {
36
- if (fs_1.default.existsSync(phyosEnvPath)) {
37
- const envContent = fs_1.default.readFileSync(phyosEnvPath, 'utf8').trim().toUpperCase();
38
- if (envContent === 'DEV' || envContent === 'QA') {
39
- gridEnv = envContent;
40
- }
41
- }
42
- }
43
- catch (error) {
44
- logger.warn('Error reading grid environment, defaulting to prod:', error);
45
- }
46
- if (symlinkFixed || !fs_1.default.existsSync(environmentFilePath)) {
47
- (0, environment_1.setDefaultEnvironmentConfiguration)(gridEnv);
48
- }
49
- const envContent = fs_1.default.readFileSync(environmentFilePath, 'utf8');
50
- const envLines = envContent.split('\n');
51
- for (const line of envLines) {
52
- if (line.trim() && !line.startsWith('#')) {
53
- const [key, value] = line.split('=');
54
- if (key && value) {
55
- process.env[key.trim()] = value.trim().replace(/["']/g, '');
56
- }
57
- }
58
- }
59
- }
60
- catch (error) {
61
- logger.error('Failed to read /etc/environment:', error);
62
- try {
63
- (0, environment_1.setDefaultEnvironmentConfiguration)(gridEnv);
64
- }
65
- catch (innerError) {
66
- logger.error('Failed to set default proxy configuration:', innerError);
67
- }
68
- }
69
- }
70
- function getSystemdJournalGid() {
71
- try {
72
- const groupFile = fs_1.default.readFileSync('/etc/group', 'utf8');
73
- const groups = groupFile.split('\n');
74
- const journalGroup = groups.find(line => line.startsWith('systemd-journal:'));
75
- if (!journalGroup) {
76
- throw new Error('systemd-journal group not found');
77
- }
78
- const gid = parseInt(journalGroup.split(':')[2]);
79
- if (isNaN(gid)) {
80
- throw new Error('Invalid GID for systemd-journal');
81
- }
82
- return gid;
83
- }
84
- catch (error) {
85
- logger.error('Failed to get systemd-journal GID:', error);
86
- return 0;
87
- }
88
- }
89
- function initializeFiles() {
90
- const PROVISIONING_CODE_PATH = '/tmp/provisioning_code';
91
- const LOG_PATH = '/data/log';
92
- try {
93
- if (!fs_1.default.existsSync(PROVISIONING_CODE_PATH)) {
94
- fs_1.default.writeFileSync(PROVISIONING_CODE_PATH, '');
95
- }
96
- fs_1.default.chmodSync(PROVISIONING_CODE_PATH, 0o666);
97
- if (!fs_1.default.existsSync(LOG_PATH)) {
98
- fs_1.default.mkdirSync(LOG_PATH, { recursive: true });
99
- }
100
- try {
101
- const journalGid = getSystemdJournalGid();
102
- fs_1.default.chownSync(LOG_PATH, 0, journalGid);
103
- fs_1.default.chmodSync(LOG_PATH, 0o2775);
104
- }
105
- catch (error) {
106
- logger.error('Failed to set log directory permissions:', error);
107
- setTimeout(() => process.exit(1), 1000);
108
- }
109
- }
110
- catch (error) {
111
- logger.error('Failed to initialize required files:', error);
112
- setTimeout(() => process.exit(1), 1000);
113
- }
114
- }
115
- function initializeProxy() {
116
- try {
117
- let needsDefaultConfig = true;
118
- if (fs_1.default.existsSync(environmentFilePath)) {
119
- const envContent = fs_1.default.readFileSync(environmentFilePath, 'utf8');
120
- const hasHttpProxy = envContent.includes('http_proxy=');
121
- const hasHttpsProxy = envContent.includes('https_proxy=');
122
- needsDefaultConfig = !hasHttpProxy && !hasHttpsProxy;
123
- }
124
- let gridEnv = 'PROD';
125
- try {
126
- if (fs_1.default.existsSync(phyosEnvPath)) {
127
- const envContent = fs_1.default.readFileSync(phyosEnvPath, 'utf8').trim().toUpperCase();
128
- if (envContent === 'DEV' || envContent === 'QA') {
129
- gridEnv = envContent;
130
- }
131
- }
132
- }
133
- catch (error) {
134
- logger.warn('initializeProxy(): Error reading grid environment, defaulting to prod:', error);
135
- }
136
- if (needsDefaultConfig) {
137
- logger.info('Proxy settings not found, setting default configuration for environment:', gridEnv);
138
- (0, environment_1.setDefaultEnvironmentConfiguration)(gridEnv);
139
- }
140
- else {
141
- logger.info('Proxy settings already exist, skipping default configuration');
142
- }
143
- }
144
- catch (error) {
145
- logger.error('Failed to check proxy settings:', error);
146
- try {
147
- (0, environment_1.setDefaultEnvironmentConfiguration)('PROD');
148
- }
149
- catch (innerError) {
150
- logger.error('Failed to set default proxy configuration:', innerError);
151
- setTimeout(() => process.exit(1), 1000);
152
- }
153
- }
154
- }
155
- try {
156
- initializeFiles();
157
- initializeProxy();
158
- sourceEnvironment();
159
- (0, environment_1.checkProxySettings)();
160
- }
161
- catch (error) {
162
- logger.error('Failed to initialize environment:', error);
163
- setTimeout(() => process.exit(1), 1000);
164
- }
165
- class DevicePhyos {
166
- GRID_ENV;
167
- PHYOS_VERSION;
168
- firstConnect;
169
- phyHubInterval;
170
- logger;
171
- scheduler = new scheduler_service_1.Scheduler();
172
- twinManager;
173
- constructor() {
174
- this.GRID_ENV = 'PROD';
175
- this.PHYOS_VERSION = 'N/A';
176
- this.firstConnect = false;
177
- this.phyHubInterval = null;
178
- this.logger = new phy_logger_1.PhyLogger({
179
- logToFile: false,
180
- logToConsole: true,
181
- includeTrace: true,
182
- namespace: 'device-phyos',
183
- });
184
- }
185
- async initialize() {
186
- await this.initializeEnvironment();
187
- await this.initializeTimeSync();
188
- this.logger.info(`Starting device phyos service 🟢-⚪-⚪-⚪-⚪`, {
189
- GRID_ENV: this.GRID_ENV,
190
- PHYOS_VERSION: this.PHYOS_VERSION
191
- });
192
- }
193
- async initializeEnvironment() {
194
- try {
195
- this.GRID_ENV = await fs_1.default.promises.readFile(phyosEnvPath, 'utf8').then(data => data.trim() || 'LOCAL');
196
- this.logger.info('initializeEnvironment(): Setting grid environment', {
197
- GRID_ENV: this.GRID_ENV,
198
- });
199
- }
200
- catch (error) {
201
- this.logger.error('initializeEnvironment(): Error reading grid environment', error);
202
- this.GRID_ENV = 'PROD';
203
- }
204
- try {
205
- this.PHYOS_VERSION = await fs_1.default.promises.readFile(phyosVersionPath, 'utf8').then(data => data.trim());
206
- this.logger.info('initializeEnvironment(): Setting PhyOS version', {
207
- PHYOS_VERSION: this.PHYOS_VERSION
208
- });
209
- }
210
- catch (error) {
211
- this.logger.error('initializeEnvironment(): Error reading PhyOS version', error);
212
- this.PHYOS_VERSION = 'N/A';
213
- }
214
- }
215
- async initializeTimeSync() {
216
- try {
217
- this.logger.info('initializeTimeSync(): Performing initial time sync');
218
- await (0, time_sync_1.default)();
219
- }
220
- catch (error) {
221
- this.logger.error('initializeTimeSync(): Initial time sync failed:', error);
222
- }
223
- }
224
- async initializeCachedInstances(twinManager) {
225
- const twinsInfoCache = await twinManager.getCachedTwins();
226
- console.log('initializeCachedInstances(): twinsInfoCache', twinsInfoCache);
227
- if (!twinsInfoCache || typeof twinsInfoCache !== 'object') {
228
- this.logger.info('initializeCachedInstances(): No cached twins found');
229
- return;
230
- }
231
- const allTwins = [];
232
- for (const type of Object.keys(twinsInfoCache)) {
233
- const twinIds = twinsInfoCache[type];
234
- if (!Array.isArray(twinIds))
235
- continue;
236
- const twins = await Promise.all(twinIds.map(async (twinId) => {
237
- const twin = await twinManager.getCachedTwins(twinId);
238
- return twin;
239
- }));
240
- allTwins.push(...twins.filter(Boolean));
241
- }
242
- if (allTwins.length > 0) {
243
- this.logger.info(`initializeCachedInstances(): Found ${allTwins.length} cached twin(s), initializing...`);
244
- await (0, instances_1.initInstances)(this.twinManager, allTwins);
245
- }
246
- else {
247
- this.logger.info('initializeCachedInstances(): No valid twins to initialize');
248
- }
249
- }
250
- async connectPhyHub(hubDevice) {
251
- this.twinManager = await (0, twin_manager_1.getTwinManagerInstance)();
252
- this.twinManager.setHubDevice(hubDevice);
253
- this.scheduler.setHubDevice(hubDevice);
254
- hubDevice.setScheduler(this.scheduler);
255
- hubDevice.onAuthReconnect(async () => {
256
- this.logger.info('connectPhyHub(): Device authenticated, resubscribing twins...');
257
- await edge_hub_1.EdgeHubServer.getInstance().resubscribeAllTwins();
258
- try {
259
- const cachedTwinsInfo = await this.twinManager.getCachedTwins();
260
- if (cachedTwinsInfo && typeof cachedTwinsInfo === 'object' && 'Device' in cachedTwinsInfo && Array.isArray(cachedTwinsInfo.Device) && cachedTwinsInfo.Device.length > 0) {
261
- const deviceTwinId = cachedTwinsInfo.Device[0];
262
- const deviceTwin = await this.twinManager.getCachedTwins(deviceTwinId);
263
- if (deviceTwin && deviceTwin.type === 'Device' && 'properties' in deviceTwin && deviceTwin.properties) {
264
- const deviceProps = deviceTwin.properties;
265
- const jobs = deviceProps.reported?.jobs || [];
266
- const timezone = deviceProps.desired?.timezone || 'UTC';
267
- this.logger.info(`connectPhyHub(): Re-processing ${jobs.length} jobs after reconnection`);
268
- this.scheduler.processJobs(jobs, timezone, deviceTwinId);
269
- }
270
- }
271
- }
272
- catch (error) {
273
- this.logger.error('connectPhyHub(): Failed to re-process scheduler jobs after reconnection', error);
274
- }
275
- });
276
- await hubDevice.connect();
277
- this.logger.info('connectPhyHub(): Connected to PhyHub');
278
- hubDevice.connectDevice(async (response) => {
279
- const { twins } = response;
280
- console.log('connectPhyHub(): response', response);
281
- const deviceTwin = twins?.find((twin) => twin.type === 'Device');
282
- const deviceId = deviceTwin?.deviceId;
283
- if (!deviceId) {
284
- this.logger.warn('connectPhyHub(): Missing required device ID in response');
285
- return;
286
- }
287
- this.logger.info(`connectPhyHub(): Device connected with details:`, { deviceId });
288
- if (deviceId) {
289
- let shouldUpdateEnvironment = false;
290
- try {
291
- if (fs_1.default.existsSync(environmentFilePath)) {
292
- const envContent = fs_1.default.readFileSync(environmentFilePath, 'utf8');
293
- shouldUpdateEnvironment = envContent.includes('unprovisioned:device@');
294
- }
295
- else {
296
- shouldUpdateEnvironment = true;
297
- }
298
- }
299
- catch (error) {
300
- this.logger.warn('connectPhyHub(): Failed to read environment file:', error);
301
- shouldUpdateEnvironment = true;
302
- }
303
- if (shouldUpdateEnvironment) {
304
- try {
305
- const proxyConfig = {
306
- region: hubDevice.region,
307
- port: 443,
308
- username: deviceId,
309
- password: 'device',
310
- timezone: deviceTwin?.properties?.desired?.timezone || 'Etc/UTC'
311
- };
312
- this.logger.info('connectPhyHub(): Environment contains unprovisioned username, configuring with device credentials:', proxyConfig);
313
- await (0, environment_1.setEnvironmentConfiguration)(proxyConfig);
314
- this.logger.info('connectPhyHub(): Environment configuration completed successfully');
315
- }
316
- catch (error) {
317
- this.logger.error('connectPhyHub(): Failed to configure provisioned environment, continuing with unprovisioned environment:', error);
318
- }
319
- }
320
- else {
321
- this.logger.info('connectPhyHub(): Environment already provisioned with device credentials, skipping configuration');
322
- }
323
- }
324
- if (!this.firstConnect) {
325
- this.firstConnect = true;
326
- }
327
- if (twins?.length) {
328
- this.logger.info('connectPhyHub(): Caching twins from server response...');
329
- await Promise.all(twins.map((twin) => this.twinManager.cacheHubTwin(twin)));
330
- this.logger.info(`connectPhyHub(): Cached ${twins.length} twins from hub`);
331
- const twinsByType = await this.twinManager.getCachedTwins();
332
- const allTwinIds = Object.values(twinsByType).flat();
333
- this.logger.info(`connectPhyHub(): Found ${allTwinIds.length} total twins after caching`);
334
- const allTwins = await Promise.all(allTwinIds.map(id => this.twinManager.getCachedTwins(id)));
335
- console.log(`connectPhyHub(): allTwins ${allTwins.length}`);
336
- await (0, instances_1.initInstances)(this.twinManager, allTwins);
337
- await (0, methods_1.initMethods)(hubDevice);
338
- }
339
- });
340
- await this.initializeCachedInstances(this.twinManager);
341
- hubDevice.setTwinUpdateHandler(async (twin) => {
342
- this.logger.info('connectPhyHub() on setTwinUpdateHandler(): Twin update received, updating instance...');
343
- await this.twinManager.cacheHubTwin(twin);
344
- if (twin.type === 'Device' && twin.properties?.desired?.timezone) {
345
- try {
346
- const region = JSON.parse(fs_1.default.readFileSync(regionFilePath, 'utf8'));
347
- const proxyConfig = {
348
- region,
349
- port: 443,
350
- username: twin.deviceId,
351
- password: 'device',
352
- timezone: twin.properties.desired.timezone
353
- };
354
- this.logger.info('connectPhyHub(): Updating environment with:', proxyConfig);
355
- await (0, environment_1.setTZinEnvFile)(twin.properties.desired.timezone);
356
- }
357
- catch (error) {
358
- this.logger.error('connectPhyHub(): Failed to update environment with new timezone:', error);
359
- }
360
- }
361
- await (0, instances_1.updateInstances)(this.twinManager, [
362
- (await this.twinManager.getCachedTwins(twin.id)),
363
- ]);
364
- });
365
- hubDevice.setTwinRemoveHandler(async (twin) => {
366
- this.logger.info('connectPhyHub() on setTwinRemoveHandler(): Twin remove event received, removing instance twin...', twin);
367
- await (0, instances_1.removeInstances)(this.twinManager, [twin]);
368
- });
369
- hubDevice.on('setCACertificate', async (payload, callback) => {
370
- try {
371
- const config = payload.data;
372
- const result = await (0, ca_1.configureCACertificate)(config);
373
- callback && callback(null, { status: result ? 'success' : 'error' });
374
- }
375
- catch (error) {
376
- console.error('Error configuring CA certificate:', error);
377
- callback && callback(error);
378
- }
379
- });
380
- hubDevice.on('twinMessage', async (payload, callback) => {
381
- await edge_hub_1.EdgeHubServer.getInstance().handleTwinMessage(payload, callback, true);
382
- });
383
- hubDevice.on('twinUpdated', async (payload, callback) => {
384
- this.logger.info('connectPhyHub() on twinUpdated(): Twin update received, forwarding to edge-hub...');
385
- await edge_hub_1.EdgeHubServer.getInstance().handleTwinUpdated(payload, callback, true);
386
- });
387
- }
388
- migrateDeviceCredentialsToPhyOS() {
389
- this.logger.info('migrateDeviceCredentialsToPhyOS(): Checking if legacy GridOS/PhyOS device');
390
- try {
391
- if (fs_1.default.existsSync(customProxyFilePath)) {
392
- this.logger.info('migrateDeviceCredentialsToPhyOS(): Custom proxy file found, migrating proxy settings');
393
- (0, child_process_1.execSync)('sudo mv /data/environment-custom-proxy /data/settings/environment');
394
- (0, child_process_1.execSync)('sudo rm /etc/environment');
395
- (0, child_process_1.execSync)('sudo ln -sf /data/settings/environment /etc/environment');
396
- process.exit(0);
397
- }
398
- if (fs_1.default.existsSync(credentialsMigrationPath)) {
399
- const data = fs_1.default.readFileSync(credentialsMigrationPath, 'utf-8');
400
- const credentials = JSON.parse(data);
401
- if (credentials.deviceId && credentials.accessKey && credentials.deviceSerial && credentials.region) {
402
- fs_1.default.unlinkSync(credentialsMigrationPath);
403
- return credentials;
404
- }
405
- }
406
- }
407
- catch (error) {
408
- this.logger.error(`migrateDeviceCredentialsToPhyOS(): Error reading file: ${error}`);
409
- }
410
- return undefined;
411
- }
412
- async getPhyHub() {
413
- this.logger.info('getPhyHub(): Attempting to connect to PhyHub');
414
- let credentials = undefined;
415
- this.logger.info('getPhyHub(): Checking if migrating legacy device');
416
- credentials = this.migrateDeviceCredentialsToPhyOS();
417
- if (credentials && credentials.deviceId && credentials.accessKey && credentials.deviceSerial) {
418
- this.logger.info('getPhyHub(): Migrating credentials for legacy device');
419
- }
420
- else {
421
- this.logger.info('getPhyHub(): Not a legacy device, attempting to provision device');
422
- }
423
- const connectionStatus = await connectToPhyHub(this.GRID_ENV, this.PHYOS_VERSION, credentials);
424
- if (!connectionStatus) {
425
- this.logger.warn('getPhyHub(): No connection status received from PhyHub');
426
- return;
427
- }
428
- this.logger.info('getPhyHub(): PhyHub connection details', { connectionStatus });
429
- const { phyHub: phyHubInstance } = connectionStatus;
430
- if (phyHubInstance) {
431
- console.log('found phyHubInstance', { phyHubInstance });
432
- if (this.phyHubInterval) {
433
- clearInterval(this.phyHubInterval);
434
- }
435
- phyHubInstance.setScheduler(this.scheduler);
436
- await this.connectPhyHub(phyHubInstance);
437
- }
438
- }
439
- async start() {
440
- try {
441
- await this.initialize();
442
- this.logger.info('start(): Verifying scheduler initialization');
443
- if (!this.scheduler) {
444
- this.scheduler = new scheduler_service_1.Scheduler();
445
- this.logger.info('start(): Created new scheduler instance');
446
- }
447
- (0, edge_hub_1.startEdgeHub)().catch(error => {
448
- this.logger.error('start(): Error starting edgeHub messaging', error);
449
- });
450
- this.phyHubInterval = setInterval(() => this.getPhyHub(), 30000);
451
- await this.getPhyHub();
452
- }
453
- catch (error) {
454
- this.logger.error('start(): Initialization failed:', error);
455
- process.exit(1);
456
- }
457
- }
458
- stop() {
459
- if (this.phyHubInterval) {
460
- clearInterval(this.phyHubInterval);
461
- this.phyHubInterval = null;
462
- }
463
- }
464
- }
465
- exports.default = DevicePhyos;
466
- const initializeDevicePhyos = async () => {
467
- try {
468
- const devicePhyos = new DevicePhyos();
469
- await devicePhyos.start();
470
- }
471
- catch (error) {
472
- console.error('initializeDevicePhyos(): Failed to initialize device phyos', error);
473
- process.exit(1);
474
- }
475
- };
476
- const HEARTBEAT_PATH = '/tmp/phydevice-heartbeat';
477
- setInterval(() => {
478
- fs_1.default.writeFileSync(HEARTBEAT_PATH, new Date().toISOString());
479
- }, 1000);
480
- process.on('SIGTERM', async () => {
481
- console.log('Received SIGTERM, exiting');
482
- try {
483
- fs_1.default.unlinkSync(HEARTBEAT_PATH);
484
- }
485
- catch (e) {
486
- console.error(e.toString());
487
- }
488
- process.exit(1);
489
- });
490
- initializeDevicePhyos();
491
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,123 +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
- const child_process_1 = require("child_process");
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const environment_1 = require("./environment");
10
- const enableDeveloperMode = async (payload) => {
11
- try {
12
- const runCommand = (command) => {
13
- console.log(`Executing: ${command}`);
14
- (0, child_process_1.execSync)(command, { stdio: 'inherit' });
15
- };
16
- let userExists = false;
17
- try {
18
- (0, child_process_1.execSync)('id dev', { stdio: 'ignore' });
19
- userExists = true;
20
- console.log("User 'dev' already exists. Updating configuration if necessary.");
21
- }
22
- catch (e) {
23
- console.log("User 'dev' does not exist. Proceeding with creation.");
24
- }
25
- if (!userExists) {
26
- runCommand('sudo useradd -m -s /bin/bash dev');
27
- runCommand('sudo usermod -aG wheel dev');
28
- runCommand('sudo usermod -aG systemd-journal dev');
29
- if (payload.authType === 'ssh' && payload.sshKey) {
30
- const sshDir = '/home/dev/.ssh';
31
- if (!fs_1.default.existsSync(sshDir)) {
32
- fs_1.default.mkdirSync(sshDir, { recursive: true });
33
- }
34
- fs_1.default.writeFileSync(`${sshDir}/authorized_keys`, payload.sshKey);
35
- runCommand(`sudo chown -R dev:dev ${sshDir}`);
36
- runCommand(`sudo chmod 700 ${sshDir}`);
37
- runCommand(`sudo chmod 600 ${sshDir}/authorized_keys`);
38
- console.log("SSH key configured successfully.");
39
- }
40
- else if (payload.authType === 'password' && payload.password) {
41
- runCommand(`echo "dev:${payload.password}" | sudo chpasswd`);
42
- console.log("Password configured successfully.");
43
- }
44
- }
45
- else {
46
- try {
47
- const currentShell = (0, child_process_1.execSync)('grep "^dev:" /etc/passwd | cut -d: -f7', { encoding: 'utf8' }).trim();
48
- if (currentShell !== '/bin/bash') {
49
- runCommand('sudo usermod -s /bin/bash dev');
50
- }
51
- }
52
- catch (error) {
53
- console.warn("Could not check user shell, attempting to set it anyway");
54
- runCommand('sudo usermod -s /bin/bash dev');
55
- }
56
- if (payload.authType === 'ssh' && payload.sshKey) {
57
- const sshDir = '/home/dev/.ssh';
58
- if (!fs_1.default.existsSync(sshDir)) {
59
- fs_1.default.mkdirSync(sshDir, { recursive: true });
60
- }
61
- fs_1.default.writeFileSync(`${sshDir}/authorized_keys`, payload.sshKey);
62
- runCommand(`sudo chown -R dev:dev ${sshDir}`);
63
- runCommand(`sudo chmod 700 ${sshDir}`);
64
- runCommand(`sudo chmod 600 ${sshDir}/authorized_keys`);
65
- console.log("SSH key updated successfully.");
66
- }
67
- else if (payload.authType === 'password' && payload.password) {
68
- runCommand(`echo "dev:${payload.password}" | sudo chpasswd`);
69
- console.log("Password updated successfully.");
70
- }
71
- }
72
- runCommand('sudo cp /etc/sudoers /etc/sudoers.bak');
73
- try {
74
- (0, child_process_1.execSync)("grep -E '^%wheel\\s+ALL=\\(ALL\\) NOPASSWD: ALL' /etc/sudoers", { stdio: 'ignore' });
75
- }
76
- catch (error) {
77
- runCommand(`echo '%wheel ALL=(ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers`);
78
- }
79
- const devHome = '/home/dev';
80
- const unsetScriptPath = path_1.default.join(devHome, 'unset-proxies.sh');
81
- const unsetScriptContent = `#!/bin/bash
82
- # Unset proxy environment variables if they are set.
83
- unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy no_proxy NO_PROXY
84
- `;
85
- fs_1.default.writeFileSync(unsetScriptPath, unsetScriptContent);
86
- runCommand(`sudo chmod +x ${unsetScriptPath}`);
87
- runCommand(`sudo chown dev:dev ${unsetScriptPath}`);
88
- const bashrcPath = path_1.default.join(devHome, '.bashrc');
89
- const sourceLine = `
90
- # Automatically unset proxy environment variables on login
91
- if [ -f ~/unset-proxies.sh ]; then
92
- source ~/unset-proxies.sh
93
- fi
94
- `;
95
- let bashrcContent = '';
96
- if (fs_1.default.existsSync(bashrcPath)) {
97
- bashrcContent = fs_1.default.readFileSync(bashrcPath, 'utf8');
98
- }
99
- if (!bashrcContent.includes('source ~/unset-proxies.sh')) {
100
- fs_1.default.appendFileSync(bashrcPath, sourceLine);
101
- }
102
- runCommand(`sudo chown dev:dev ${bashrcPath}`);
103
- try {
104
- const envConfig = {
105
- isDefaultSettings: true,
106
- region: 'EU',
107
- timezone: 'UTC',
108
- };
109
- await (0, environment_1.setEnvironmentConfiguration)(envConfig);
110
- console.log("Environment configuration updated for developer mode.");
111
- }
112
- catch (error) {
113
- console.error("Failed to update environment configuration:", error);
114
- }
115
- console.log("Development user 'dev' created and configured successfully.");
116
- }
117
- catch (error) {
118
- console.error("Error during dev device setup:", error);
119
- throw error;
120
- }
121
- };
122
- exports.default = enableDeveloperMode;
123
- //# sourceMappingURL=devdevice.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"devdevice.js","sourceRoot":"","sources":["../../src/methods/devdevice.ts"],"names":[],"mappings":"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"}