Compare commits
3 Commits
871dc8406b
...
083bc5f546
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
083bc5f546 | ||
|
|
add1876c11 | ||
|
|
c331162704 |
@@ -1,11 +1,9 @@
|
|||||||
import { NextResponse } from 'next/server';
|
import { NextResponse } from 'next/server';
|
||||||
import { prisma } from '@/lib/prisma';
|
import { prisma } from '@/lib/prisma';
|
||||||
import { getLatestEmail } from '@/lib/mail';
|
|
||||||
import { sendTelegramNotification } from '@/lib/notifications';
|
import { sendTelegramNotification } from '@/lib/notifications';
|
||||||
|
|
||||||
// Bu kısım normalde .env içinde olmalı
|
// Bu kısım normalde .env içinde olmalı
|
||||||
const WEBHOOK_SECRET = 'besiktasK1903*';
|
const WEBHOOK_SECRET = process.env.WEBHOOK_SIGNAL_SECRET || 'besiktasK1903*';
|
||||||
const IMAP_PASSWORD = process.env.MAILCOW_MASTER_PASSWORD || ''; // Dovecot Master Password tavsiye edilir
|
|
||||||
|
|
||||||
// RFC 2047 Decode Fonksiyonu
|
// RFC 2047 Decode Fonksiyonu
|
||||||
function decodeMimeText(text: string) {
|
function decodeMimeText(text: string) {
|
||||||
@@ -56,52 +54,27 @@ export async function POST(request: Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. Mail İçeriğini Belirle
|
// 2. Mail İçeriğini Belirle
|
||||||
let mailData = null;
|
if (!incomingSubject && !incomingSnippet) {
|
||||||
|
console.log(`[Signal] İçerik eksik, işlem durduruldu: ${to}`);
|
||||||
|
return NextResponse.json({ success: true, message: 'No content provided' });
|
||||||
|
}
|
||||||
|
|
||||||
if (incomingSubject || incomingSnippet) {
|
const mailData = {
|
||||||
console.log(`[Signal] İçerik worker'dan hazır geldi: ${subject}`);
|
|
||||||
mailData = {
|
|
||||||
subject: subject || "(Konu Yok)",
|
subject: subject || "(Konu Yok)",
|
||||||
text: incomingSnippet || "",
|
text: incomingSnippet || "",
|
||||||
from: incomingFrom || "Bilinmiyor"
|
from: incomingFrom || "Bilinmiyor"
|
||||||
};
|
};
|
||||||
} else {
|
|
||||||
console.log("[Signal] İçerik eksik, IMAP'e gidiliyor...");
|
|
||||||
mailData = await getLatestEmail(to, IMAP_PASSWORD);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!mailData) {
|
// 3. Bildirim Gönder (Telegram)
|
||||||
console.error(`[Signal] Mail içeriği çekilemedi: ${to}`);
|
|
||||||
return NextResponse.json({ success: false, error: 'Could not fetch mail' }, { status: 500 });
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. İçerik Analizi (BMW, Penti vb.)
|
|
||||||
let processed = false;
|
|
||||||
let extraInfo = "";
|
|
||||||
const analysisContent = (mailData.subject + " " + mailData.text).toLowerCase();
|
|
||||||
|
|
||||||
if (analysisContent.includes("bmw") || analysisContent.includes("tamir")) {
|
|
||||||
console.log("🚗 [Signal] BMW/Tamir içerikli mail tespit edildi!");
|
|
||||||
extraInfo = "🚗 BMW/Tamir İlgili İçerik";
|
|
||||||
processed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (analysisContent.includes("penti") || analysisContent.includes("sipariş")) {
|
|
||||||
console.log("🛍️ [Signal] Penti/Sipariş içerikli mail tespit edildi!");
|
|
||||||
extraInfo = "🛍️ Penti/Sipariş İlgili İçerik";
|
|
||||||
processed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 4. Bildirim Gönder (Telegram)
|
|
||||||
const notificationResult = await sendTelegramNotification(
|
const notificationResult = await sendTelegramNotification(
|
||||||
mapping.userId,
|
mapping.userId,
|
||||||
to,
|
to,
|
||||||
mailData.from,
|
mailData.from,
|
||||||
mailData.subject,
|
mailData.subject,
|
||||||
extraInfo
|
"" // Analiz bilgisini kaldırdık
|
||||||
);
|
);
|
||||||
|
|
||||||
// 5. Bildirim Logu
|
// 4. Bildirim Logu
|
||||||
await prisma.notificationLog.create({
|
await prisma.notificationLog.create({
|
||||||
data: {
|
data: {
|
||||||
mailbox: to,
|
mailbox: to,
|
||||||
@@ -109,16 +82,14 @@ export async function POST(request: Request) {
|
|||||||
subject: mailData.subject,
|
subject: mailData.subject,
|
||||||
status: notificationResult.status,
|
status: notificationResult.status,
|
||||||
userId: mapping.userId,
|
userId: mapping.userId,
|
||||||
error: notificationResult.error || (processed ? null : "Anahtar kelime eşleşmedi")
|
error: notificationResult.error
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return NextResponse.json({
|
return NextResponse.json({
|
||||||
success: true,
|
success: true,
|
||||||
processed,
|
|
||||||
notification: notificationResult.status,
|
notification: notificationResult.status,
|
||||||
subject: mailData.subject,
|
subject: mailData.subject
|
||||||
mode: incomingSubject ? 'worker-data' : 'imap-fallback'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
|
|||||||
Reference in New Issue
Block a user