homebridge-viessmann-vicare 2.0.2 → 2.0.3

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.
@@ -45,6 +45,33 @@ export declare class AuthManager {
45
45
  private clearStoredTokens;
46
46
  private scheduleTokenRefresh;
47
47
  authenticate(): Promise<void>;
48
+ /**
49
+ private shouldUseManualAuth(): boolean {
50
+ if (this.config.authMethod === 'manual') {
51
+ return true;
52
+ }
53
+
54
+ // Check if we're in a headless environment
55
+ if (!process.env.DISPLAY && process.platform === 'linux') {
56
+ this.log.debug('🖥️ Detected headless Linux environment, using manual auth');
57
+ return true;
58
+ }
59
+
60
+ // Check if we're in Docker
61
+ if (process.env.DOCKER || process.env.CONTAINER) {
62
+ this.log.debug('🐳 Detected container environment, using manual auth');
63
+ return true;
64
+ }
65
+
66
+ // Check if we're running as a service (systemd)
67
+ if (process.env.SYSTEMD_EXEC_PID || process.env.INVOCATION_ID) {
68
+ this.log.debug('⚙️ Detected systemd service environment, using manual auth');
69
+ return true;
70
+ }
71
+
72
+ return false;
73
+ }
74
+ **/
48
75
  private shouldUseManualAuth;
49
76
  private performAutoAuth;
50
77
  private handleManualAuth;
@@ -1 +1 @@
1
- {"version":3,"file":"auth-manager.d.ts","sourceRoot":"","sources":["../src/auth-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-manager.d.ts","sourceRoot":"","sources":["../src/auth-manager.ts"],"names":[],"mappings":"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"}
@@ -292,11 +292,24 @@ class AuthManager {
292
292
  }
293
293
  // Determine authentication method
294
294
  const authMethod = this.config.authMethod || 'auto';
295
+ /**
295
296
  if (authMethod === 'manual' || this.shouldUseManualAuth()) {
297
+ await this.handleManualAuth();
298
+ } else {
299
+ await this.performAutoAuth();
300
+ }
301
+ **/
302
+ if (authMethod === 'manual') {
296
303
  await this.handleManualAuth();
304
+ return;
305
+ }
306
+ // Prova sempre l'auto-auth; se fallisce, fallback a manual
307
+ try {
308
+ await this.performAutoAuth(); // avvia server di callback + openBrowser()
297
309
  }
298
- else {
299
- await this.performAutoAuth();
310
+ catch (e) {
311
+ this.log.warn('⚠️ Auto auth failed, falling back to manual:', e instanceof Error ? e.message : String(e));
312
+ await this.handleManualAuth();
300
313
  }
301
314
  }
302
315
  catch (error) {
@@ -304,25 +317,48 @@ class AuthManager {
304
317
  throw error;
305
318
  }
306
319
  }
307
- shouldUseManualAuth() {
320
+ /**
321
+ private shouldUseManualAuth(): boolean {
308
322
  if (this.config.authMethod === 'manual') {
309
- return true;
323
+ return true;
310
324
  }
325
+
311
326
  // Check if we're in a headless environment
312
327
  if (!process.env.DISPLAY && process.platform === 'linux') {
313
- this.log.debug('🖥️ Detected headless Linux environment, using manual auth');
314
- return true;
328
+ this.log.debug('🖥️ Detected headless Linux environment, using manual auth');
329
+ return true;
315
330
  }
331
+
316
332
  // Check if we're in Docker
317
333
  if (process.env.DOCKER || process.env.CONTAINER) {
318
- this.log.debug('🐳 Detected container environment, using manual auth');
319
- return true;
334
+ this.log.debug('🐳 Detected container environment, using manual auth');
335
+ return true;
320
336
  }
337
+
321
338
  // Check if we're running as a service (systemd)
322
339
  if (process.env.SYSTEMD_EXEC_PID || process.env.INVOCATION_ID) {
323
- this.log.debug('⚙️ Detected systemd service environment, using manual auth');
340
+ this.log.debug('⚙️ Detected systemd service environment, using manual auth');
341
+ return true;
342
+ }
343
+
344
+ return false;
345
+ }
346
+ **/
347
+ shouldUseManualAuth() {
348
+ // Rispetta la scelta esplicita dell’utente
349
+ if (this.config.authMethod === 'manual') {
350
+ this.log.debug('🔧 Auth method explicitly set to "manual" in config.');
324
351
  return true;
325
352
  }
353
+ // Diagnostica non-bloccante: non forziamo più il manual in headless/systemd/container
354
+ const isHeadlessLinux = (process.platform === 'linux' && !process.env.DISPLAY);
355
+ const isContainer = !!(process.env.DOCKER || process.env.CONTAINER);
356
+ const isSystemd = !!(process.env.SYSTEMD_EXEC_PID || process.env.INVOCATION_ID);
357
+ if (isHeadlessLinux || isContainer || isSystemd) {
358
+ this.log.debug(`ℹ️ Environment detected (headlessLinux=${isHeadlessLinux}, container=${isContainer}, systemd=${isSystemd}) — ` +
359
+ 'proceeding with AUTO auth first; will fallback to MANUAL if AUTO fails.');
360
+ }
361
+ // Di default tentiamo sempre AUTO
326
362
  return false;
327
363
  }
328
364
  async performAutoAuth() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-viessmann-vicare",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "Complete Homebridge plugin for Viessmann ViCare heating systems with full control capabilities, advanced rate limiting protection, and intelligent cache management",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -58,4 +58,4 @@
58
58
  "type": "individual",
59
59
  "url": "https://github.com/sponsors/diegoweb100"
60
60
  }
61
- }
61
+ }