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.
- package/dist/auth-manager.d.ts +27 -0
- package/dist/auth-manager.d.ts.map +1 -1
- package/dist/auth-manager.js +45 -9
- package/package.json +2 -2
package/dist/auth-manager.d.ts
CHANGED
|
@@ -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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAiB,MAAM,OAAO,CAAC;AAOrD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAkBD,qBAAa,WAAW;IAuBpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAzBzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuD;IAC/E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAG1C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAe;IACjD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAW;IAEpD,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,iBAAiB,CAAC,CAAiB;gBAGxB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,aAAa,EACzB,MAAM,EAAE,MAAM;IAajC,OAAO,CAAC,yBAAyB;IAiCjC,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,gBAAgB;IA0CxB,OAAO,CAAC,UAAU;IAkDlB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,oBAAoB;IAgCf,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-manager.d.ts","sourceRoot":"","sources":["../src/auth-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/auth-manager.js
CHANGED
|
@@ -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
|
-
|
|
299
|
-
|
|
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
|
-
|
|
320
|
+
/**
|
|
321
|
+
private shouldUseManualAuth(): boolean {
|
|
308
322
|
if (this.config.authMethod === 'manual') {
|
|
309
|
-
|
|
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
|
-
|
|
314
|
-
|
|
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
|
-
|
|
319
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
+
}
|