feat: setup automatique certificats SSL au premier lancement

Nouveau : setup-helper.js
- Détecte si mkcert est installé
- Installe mkcert automatiquement (Homebrew macOS, curl Linux)
- Installe CA locale (mkcert -install)
- Génère certificats pour localhost + IP réseau
- Détection automatique IP WiFi

Intégration dans main.js :
- Vérifie certificats au démarrage
- Si absents : dialog onboarding + setup auto
- Dialog progress "Configuration en cours..."
- Dialog success avec IP réseau
- Dialog error si échec (fallback manuel)
- Ne démarre serveur que si certificats OK

Expérience utilisateur :
1. Lancer l'app (première fois)
2. Dialog : "Première utilisation, configuration..."
3. Cliquer "Continuer"
4. Attendre 1-2 min (installation mkcert + CA + certificats)
5. Dialog : "Configuration terminée, IP: 192.168.x.x"
6. Serveur démarre automatiquement

Prochaines fois : détection certificats OK → démarre direct

L'utilisateur n'a RIEN à faire manuellement !
This commit is contained in:
2026-06-19 13:24:51 +02:00
parent 8a7e98ae47
commit f0cf363408
2 changed files with 306 additions and 1 deletions
+57 -1
View File
@@ -3,10 +3,11 @@
* Intègre le serveur Node.js existant dans une application Electron
*/
const { app, BrowserWindow, ipcMain, Menu, Tray } = require('electron');
const { app, BrowserWindow, ipcMain, Menu, Tray, dialog } = require('electron');
const path = require('path');
const { spawn } = require('child_process');
const http = require('http');
const setupHelper = require('./setup-helper');
// État de l'application
let mainWindow = null;
@@ -305,6 +306,61 @@ app.whenReady().then(async () => {
createWindow();
createTray();
// Vérifier setup automatique (certificats)
console.log('🔍 Vérification configuration...');
const projectRoot = path.join(__dirname, '..');
const certsDir = path.join(projectRoot, 'certs');
if (!setupHelper.certificatesExist(certsDir)) {
console.log('⚠️ Certificats SSL manquants, configuration automatique...\n');
// Afficher dialog d'information
const infoResult = await dialog.showMessageBox(mainWindow, {
type: 'info',
title: 'Configuration initiale',
message: 'Première utilisation de PTT Live',
detail: 'Configuration des certificats SSL en cours...\nCela peut prendre 1-2 minutes.\n\nmkcert sera installé automatiquement.',
buttons: ['Continuer', 'Annuler']
});
if (infoResult.response === 1) {
console.log('⚠️ Configuration annulée par l\'utilisateur');
return;
}
// Lancer setup auto
const setupResult = await setupHelper.autoSetup(projectRoot);
if (!setupResult.success) {
// Échec du setup automatique
await dialog.showMessageBox(mainWindow, {
type: 'error',
title: 'Configuration échouée',
message: 'Impossible de configurer automatiquement les certificats SSL',
detail: setupResult.manual
? 'Veuillez exécuter manuellement :\n./setup-certificates.sh\n\nOu installer mkcert : https://github.com/FiloSottile/mkcert'
: setupResult.error,
buttons: ['OK']
});
console.error('❌ Setup automatique échoué');
return; // Ne pas démarrer le serveur
}
// Setup réussi
await dialog.showMessageBox(mainWindow, {
type: 'info',
title: 'Configuration terminée',
message: 'Certificats SSL configurés avec succès !',
detail: `Votre IP réseau : ${setupResult.networkIP}\n\nLe serveur va démarrer...`,
buttons: ['OK']
});
console.log('✅ Setup automatique terminé\n');
} else {
console.log('✅ Certificats présents\n');
}
// Démarrer le serveur automatiquement
console.log('🔄 Démarrage automatique du serveur...');
await startServer();