From 9c5964147d9076575871f5de348f54ee98c6fb85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Bachmann?= Date: Wed, 15 Apr 2026 18:18:18 +0000 Subject: [PATCH] whatsapp_bridge/server.js aktualisiert --- whatsapp_bridge/server.js | 44 +++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/whatsapp_bridge/server.js b/whatsapp_bridge/server.js index 36664e1..c819d4c 100644 --- a/whatsapp_bridge/server.js +++ b/whatsapp_bridge/server.js @@ -6,6 +6,8 @@ const path = require('path'); const app = express(); app.use(express.json()); + +// Statische Dateien aus dem "ui" Ordner servieren app.use(express.static(path.join(__dirname, 'ui'))); let lastQr = ""; @@ -25,6 +27,7 @@ const client = new Client({ } }); +// QR Code Handling client.on('qr', (qr) => { lastQr = qr; isReady = false; @@ -37,46 +40,55 @@ client.on('ready', () => { console.log('WhatsApp ist bereit!'); }); -client.on('disconnected', () => { - isReady = false; - console.log('WhatsApp Verbindung getrennt.'); +// --- ROUTES --- + +// Hauptseite für Ingress +app.get('/', (req, res) => { + res.sendFile(path.join(__dirname, 'ui', 'index.html')); }); -// --- API für die UI --- - +// Status API app.get('/api/status', async (req, res) => { - res.json({ - isReady: isReady, - hasQr: lastQr !== "", - qrCode: lastQr ? await qrcode.toDataURL(lastQr) : null - }); + try { + let qrData = null; + if (lastQr) { + qrData = await qrcode.toDataURL(lastQr); + } + res.json({ + isReady: isReady, + hasQr: lastQr !== "", + qrCode: qrData + }); + } catch (e) { + res.status(500).json({ error: e.message }); + } }); +// Logout app.post('/auth/logout', async (req, res) => { try { - console.log("Logging out..."); await client.logout(); await fs.remove(SESSION_DATA); - res.json({ success: true, message: "Logged out. Addon restarts now..." }); + res.json({ success: true, message: "Erfolgreich abgemeldet. Addon startet neu..." }); setTimeout(() => process.exit(0), 2000); } catch (err) { res.status(500).json({ error: err.message }); } }); +// Reset app.delete('/system/reset', async (req, res) => { try { - console.log("Factory Reset triggered!"); await client.destroy(); await fs.emptyDir('/data'); - res.json({ success: true, message: "All data deleted. Restarting..." }); + res.json({ success: true, message: "Werkseinstellungen wiederhergestellt. Addon startet neu..." }); setTimeout(() => process.exit(0), 2000); } catch (err) { res.status(500).json({ error: err.message }); } }); -// Nachricht senden +// Sende-Schnittstelle app.post('/send', async (req, res) => { const { number, message } = req.body; if (!isReady) return res.status(503).json({ error: 'Client nicht bereit' }); @@ -90,4 +102,4 @@ app.post('/send', async (req, res) => { }); client.initialize(); -app.listen(3000, () => console.log('Add-on Server läuft auf Port 3000')); \ No newline at end of file +app.listen(3000, () => console.log('WhatsApp Bridge Server läuft auf Port 3000')); \ No newline at end of file