feat: Add Ollama AI integration for automatic mail template generation

 New Features:
- 🤖 AI-powered mail template generation with Ollama
- 📧 Test mail sending with preview
- 🔧 Ollama server and model management
- 🎨 Beautiful AI generation dialog in Templates page
- ⚙️ Ollama settings panel with connection test

Backend:
- Add ollama.service.js - Ollama API integration
- Add ollama.controller.js - Template generation endpoint
- Add ollama.routes.js - /api/ollama/* routes
- Support for multiple Ollama models (llama3.2, mistral, gemma)
- JSON-formatted AI responses with subject + HTML body
- Configurable server URL and model selection

Frontend:
- Settings: Ollama configuration panel
  - Server URL input
  - Model selection
  - Connection test with model listing
- Templates: AI generation dialog
  - Company name, scenario, employee info inputs
  - Custom prompt for AI instructions
  - Auto-save to database
  - Test mail sending functionality

Documentation:
- OLLAMA_SETUP.md - Comprehensive setup guide
- Installation instructions
- Model recommendations
- Usage examples
- Troubleshooting

Tech Stack:
- Ollama API integration (REST)
- Axios HTTP client
- React dialogs with MUI
- Self-hosted AI (privacy-friendly)
- Zero external API dependencies

Example Usage:
  Company: Garanti Bankası
  Scenario: Account security warning
  → AI generates professional phishing test mail in seconds!
This commit is contained in:
salvacybersec
2025-11-10 21:13:58 +03:00
parent d41ff7671e
commit af0510e486
8 changed files with 1121 additions and 7 deletions

307
OLLAMA_SETUP.md Normal file
View File

@@ -0,0 +1,307 @@
# 🤖 Ollama AI Entegrasyonu
## Genel Bakış
Phishing Test Yönetim Paneli, **Ollama AI** entegrasyonu ile otomatik mail şablonları oluşturabilir. Bu özellik, gerçekçi ve özelleştirilebilir phishing test maillerini dakikalar içinde üretmenizi sağlar.
## 🚀 Özellikler
### 1. **AI ile Mail Şablonu Oluşturma**
- Şirket adı, senaryo ve hedef bilgilerine göre otomatik mail oluşturma
- HTML formatında profesyonel mail içeriği
- Özelleştirilebilir placeholder'lar (`{{company_name}}`, `{{employee_name}}`, `{{tracking_url}}`)
- Otomatik konu satırı (subject) oluşturma
### 2. **Test Mail Gönderimi**
- Oluşturulan şablonları test etme
- Placeholder'ları doldurarak gerçek görünüm
- Herhangi bir mail adresine test gönderimi
### 3. **Ollama Yönetimi**
- Ollama sunucu bağlantı testi
- Mevcut modelleri listeleme
- Model seçimi ve yönetimi
## 📋 Gereksinimler
### 1. Ollama Kurulumu
#### Linux
```bash
curl -fsSL https://ollama.com/install.sh | sh
```
#### macOS
```bash
brew install ollama
```
#### Windows
[Ollama Windows İndirme](https://ollama.com/download/windows)
### 2. Model İndirme
Önerilen modeller:
```bash
# Llama 3.2 (Önerilen - hızlı ve etkili)
ollama pull llama3.2
# Alternatifler:
ollama pull mistral # Hızlı, compact
ollama pull gemma # Google'ın modeli
ollama pull llama2 # Eski ama stabil
```
### 3. Ollama Servisini Başlatma
```bash
# Servis olarak başlat
ollama serve
# Veya systemd ile (Linux)
systemctl start ollama
systemctl enable ollama
```
## ⚙️ Yapılandırma
### 1. Panel Ayarları
1. **Ayarlar** sayfasına gidin
2. **🤖 Ollama AI Ayarları** bölümünde:
- **Ollama Server URL**: `http://localhost:11434` (varsayılan)
- **Model**: `llama3.2` (veya tercih ettiğiniz model)
3. **Bağlantıyı Test Et** butonuna tıklayın
4. Mevcut modelleri görün
5. **Kaydet** butonuna tıklayın
### 2. Ortam Değişkenleri (Opsiyonel)
`.env` dosyasında varsayılan değerleri ayarlayabilirsiniz:
```bash
OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=llama3.2
```
## 🎯 Kullanım
### AI ile Şablon Oluşturma
1. **Mail Şablonları** sayfasına gidin
2. **AI ile Oluştur** butonuna tıklayın
3. Formu doldurun:
- **Şablon Adı**: Şablona verilecek isim
- **Template Type**: Şablon tipi (örn: `bank`, `hr`, `it_support`)
- **Şirket Adı**: Hedef şirket (örn: "Acme Corporation")
- **Senaryo**: Mail senaryosu (örn: "Şifre sıfırlama maili")
- **Çalışan Bilgisi** (opsiyonel): Hedef çalışan hakkında bilgi
- **Ek Talimatlar** (opsiyonel): AI'ya özel talimatlar
4. **Oluştur** butonuna tıklayın
5. AI, birkaç saniye içinde profesyonel bir mail şablonu oluşturacak
6. Şablon otomatik olarak veritabanına kaydedilir
### Senaryo Örnekleri
#### Banka Şablonu
```
Senaryo: "Hesap güvenlik uyarısı - şüpheli aktivite tespit edildi ve doğrulama gerekiyor"
Şirket: Garanti Bankası
Çalışan Bilgisi: Bireysel müşteri
```
#### İK Şablonu
```
Senaryo: "Yıllık performans değerlendirme formu doldurulması gerekiyor"
Şirket: Acme Tech
Çalışan Bilgisi: Yazılım geliştirici
Ek Talimat: Resmi ve profesyonel dil kullan
```
#### IT Destek Şablonu
```
Senaryo: "Sistem güncellemesi için kullanıcı bilgilerinin doğrulanması"
Şirket: XYZ Corporation
Çalışan Bilgisi: Ofis çalışanı
Ek Talimat: Teknik terimler kullan, aciliyet vurgusu yap
```
### Test Mail Gönderme
1. Şablonlar listesinde istediğiniz şablonun yanındaki **Test Mail** butonuna tıklayın
2. Test mail adresini girin
3. Placeholder değerlerini düzenleyin:
- Şirket Adı
- Çalışan Adı
4. **Gönder** butonuna tıklayın
5. Test maili belirttiğiniz adrese gönderilir
## 🔧 Teknik Detaylar
### API Endpoints
#### Ollama Bağlantı Testi
```http
GET /api/ollama/test
```
#### Mevcut Modelleri Listeleme
```http
GET /api/ollama/models
```
#### AI ile Şablon Oluşturma
```http
POST /api/ollama/generate-template
Content-Type: application/json
{
"company_name": "Acme Corp",
"scenario": "Şifre sıfırlama",
"employee_info": "IT personeli",
"custom_prompt": "Aciliyet vurgusu yap",
"template_name": "Acme Şifre Sıfırlama",
"template_type": "it_support"
}
```
#### Test Mail Gönderme
```http
POST /api/ollama/send-test-mail
Content-Type: application/json
{
"test_email": "test@example.com",
"subject": "Test Subject",
"body": "<html>...</html>",
"company_name": "Test Company",
"employee_name": "John Doe"
}
```
### Ollama Servisi Yapılandırması
Backend servisi Ollama'yı otomatik olarak yapılandırır:
```javascript
// backend/src/services/ollama.service.js
class OllamaService {
constructor() {
this.serverUrl = 'http://localhost:11434';
this.model = 'llama3.2';
}
}
```
### AI Prompt Yapısı
AI'ya gönderilen prompt:
```
System: Sen profesyonel bir güvenlik uzmanısın ve phishing test maileri oluşturuyorsun.
User: Aşağıdaki bilgilere göre bir phishing test mail şablonu oluştur:
- Şirket: [company_name]
- Senaryo: [scenario]
- Çalışan Bilgisi: [employee_info]
- Ek Talimatlar: [custom_prompt]
Yanıt JSON formatında:
{
"subject": "Mail konusu",
"body": "<html>Mail içeriği</html>"
}
```
## 🛠️ Troubleshooting
### Ollama bağlantı hatası
**Hata**: `Ollama sunucusuna bağlanılamadı`
**Çözüm**:
```bash
# Ollama servisinin çalıştığını kontrol edin
curl http://localhost:11434/api/tags
# Servis çalışmıyorsa başlatın
ollama serve
```
### Model bulunamadı hatası
**Hata**: `Model not found`
**Çözüm**:
```bash
# Modeli indirin
ollama pull llama3.2
# Mevcut modelleri listeleyin
ollama list
```
### Yavaş yanıt süresi
**Çözüm**:
- Daha küçük bir model kullanın (`mistral`, `llama3.2:1b`)
- GPU kullanımını etkinleştirin (CUDA destekli sistem gerekir)
- RAM ve CPU kaynaklarını artırın
### Timeout hatası
**Hata**: `AI yanıt veremedi: timeout`
**Çözüm**:
- Backend `ollama.service.js` dosyasında timeout süresini artırın:
```javascript
timeout: 180000, // 3 dakika
```
## 📊 Performans
### Model Karşılaştırması
| Model | Boyut | Hız | Kalite | RAM |
|-------|-------|-----|--------|-----|
| llama3.2 | 2GB | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 8GB |
| mistral | 4GB | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 8GB |
| gemma | 2GB | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 6GB |
| llama2 | 4GB | ⭐⭐⭐ | ⭐⭐⭐⭐ | 8GB |
### Yanıt Süreleri (Ortalama)
- **CPU**: 30-60 saniye
- **GPU (CUDA)**: 5-15 saniye
- **Apple Silicon (M1/M2)**: 10-25 saniye
## 🔒 Güvenlik Notları
1. **Ollama Erişimi**: Ollama sunucusu varsayılan olarak `localhost:11434` üzerinde çalışır. Production'da bu portu dışarıya açmayın.
2. **API Rate Limiting**: Backend API'sinde rate limiting aktiftir, kötüye kullanımı önler.
3. **Model Seçimi**: Güvenilir ve test edilmiş modeller kullanın.
4. **Veri Gizliliği**: AI'ya gönderilen veriler Ollama sunucusunda işlenir, dışarıya gönderilmez (self-hosted).
## 📚 Kaynaklar
- [Ollama Resmi Dokümantasyon](https://github.com/ollama/ollama)
- [Ollama Model Library](https://ollama.com/library)
- [Llama 3.2 Model Bilgileri](https://ollama.com/library/llama3.2)
## 🆘 Destek
Sorun yaşıyorsanız:
1. Ollama servisinin çalıştığını kontrol edin
2. Model indirildiyse kontrol edin
3. Panel **Ayarlar** sayfasında bağlantı testini yapın
4. Backend loglarını kontrol edin: `backend/logs/`
---
**Not**: Ollama entegrasyonu tamamen opsiyoneldir. Sistemi Ollama olmadan da kullanabilir, manuel olarak mail şablonları oluşturabilirsiniz.