require('dotenv').config(); const chokidar = require('chokidar'); const axios = require('axios'); const { exec } = require('child_process'); const NEXTJS_WEBHOOK_URL = process.env.NEXTJS_WEBHOOK_URL; const WEBHOOK_SECRET = process.env.WEBHOOK_SECRET; const vmailPath = '/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/'; console.log("🚀 AyrisTech Güvenli Dekoder (V10.3) Başlatıldı..."); const watcher = chokidar.watch(vmailPath, { ignored: /(^|[\/\\])\../, persistent: true, ignoreInitial: true, depth: 5 }); watcher.on('add', (filePath) => { if (filePath.includes('/new/')) { const parts = filePath.split('/'); const fullEmail = `${parts[8]}@${parts[7]}`; console.log(`📩 Yeni şifreli mail: ${fullEmail}. Çözülüyor...`); // Komutu daha garantici bir hale getirdik const cmd = `docker exec mailcowdockerized-dovecot-mailcow-1 doveadm fetch -u "${fullEmail}" "hdr.from hdr.subject body.snippet" ALL`; setTimeout(() => { exec(cmd, async (error, stdout, stderr) => { if (error || stderr) { console.error("❌ Doveadm Hatası:", error ? error.message : stderr); return; } if (!stdout.trim()) { console.log("⚠️ Mail içeriği henüz hazır değil (Stdout boş)."); return; } let mailData = { to: fullEmail, from: 'Bilinmiyor', subject: 'Konu Yok', snippet: '' }; // Satır satır parse etme const lines = stdout.split('\n'); lines.forEach(line => { const l = line.trim(); if (l.toLowerCase().startsWith('hdr.from:')) mailData.from = l.split(':').slice(1).join(':').trim(); if (l.toLowerCase().startsWith('hdr.subject:')) mailData.subject = l.split(':').slice(1).join(':').trim(); if (l.toLowerCase().startsWith('body.snippet:')) mailData.snippet = l.split(':').slice(1).join(':').trim(); }); console.log(`✨ İçerik Çözüldü: ${mailData.subject}`); try { await axios.post(NEXTJS_WEBHOOK_URL, mailData, { headers: { 'x-ayristech-secret': WEBHOOK_SECRET } }); console.log(`✅ Webhook Next.js'e başarıyla ulaştı.`); } catch (err) { console.error("❌ Webhook Hatası:", err.message); } }); }, 2500); // Mailin DB'ye tam işlenmesi için süreyi biraz artırdık } });