fix: activer HTTPS par défaut dans l'app Electron et fiabiliser les appels au serveur local
ENABLE_HTTPS était lu depuis l'environnement sans jamais être positionné par le flow Electron (start-desktop.sh → electron .), donc le serveur enfant tournait toujours en HTTP malgré le setup mkcert automatique au premier lancement. ENABLE_HTTPS est désormais activé par défaut (ENABLE_HTTPS=false pour revenir en HTTP explicitement). Corrections induites par ce changement de protocole par défaut : - pingServer() utilisait le module http en dur même en HTTPS ; bascule sur https avec rejectUnauthorized: false (ping local vers notre propre process enfant, le module https de Node ne lisant pas le trousseau macOS où mkcert installe sa CA, contrairement à Safari/Chrome/Electron renderer). - Le dashboard (electron/ui/app.js) avait l'URL de l'API et celle du WebSocket VU-mètres codées en dur en http/ws ; elles utilisent maintenant l'URL réelle exposée par preload.js (serverUrl), cohérente avec le protocole effectif du serveur.
This commit is contained in:
+14
-2
@@ -7,6 +7,7 @@ const { app, BrowserWindow, ipcMain, Menu, Tray, dialog } = require('electron');
|
||||
const path = require('path');
|
||||
const { spawn } = require('child_process');
|
||||
const http = require('http');
|
||||
const https = require('https');
|
||||
const setupHelper = require('./setup-helper');
|
||||
|
||||
// État de l'application
|
||||
@@ -17,7 +18,11 @@ let serverStarted = false;
|
||||
let rendererReady = false;
|
||||
|
||||
const SERVER_PORT = process.env.PORT || 3000;
|
||||
const SERVER_URL = `http://localhost:${SERVER_PORT}`;
|
||||
// HTTPS activé par défaut (cohérent avec le setup mkcert automatique au premier
|
||||
// lancement) ; ENABLE_HTTPS=false permet de revenir explicitement en HTTP
|
||||
const ENABLE_HTTPS = process.env.ENABLE_HTTPS !== 'false';
|
||||
const SERVER_PROTOCOL = ENABLE_HTTPS ? 'https' : 'http';
|
||||
const SERVER_URL = `${SERVER_PROTOCOL}://localhost:${SERVER_PORT}`;
|
||||
const isDev = process.argv.includes('--dev');
|
||||
|
||||
/**
|
||||
@@ -133,6 +138,7 @@ async function startServer() {
|
||||
...process.env,
|
||||
PORT: SERVER_PORT,
|
||||
USE_LOCAL_LIVEKIT: 'true',
|
||||
ENABLE_HTTPS: ENABLE_HTTPS ? 'true' : 'false',
|
||||
NODE_ENV: isDev ? 'development' : 'production'
|
||||
}
|
||||
});
|
||||
@@ -289,7 +295,13 @@ async function stopServer() {
|
||||
*/
|
||||
async function pingServer() {
|
||||
return new Promise((resolve) => {
|
||||
http.get(`${SERVER_URL}/health`, (res) => {
|
||||
const client = ENABLE_HTTPS ? https : http;
|
||||
// rejectUnauthorized: false : le cert mkcert est approuvé par le Keychain
|
||||
// macOS (Safari/Chrome/Electron renderer), mais le module https de Node
|
||||
// ne lit pas ce trust store et rejetterait sinon ce ping vers notre
|
||||
// propre serveur local.
|
||||
const options = ENABLE_HTTPS ? { rejectUnauthorized: false } : {};
|
||||
client.get(`${SERVER_URL}/health`, options, (res) => {
|
||||
let data = '';
|
||||
res.on('data', (chunk) => { data += chunk; });
|
||||
res.on('end', () => {
|
||||
|
||||
Reference in New Issue
Block a user