65 lines
2.6 KiB
TypeScript
65 lines
2.6 KiB
TypeScript
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
|
||
}
|
||
}); |