diff --git a/whatsapp_bridge/server.js b/whatsapp_bridge/server.js
index 63c9775..36664e1 100644
--- a/whatsapp_bridge/server.js
+++ b/whatsapp_bridge/server.js
@@ -1,15 +1,19 @@
const { Client, LocalAuth } = require('whatsapp-web.js');
const express = require('express');
const qrcode = require('qrcode');
-const app = express();
+const fs = require('fs-extra');
+const path = require('path');
+const app = express();
app.use(express.json());
+app.use(express.static(path.join(__dirname, 'ui')));
let lastQr = "";
let isReady = false;
+const SESSION_DATA = '/data/auth';
const client = new Client({
- authStrategy: new LocalAuth({ dataPath: '/data/auth' }),
+ authStrategy: new LocalAuth({ dataPath: SESSION_DATA }),
puppeteer: {
executablePath: '/usr/bin/chromium-browser',
args: [
@@ -23,6 +27,7 @@ const client = new Client({
client.on('qr', (qr) => {
lastQr = qr;
+ isReady = false;
console.log('Neuer QR Code generiert.');
});
@@ -32,22 +37,49 @@ client.on('ready', () => {
console.log('WhatsApp ist bereit!');
});
-// Web UI für Ingress
-app.get('/', async (req, res) => {
- if (isReady) {
- res.send('
WhatsApp verbunden! ✅
Du kannst dieses Fenster jetzt schließen.
');
- } else if (lastQr) {
- const qrImage = await qrcode.toDataURL(lastQr);
- res.send(`WhatsApp Login
Scanne den Code mit deinem Handy:

`);
- } else {
- res.send('Warte auf QR-Code...
Bitte Seite in 10 Sekunden neu laden.
');
+client.on('disconnected', () => {
+ isReady = false;
+ console.log('WhatsApp Verbindung getrennt.');
+});
+
+// --- API für die UI ---
+
+app.get('/api/status', async (req, res) => {
+ res.json({
+ isReady: isReady,
+ hasQr: lastQr !== "",
+ qrCode: lastQr ? await qrcode.toDataURL(lastQr) : null
+ });
+});
+
+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..." });
+ setTimeout(() => process.exit(0), 2000);
+ } catch (err) {
+ res.status(500).json({ error: err.message });
}
});
+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..." });
+ setTimeout(() => process.exit(0), 2000);
+ } catch (err) {
+ res.status(500).json({ error: err.message });
+ }
+});
+
+// Nachricht senden
app.post('/send', async (req, res) => {
const { number, message } = req.body;
if (!isReady) return res.status(503).json({ error: 'Client nicht bereit' });
-
try {
const chatId = number.includes('@c.us') ? number : `${number}@c.us`;
await client.sendMessage(chatId, message);