Files
balikci/devpan.md

59 KiB
Raw Blame History

Oltalama Test Yönetim Paneli - Proje Tanımı ve Geliştirme Planı

📋 Proje Özeti

Güvenlik farkındalık eğitimleri için kullanılacak, basit ve kullanışlı bir phishing test yönetim sistemi. Karmaşık kampanya yönetimi yerine, tek tıkla token oluştur, mail gönder, anlık Telegram bildirimi al prensipleriyle çalışan, SQLite tabanlı hafif bir çözüm.

🎯 Proje Hedefleri

  • Basitlik: Karmaşık konfigürasyon yok, Gmail + Telegram ile hızlı başla
  • Hızlı Token Oluşturma: "Yeni Mail Oluştur" butonuyla saniyeler içinde tracking linki hazır
  • Gerçek Zamanlı Bildirim: Link tıklandığında anında Telegram mesajı al
  • Detaylı Tracking: IP, konum, cihaz bilgilerini otomatik kaydet
  • Tek Kullanıcı Odaklı: Kişisel kullanım için optimize edilmiş, basit admin paneli
  • Taşınabilir: SQLite sayesinde tüm veri tek dosyada, yedekleme ve taşıma çok kolay

Quickstart - Nasıl Çalışır?

1 İlk Kurulum (5 dakika)

# Backend
cd backend && npm install
npm run db:migrate && npm run db:seed
# Default: username: admin, password: admin123

# Frontend
cd ../frontend && npm install

# Her ikisini de başlat
npm run dev

2 Ayarları Yap (5 dakika)

  • Panel'de Settings sayfasına git
  • Gmail App Password ekle (rehber mevcut)
  • Telegram Bot oluştur ve token ekle (rehber mevcut)
  • Test butonlarıyla kontrol et

3 İlk Şirketi Oluştur (30 saniye)

  • "Şirketler" sayfasına git
  • "Yeni Şirket Ekle" butonuna tıkla
  • Form doldur:
    • Şirket Adı: Test Bank
    • Sektör: Banking
    • ıklama: (opsiyonel)
  • "Kaydet" tıkla
  • İlk şirketin hazır! 🏢

4 İlk Mail Testini Gönder (30 saniye)

  • "Yeni Mail Oluştur" butonuna tıkla
  • Form doldur:
    • Şirket Seç: Test Bank (dropdown)
    • Email: test@example.com
    • Çalışan Adı: Ahmet (opsiyonel)
    • Şablon: Banka Şablonu
  • "Oluştur + Gönder" tıkla
  • Mail otomatik gönderilir! 📧

4 Tıklamayı İzle

  • Hedef kişi maildeki linke tıkladığında
  • Anında Telegram'a bildirim gelir 🚨
  • Panel'de detayları gör: IP, konum, cihaz

Bu kadar basit! 🎉

🔑 Ana Özellikler

1. Basit Mail/Token Oluşturma

  • "Yeni Token Oluştur" butonu ile hızlı token oluşturma
  • "Yeni Mail Oluştur" butonu ile otomatik mail gönderimi
  • Hedef kullanıcı mail adresi girişi
  • Şirket adı ve çalışan adı (opsiyonel) bilgileri
  • Otomatik benzersiz tracking URL oluşturma
  • Gmail entegrasyonu (App Password ile)

2. Akıllı Mail Şablonu Sistemi

  • Şirket Adı girişi (örn: "Türk Telekom", "İş Bankası")
  • Çalışan Adı girişi (opsiyonel)
    • Varsa: "Sayın [Çalışan Adı]," ile başlar
    • Yoksa: "Sayın," ile başlar
  • Otomatik oltalama mail içeriği oluşturma
  • Şirket logolu, profesyonel görünümlü HTML mail
  • Mail içinde tracking link'i otomatik ekleme
  • Şablon kütüphanesi (Banka, E-Devlet, Kurumsal Email, vb.)

3. Dinamik Tracking URL Sistemi

  • Her hedef için benzersiz token: https://domain.com/t/{unique-token}
  • Token'a tıklandığında otomatik veri toplama
  • Kısa ve profesyonel görünümlü URL'ler
  • Landing page'e otomatik yönlendirme

4. Detaylı IP ve Aktivite Takibi

  • IP Adresi: Tıklayan kişinin IP'si
  • Tıklama Zamanı: Tam tarih ve saat
  • User Agent: Tarayıcı, işletim sistemi, cihaz bilgisi
  • Coğrafi Konum: IP bazlı şehir/ülke tespiti (GeoIP)
  • Referrer: Hangi kaynaktan geldi
  • Tıklama Sayısı: Aynı token'a kaç kez tıklandı
  • Tüm veriler SQLite'da saklanır

5. Telegram Gerçek Zamanlı Bildirim

  • Link tıklandığında anında Telegram bildirimi
  • Bildirim içeriği:
    • "🚨 Yeni Tıklama Algılandı!"
    • "Hedef: [email]"
    • "IP: [ip_address]"
    • "Konum: [city, country]"
    • "Cihaz: [browser, os]"
    • "Zaman: [timestamp]"
  • Telegram Bot API kullanımı
  • Tek bir Telegram chat_id'ye bildirim

6. Basit Yönetim Paneli

  • Dashboard: Tüm token'ların listesi
  • Her token için:
    • Hedef email
    • Şirket adı
    • Oluşturulma tarihi
    • Tıklanma durumu (/)
    • Toplam tıklama sayısı
  • Detay Sayfası: Token'a tıklayan tüm IP'lerin listesi
  • Mail Şablonları: Hazır şablonlar
  • Ayarlar: Gmail ve Telegram konfigürasyonu

7. Güvenlik Özellikleri

  • Basit login (username/password)
  • Session tabanlı authentication
  • API rate limiting (spam önleme)
  • Güvenli token oluşturma (crypto.randomBytes)
  • XSS ve SQL injection koruması

🏗️ Teknik Mimari

Backend Stack

  • Runtime: Node.js (v18+)
  • Framework: Express.js
  • Database: SQLite (tek dosya, kurulum gerektirmez)
  • ORM: Sequelize (SQLite desteği ile)
  • Authentication: express-session (basit session)
  • Mail: Nodemailer + Gmail (App Password)
  • Telegram: node-telegram-bot-api
  • Token Generator: crypto (Node.js built-in)
  • Validation: Joi
  • Logging: Winston
  • GeoIP: geoip-lite (ücretsiz)

Frontend Stack

  • Framework: React.js (Next.js önerilir)
  • State Management: Redux Toolkit veya Zustand
  • UI Library: Material-UI veya Ant Design
  • Charts: Chart.js veya Recharts
  • HTTP Client: Axios
  • Form Management: React Hook Form

DevOps & Infrastructure

  • Containerization: Docker (opsiyonel - basit deployment için gerek yok)
  • Process Manager: PM2
  • Reverse Proxy: Nginx (opsiyonel)
  • SSL: Let's Encrypt (Certbot) - production için
  • Monitoring: PM2 built-in monitoring
  • Logging: Winston (dosya bazlı)

📊 Database Schema (Şirket Yönetimi ile)

Tabloları

1. companies - Şirket Yönetimi

id: INTEGER PRIMARY KEY AUTOINCREMENT
name: VARCHAR(255) NOT NULL                 -- Şirket adı (örn: "Türk Telekom")
description: TEXT NULL                      -- Açıklama
logo_url: TEXT NULL                         -- Logo URL (opsiyonel)
industry: VARCHAR(100) NULL                 -- Sektör (Banka, Telecom, E-Devlet, vb.)
active: BOOLEAN DEFAULT 1                   -- Aktif mi?
created_at: TIMESTAMP DEFAULT CURRENT_TIMESTAMP
updated_at: TIMESTAMP DEFAULT CURRENT_TIMESTAMP

-- İstatistikler (hesaplanan - denormalized için)
total_tokens: INTEGER DEFAULT 0             -- Toplam token sayısı
total_clicks: INTEGER DEFAULT 0             -- Toplam tıklama sayısı
click_rate: DECIMAL(5,2) DEFAULT 0          -- Tıklama oranı %

2. tracking_tokens - Tracking Token'ları

id: INTEGER PRIMARY KEY AUTOINCREMENT
token: VARCHAR(64) UNIQUE NOT NULL          -- Benzersiz tracking token (32 byte hex)
company_id: INTEGER NOT NULL                -- FK -> companies.id (Hangi şirket için)
target_email: VARCHAR(255) NOT NULL         -- Hedef mail adresi
employee_name: VARCHAR(255) NULL            -- Çalışan adı (opsiyonel)
template_type: VARCHAR(50) DEFAULT 'bank'   -- Mail şablonu tipi
mail_subject: VARCHAR(500)                  -- Mail konusu
mail_sent: BOOLEAN DEFAULT 0                -- Mail gönderildi mi?
sent_at: TIMESTAMP NULL                     -- Mail gönderim zamanı
clicked: BOOLEAN DEFAULT 0                  -- Link tıklandı mı?
click_count: INTEGER DEFAULT 0              -- Toplam tıklama sayısı
first_click_at: TIMESTAMP NULL              -- İlk tıklama zamanı
last_click_at: TIMESTAMP NULL               -- Son tıklama zamanı
created_at: TIMESTAMP DEFAULT CURRENT_TIMESTAMP
notes: TEXT NULL                            -- Notlar

FOREIGN KEY (company_id) REFERENCES companies(id) ON DELETE CASCADE

3. click_logs - Tıklama Kayıtları

id: INTEGER PRIMARY KEY AUTOINCREMENT
token_id: INTEGER NOT NULL                  -- FK -> tracking_tokens.id
ip_address: VARCHAR(45) NOT NULL            -- Tıklayan IP adresi
country: VARCHAR(100)                       -- Ülke
city: VARCHAR(100)                          -- Şehir
latitude: DECIMAL(10, 8) NULL               -- Enlem
longitude: DECIMAL(11, 8) NULL              -- Boylam
user_agent: TEXT                            -- Tam User Agent string
browser: VARCHAR(100)                       -- Parse edilmiş tarayıcı
os: VARCHAR(100)                            -- Parse edilmiş işletim sistemi
device: VARCHAR(100)                        -- Parse edilmiş cihaz tipi
referer: TEXT NULL                          -- Referrer URL
clicked_at: TIMESTAMP DEFAULT CURRENT_TIMESTAMP
telegram_sent: BOOLEAN DEFAULT 0            -- Telegram bildirimi gönderildi mi?

4. mail_templates - Mail Şablonları

id: INTEGER PRIMARY KEY AUTOINCREMENT
name: VARCHAR(255) NOT NULL                 -- Şablon adı
template_type: VARCHAR(50) UNIQUE NOT NULL  -- Tip (bank, edevlet, corporate, etc.)
subject_template: VARCHAR(500)              -- Konu şablonu
body_html: TEXT NOT NULL                    -- HTML mail içeriği (template)
description: TEXT                           -- Şablon açıklaması
preview_image: TEXT NULL                    -- Preview resim URL (opsiyonel)
created_at: TIMESTAMP DEFAULT CURRENT_TIMESTAMP
updated_at: TIMESTAMP DEFAULT CURRENT_TIMESTAMP
active: BOOLEAN DEFAULT 1                   -- Aktif mi?

5. settings - Sistem Ayarları

id: INTEGER PRIMARY KEY AUTOINCREMENT
key: VARCHAR(100) UNIQUE NOT NULL           -- Ayar key (gmail_user, telegram_token, etc.)
value: TEXT                                 -- Ayar value (encrypted for sensitive data)
is_encrypted: BOOLEAN DEFAULT 0             -- Encrypt edilmiş mi?
description: TEXT                           -- Açıklama
updated_at: TIMESTAMP DEFAULT CURRENT_TIMESTAMP

6. admin_user - Admin Kullanıcı (tek kullanıcı)

id: INTEGER PRIMARY KEY CHECK (id = 1)      -- Sadece 1 kayıt
username: VARCHAR(100) UNIQUE NOT NULL      
password_hash: VARCHAR(255) NOT NULL        -- bcrypt hash
last_login: TIMESTAMP NULL
created_at: TIMESTAMP DEFAULT CURRENT_TIMESTAMP
updated_at: TIMESTAMP DEFAULT CURRENT_TIMESTAMP

🔌 API Endpoints (Şirket Yönetimi ile)

Authentication

POST   /api/auth/login             - Giriş (username + password)
POST   /api/auth/logout            - Çıkış
GET    /api/auth/check             - Session kontrolü

Companies (Şirket Yönetimi)

GET    /api/companies              - Tüm şirketleri listele
POST   /api/companies              - Yeni şirket oluştur
GET    /api/companies/:id          - Şirket detayları + istatistikler
PUT    /api/companies/:id          - Şirket güncelle
DELETE /api/companies/:id          - Şirket sil (cascade: tokenları da siler)
GET    /api/companies/:id/tokens   - Şirkete ait tüm tokenlar
GET    /api/companies/:id/stats    - Şirket istatistikleri detaylı

Tracking Tokens

GET    /api/tokens                 - Tüm token'ları listele (query: ?company_id=X)
POST   /api/tokens/create          - Yeni token oluştur (mail göndermeden)
                                     Body: { company_id, target_email, employee_name, template_type }
POST   /api/tokens/create-and-send - Yeni token oluştur ve mail gönder
                                     Body: { company_id, target_email, employee_name, template_type }
GET    /api/tokens/:id             - Token detayları
PUT    /api/tokens/:id             - Token güncelle (notes)
DELETE /api/tokens/:id             - Token sil
POST   /api/tokens/:id/send        - Mevcut token için mail gönder
GET    /api/tokens/:id/clicks      - Token'a ait tüm tıklama kayıtları

Mail Templates

GET    /api/templates              - Tüm mail şablonları
GET    /api/templates/:type        - Belirli şablon detayı
POST   /api/templates              - Yeni şablon oluştur
PUT    /api/templates/:id          - Şablon güncelle
DELETE /api/templates/:id          - Şablon sil
POST   /api/templates/preview      - Şablon önizleme (render et)

Settings

GET    /api/settings               - Tüm ayarlar
PUT    /api/settings/gmail         - Gmail ayarları (email, app password)
PUT    /api/settings/telegram      - Telegram ayarları (bot token, chat_id)
POST   /api/settings/test-gmail    - Gmail bağlantı testi
POST   /api/settings/test-telegram - Telegram test mesajı gönder

Tracking (Public Endpoints - Auth Gerektirmez)

GET    /t/:token                   - Token tracking endpoint
                                     - IP, User-Agent, GeoIP kaydet
                                     - Telegram bildirimi gönder
                                     - Landing page'e redirect et

Dashboard/Stats

GET    /api/stats/dashboard        - Dashboard özet istatistikleri
                                     - Toplam şirket sayısı
                                     - Toplam token sayısı
                                     - Tıklanma oranı
                                     - Son 24 saat aktivite
                                     - Şirket bazlı özet
GET    /api/stats/recent-clicks    - Son tıklamalar (real-time için)
GET    /api/stats/by-company       - Şirket bazlı istatistikler (grafik için)

🔄 İş Akışı (Basitleştirilmiş Workflow)

Senaryo 0: Şirket Oluştur (İlk Adım)

  1. Panel'e Giriş: Admin kullanıcı adı/şifre ile giriş yapar
  2. "Şirketler" Sayfasına Git
  3. "Yeni Şirket Ekle" Butonu: Tıkla
  4. Form Doldur:
    • Şirket Adı: Türk Telekom
    • ıklama: Telekomünikasyon şirketi test kampanyası
    • Sektör: Telecom (dropdown)
    • Logo URL: (opsiyonel)
  5. Şirket Oluşturulur: Artık bu şirket için tokenlar oluşturabilirsin

Senaryo 1: Token Oluştur + Manuel Mail

  1. Dashboard'dan "Yeni Token Oluştur" Butonu: Tıkla
  2. Form Doldur:
    • Şirket Seç: Türk Telekom (dropdown - önceden oluşturulmuş)
    • Hedef Email: mehmet@example.com
    • Çalışan Adı: Mehmet Yılmaz (opsiyonel)
    • Şablon Seç: Banka Şablonu
  3. Token Oluşturulur:
    • Benzersiz token: a3f8b2e9c1d4f7e6... (64 karakter hex)
    • URL: https://yourdomain.com/t/a3f8b2e9c1d4f7e6...
    • Şirkete bağlanır (company_id = Türk Telekom)
  4. Manuel Mail Gönderimi:
    • Token ve URL ekranda gösterilir
    • Admin isterse kendi Gmail'inden manuel gönderir

Senaryo 2: Token Oluştur + Otomatik Mail Gönder

  1. "Yeni Mail Oluştur" Butonu: Tıkla
  2. Form Doldur (şirket seçimi dahil)
  3. Mail Otomatik Gönderilir:
    • Gmail App Password ile Nodemailer kullanılır
    • Mail içeriği şablondan oluşturulur:
      Konu: Türk Telekom - Acil Güvenlik Bildirimi
      
      Sayın Mehmet Yılmaz,
      
      [Şablon içeriği - tracking linki içerir]
      
      Linke tıklamak için: https://yourdomain.com/t/{token}
      
  4. Token + Mail Durumu Kaydedilir:
    • mail_sent = 1
    • sent_at = CURRENT_TIMESTAMP
    • Şirket istatistikleri güncellenir (total_tokens++)

Tracking Mekanizması

URL: https://yourdomain.com/t/a3f8b2e9c1d4f7e6...

Kullanıcı tıklayınca ne olur:

  1. Backend /t/:token endpoint'i çalışır
  2. Token veritabanında aranır
  3. IP adresi, User-Agent, Referer yakalanır
  4. GeoIP ile konum belirlenir (geoip-lite)
  5. click_logs tablosuna kayıt atılır:
    INSERT INTO click_logs (
      token_id, ip_address, country, city,
      user_agent, browser, os, device, clicked_at
    ) VALUES (...)
    
  6. tracking_tokens tablosu güncellenir:
    UPDATE tracking_tokens SET
      clicked = 1,
      click_count = click_count + 1,
      last_click_at = CURRENT_TIMESTAMP,
      first_click_at = CASE WHEN first_click_at IS NULL 
                            THEN CURRENT_TIMESTAMP 
                            ELSE first_click_at END
    
  7. Telegram Bildirimi Gönderilir:
    🚨 YENİ TIKLAMA ALGILANDI!
    
    🏢 Şirket: Türk Telekom
    📧 Hedef: mehmet@example.com
    👤 Çalışan: Mehmet Yılmaz
    
    🌍 IP: 85.34.12.45
    📍 Konum: Istanbul, Turkey
    💻 Cihaz: Chrome 118.0 (Windows 10)
    ⏰ Zaman: 10 Kas 2025, 14:30:15
    
    📊 Bu token için toplam tıklama: 1
    📈 Şirket toplam tıklama: 15 (42 tokenden)
    
  8. Kullanıcı landing page'e redirect edilir
  9. Landing page: "Bu bir güvenlik farkındalık testiydi!"

Mail Şablon Sistemi

Şablon Değişkenleri (Placeholders)

<!-- Şablon HTML'inde kullanılabilir -->
{{company_name}}     → Şirket adı
{{employee_name}}    → Çalışan adı
{{tracking_url}}     → Tracking linki
{{current_year}}     → Yıl

Örnek Şablon: Banka

<!DOCTYPE html>
<html>
<body>
  <h2>{{company_name}} Güvenlik Bildirimi</h2>
  
  {{#if employee_name}}
    <p>Sayın {{employee_name}},</p>
  {{else}}
    <p>Sayın,</p>
  {{/if}}
  
  <p>Hesabınızda şüpheli aktivite tespit edildi. 
     Lütfen acilen kimliğinizi doğrulayın:</p>
  
  <a href="{{tracking_url}}" style="...">
    Hesabımı Doğrula
  </a>
  
  <p>© {{current_year}} {{company_name}}</p>
</body>
</html>

Telegram Gerçek Zamanlı Bildirim

  • node-telegram-bot-api kullanılır
  • Her tıklamada anında bildirim
  • Ayarlar'dan yapılandırılır:
    • Bot Token: 1234567890:ABC...
    • Chat ID: 123456789 (kendi Telegram ID'n)

📈 Geliştirme Planı (Basitleştirilmiş - 6-7 Hafta)

Faz 1: Temel Backend Altyapı (1 Hafta)

  • Proje klasör yapısı oluşturma
  • Node.js + Express.js setup
  • SQLite database dosyası oluşturma
  • Sequelize ile database models:
    • Company model (ŞİRKET YÖNETİMİ)
    • TrackingToken model (company_id FK ile)
    • ClickLog model
    • MailTemplate model
    • Settings model
    • AdminUser model
  • Database migration ve seed dosyaları
    • Örnek şirketler seed'leme (Türk Telekom, İş Bankası, vb.)
  • Environment variables (.env)
  • Logger implementasyonu (Winston)
  • Error handling middleware
  • Basic API routing structure

Faz 2: Authentication & Session (2-3 Gün)

  • express-session yapılandırması
  • Login endpoint (POST /api/auth/login)
  • Logout endpoint (POST /api/auth/logout)
  • Session check middleware
  • bcrypt ile password hashing
  • İlk admin kullanıcısı seed'leme

Faz 3: Şirket Yönetimi (3-4 Gün) YENİ

  • Company CRUD endpoints:
    • GET /api/companies - Tüm şirketleri listele
    • POST /api/companies - Yeni şirket oluştur
    • GET /api/companies/:id - Şirket detay + istatistikler
    • PUT /api/companies/:id - Şirket güncelle
    • DELETE /api/companies/:id - Şirket sil (cascade)
    • GET /api/companies/:id/tokens - Şirkete ait tokenlar
    • GET /api/companies/:id/stats - Şirket istatistikleri
  • Company service layer
  • Validation (Joi schemas)
  • İstatistik hesaplama (total_tokens, total_clicks, click_rate)

Faz 4: Token Yönetimi (1 Hafta)

  • Token generation (crypto.randomBytes)
  • Token CRUD endpoints:
    • POST /api/tokens/create - Token oluştur (company_id dahil)
    • POST /api/tokens/create-and-send - Token oluştur + mail gönder
    • GET /api/tokens - Tüm tokenları listele (company_id filtresi ile)
    • GET /api/tokens/:id - Token detay
    • PUT /api/tokens/:id - Token güncelle
    • DELETE /api/tokens/:id - Token sil
  • Token service layer
  • Company istatistiklerini güncelleme (token oluşturulunca/silinince)
  • Validation (Joi schemas)

Faz 5: Mail Sistemi (1 Hafta)

  • Nodemailer + Gmail entegrasyonu
  • Mail template engine (Handlebars)
  • Template placeholders: {{company_name}}, {{employee_name}}, {{tracking_url}}
  • HTML mail templates oluşturma:
    • Banka şablonu
    • E-Devlet şablonu
    • Kurumsal email şablonu
  • Mail gönderme servisi (şirket adını kullanarak)
  • Mail template CRUD endpoints
  • Template preview endpoint
  • Gmail test endpoint

Faz 6: Tracking & GeoIP (1 Hafta)

  • /t/:token tracking endpoint (public)
  • IP adresi yakalama (req.ip, x-forwarded-for)
  • User-Agent parsing (useragent paketi)
  • GeoIP integration (geoip-lite)
  • Click log kaydetme (click_logs tablosu)
  • Token istatistikleri güncelleme
  • Şirket istatistikleri güncelleme (total_clicks++)
  • Landing page HTML (static)
  • Redirect logic

Faz 7: Telegram Bildirimleri (2-3 Gün)

  • node-telegram-bot-api kurulumu
  • Telegram settings endpoints:
    • PUT /api/settings/telegram
    • POST /api/settings/test-telegram
  • Bildirim formatı oluşturma (şirket adı dahil)
  • Tıklama sonrası Telegram mesajı gönderimi
  • Şirket bazlı toplam istatistikler bildirme
  • Error handling (telegram down ise)

Faz 8: Settings & Dashboard API (2-3 Gün)

  • Settings CRUD (gmail, telegram ayarları)
  • Encryption (sensitive data için)
  • Dashboard stats endpoint:
    • Toplam şirket sayısı
    • Toplam token sayısı
    • Tıklanan/tıklanmayan oranı
    • Son 24 saat aktivite
    • Şirket bazlı özet tablosu
    • En çok tıklanan tokenlar
  • Recent clicks endpoint (real-time için)
  • Company-based stats endpoint (grafik için)

Faz 9: Frontend - React SPA (2 Hafta)

  • React (Vite) veya Next.js project setup
  • UI framework: Material-UI (MUI) veya Tailwind CSS
  • React Router setup
  • Axios API client yapılandırması

Sayfalar:

  • Login Page (/login)

    • Login formu
    • Session yönetimi
  • Dashboard (/)

    • Özet kartlar (Şirket sayısı, Total tokens, Click rate, etc.)
    • Şirket bazlı performans tablosu
    • Son tıklamalar listesi (real-time, şirket adı ile)
    • Şirket bazlı grafik (Chart.js)
  • Companies (/companies) YENİ

    • Şirket kartları listesi
    • "Yeni Şirket Ekle" butonu
    • Her şirkette: İsim, Sektör, Token sayısı, Tıklama oranı
    • Arama ve filtreleme
  • Company Detay (/companies/:id) YENİ

    • Şirket bilgileri (düzenlenebilir)
    • Şirkete özel istatistikler
    • Şirkete özel grafik (30 gün)
    • Şirkete ait tokenların listesi
    • "Yeni Token Ekle" butonu (şirket otomatik seçili)
    • "Şirketi Sil" butonu
  • Tokens List (/tokens)

    • Tüm tokenları tablo halinde
    • Şirket bazlı filtreleme (dropdown)
    • Filtreleme (tıklanan/tıklanmayan)
    • Arama (email, şirket adı, çalışan adı)
    • "Yeni Token Oluştur" butonu
    • "Yeni Mail Oluştur" butonu
  • Token Detay (/tokens/:id)

    • Token bilgileri
    • Şirket adı ve "Şirkete Git" linki
    • Tracking URL (copy to clipboard)
    • Tıklama geçmişi tablosu (IP, konum, cihaz, zaman)
    • Not ekleme
  • Create Token Modal/Page

    • Form: Şirket Seç (dropdown), Email, Çalışan Adı, Şablon
    • "Sadece Oluştur" ve "Oluştur + Mail Gönder" butonları
    • Mail önizleme (şirket adı ile)
  • Templates (/templates)

    • Mail şablonları listesi
    • Yeni şablon oluşturma
    • Şablon düzenleme (HTML editor - basit textarea yeterli)
    • Preview
  • Settings (/settings)

    • Gmail ayarları (email, app password)
    • Telegram ayarları (bot token, chat_id)
    • Test butonları
    • Domain/Base URL ayarı
  • Responsive Design (Mobile uyumlu)

Faz 10: Güvenlik & Optimizasyon (2-3 Gün)

  • API rate limiting (express-rate-limit)
  • Input validation (Joi - tüm endpoints, şirket endpoints dahil)
  • SQL injection prevention (ORM kullanımı)
  • XSS protection (helmet.js)
  • CORS yapılandırması
  • Secure session cookies
  • Database indexing (token, email, ip_address, company_id)
  • Error logging

Faz 11: Testing & Deployment (3-4 Gün)

  • Backend unit tests (önemli servisler için)
  • API endpoint tests (Postman collection)
    • Company endpoints testi
    • Token + Company ilişki testi
  • Frontend test (manuel)
  • .env.example dosyaları
  • README.md:
    • Kurulum talimatları
    • Gmail App Password nasıl alınır
    • Telegram Bot nasıl oluşturulur
    • İlk şirket nasıl oluşturulur
    • Deployment guide
  • Production build test
  • PM2 ecosystem.config.js
  • SQLite backup scripti
  • Database migration komutları

🎨 UI/UX Tasarım Önerileri

Dashboard Ana Sayfa

┌─────────────────────────────────────────────────────────┐
│  📊 Dashboard                            👤 Admin ▼      │
├─────────────────────────────────────────────────────────┤
│                                                           │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌──────────┐   │
│  │ 🏢 5    │  │ 📨 42   │  │ ✅ 15   │  │ 📈 35.7%│   │
│  │ Şirket  │  │ Toplam  │  │ Tıklanan│  │ Başarı  │   │
│  │         │  │ Token   │  │         │  │ Oranı   │   │
│  └─────────┘  └─────────┘  └─────────┘  └──────────┘   │
│                                                           │
│  📊 Şirket Bazlı Performans                              │
│  ┌────────────────────────────────────────────────┐     │
│  │ Şirket        │ Tokenlar │ Tıklanan │ Oran    │     │
│  ├────────────────────────────────────────────────┤     │
│  │ Türk Telekom  │    18    │    8     │ 44.4%   │     │
│  │ İş Bankası    │    12    │    4     │ 33.3%   │     │
│  │ PTT           │     7    │    2     │ 28.6%   │     │
│  │ E-Devlet      │     5    │    1     │ 20.0%   │     │
│  └────────────────────────────────────────────────┘     │
│                                                           │
│  📈 Son 7 Gün Aktivite (Tüm Şirketler)                  │
│  ┌────────────────────────────────────────┐             │
│  │     [Çizgi grafiği - şirket bazlı]     │             │
│  └────────────────────────────────────────┘             │
│                                                           │
│  🚨 Son Tıklamalar (Gerçek Zamanlı)                     │
│  ┌──────────────────────────────────────────────────┐   │
│  │ 🏢 Türk Telekom                                   │   │
│  │ 14:35 • mehmet@example.com • 85.34.12.45         │   │
│  │        Istanbul, Turkey • Chrome (Windows)        │   │
│  ├──────────────────────────────────────────────────┤   │
│  │ 🏢 İş Bankası                                     │   │
│  │ 13:22 • ayse@company.com • 92.45.67.89           │   │
│  │        Ankara, Turkey • Safari (iPhone)           │   │
│  └──────────────────────────────────────────────────┘   │
│                                                           │
│  [🔵 Yeni Token Oluştur]  [📧 Yeni Mail Oluştur]        │
└─────────────────────────────────────────────────────────┘

Şirketler Sayfası

┌─────────────────────────────────────────────────────────┐
│  🏢 Şirketler                                            │
├─────────────────────────────────────────────────────────┤
│                                                           │
│  🔍 [Arama: şirket adı...]           [ Yeni Şirket]  │
│                                                           │
│  ┌──────────────────────────────────────────────────┐   │
│  │ 📊 TÜRK TELEKOM                              ✏️ │   │
│  │ Sektör: Telecom                                   │   │
│  │ 📨 18 token • ✅ 8 tıklanan • 📈 44.4%          │   │
│  │ Son aktivite: 2 saat önce                        │   │
│  └──────────────────────────────────────────────────┘   │
│                                                           │
│  ┌──────────────────────────────────────────────────┐   │
│  │ 📊 İŞ BANKASI                                ✏️ │   │
│  │ Sektör: Banking                                   │   │
│  │ 📨 12 token • ✅ 4 tıklanan • 📈 33.3%          │   │
│  │ Son aktivite: 1 gün önce                         │   │
│  └──────────────────────────────────────────────────┘   │
│                                                           │
│  ┌──────────────────────────────────────────────────┐   │
│  │ 📊 PTT                                       ✏️ │   │
│  │ Sektör: Government                                │   │
│  │ 📨 7 token • ✅ 2 tıklanan • 📈 28.6%           │   │
│  │ Son aktivite: 3 gün önce                         │   │
│  └──────────────────────────────────────────────────┘   │
│                                                           │
│  [Her şirket kartına tıklayınca detay sayfasıılır]   │
└─────────────────────────────────────────────────────────┘

Token Listesi Sayfası

┌─────────────────────────────────────────────────────────┐
│  🎯 Tracking Tokenlar                                    │
├─────────────────────────────────────────────────────────┤
│                                                           │
│  🏢 [Tüm Şirketler ▼]  🔍 [Arama...]  [Filtre ▼] [⬇]  │
│                                                           │
│  ┌──────────────────────────────────────────────────┐   │
│  │ Email       │ Şirket      │ Durum │ Tıklama │ 📅│   │
│  ├──────────────────────────────────────────────────┤   │
│  │ mehmet@...  │ T.Telekom   │  ✅   │   3×    │10K│   │
│  │ ayse@...    │ İş Bankası  │  ✅   │   1×    │10K│   │
│  │ ali@...     │ PTT         │  ❌   │   0×    │09K│   │
│  │ zeynep@...  │ T.Telekom   │  ✅   │   2×    │08K│   │
│  └──────────────────────────────────────────────────┘   │
│                                                           │
│  [< Önceki]  Sayfa 1/3  [Sonraki >]                     │
└─────────────────────────────────────────────────────────┘

Token Oluştur Modal

┌──────────────────────────────────┐
│  🎯 Yeni Token Oluştur      [X] │
├──────────────────────────────────┤
│                                   │
│  🏢 Şirket Seç *                 │
│  [▼ Türk Telekom              ]  │
│                                   │
│  📧 Hedef Email *                │
│  [mehmet@example.com          ]  │
│                                   │
│  👤 Çalışan Adı (opsiyonel)     │
│  [Mehmet Yılmaz               ]  │
│                                   │
│  📝 Mail Şablonu *               │
│  [▼ Banka Güvenlik Bildirimi  ]  │
│                                   │
│  ┌────────────────────────────┐  │
│  │ 👁️ Önizleme               │  │
│  │                            │  │
│  │ Konu: Türk Telekom -      │  │
│  │       Acil Güvenlik...    │  │
│  │                            │  │
│  │ Sayın Mehmet Yılmaz,      │  │
│  │ Hesabınızda şüpheli...    │  │
│  └────────────────────────────┘  │
│                                   │
│  [Sadece Oluştur]  [Oluştur+Gönder]│
└──────────────────────────────────┘

Token Detay Sayfası

┌─────────────────────────────────────────────────────────┐
│  ← Geri      Token Detayı                                │
├─────────────────────────────────────────────────────────┤
│                                                           │
│  🏢 TÜRK TELEKOM                       [Şirkete Git →]  │
│  📧 mehmet@example.com                                   │
│  👤 Mehmet Yılmaz                                        │
│  📅 Oluşturuldu: 10 Kas 2025, 10:30                      │
│  📨 Mail gönderildi: ✅ Evet (10 Kas 2025, 10:31)       │
│                                                           │
│  🔗 Tracking URL:                                        │
│  ┌──────────────────────────────────────────┐           │
│  │ https://domain.com/t/a3f8b2e9c1d4f7...  │ [📋 Kopyala]│
│  └──────────────────────────────────────────┘           │
│                                                           │
│  📊 İstatistikler                                        │
│  • Toplam Tıklama: 3                                     │
│  • İlk Tıklama: 10 Kas 2025, 14:35                      │
│  • Son Tıklama: 10 Kas 2025, 16:20                      │
│                                                           │
│  🚨 Tıklama Geçmişi                                      │
│  ┌──────────────────────────────────────────────────┐   │
│  │ Zaman      │ IP Adresi    │ Konum         │ Cihaz│   │
│  ├──────────────────────────────────────────────────┤   │
│  │ 16:20:15   │ 85.34.12.45  │ Istanbul, TR  │ Chr..│   │
│  │ 15:10:33   │ 85.34.12.45  │ Istanbul, TR  │ Chr..│   │
│  │ 14:35:12   │ 85.34.12.45  │ Istanbul, TR  │ Chr..│   │
│  └──────────────────────────────────────────────────┘   │
│                                                           │
│  📝 Notlar:                                              │
│  [Buraya not ekleyebilirsiniz...              ]         │
│  [💾 Kaydet]                                             │
│                                                           │
│  [🗑️ Token'ı Sil]  [📧 Yeniden Mail Gönder]             │
└─────────────────────────────────────────────────────────┘

Şirket Detay Sayfası

┌─────────────────────────────────────────────────────────┐
│  ← Geri      Şirket Detayı                               │
├─────────────────────────────────────────────────────────┤
│                                                           │
│  🏢 TÜRK TELEKOM                              [✏️ Düzenle]│
│  📋 Sektör: Telecom                                      │
│  📝 Açıklama: Telekomünikasyon şirketi test kampanyası  │
│                                                           │
│  📊 Genel İstatistikler                                  │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌──────────┐   │
│  │ 📨 18   │  │ ✅ 8    │  │ 📈 44.4%│  │ 🕐 2saat │   │
│  │ Token   │  │ Tıklanan│  │ Oran    │  │ Son      │   │
│  └─────────┘  └─────────┘  └─────────┘  └──────────┘   │
│                                                           │
│  📈 Son 30 Gün Aktivite                                  │
│  ┌────────────────────────────────────────┐             │
│  │     [Şirkete özel çizgi grafiği]       │             │
│  └────────────────────────────────────────┘             │
│                                                           │
│  🎯 Token Listesi                        [ Yeni Token]│
│  ┌──────────────────────────────────────────────────┐   │
│  │ Email          │ Çalışan      │ Durum │ Tıklama │   │
│  ├──────────────────────────────────────────────────┤   │
│  │ mehmet@ex...   │ M. Yılmaz    │  ✅   │   3×    │   │
│  │ ayse@exa...    │ A. Kaya      │  ✅   │   2×    │   │
│  │ ali@exam...    │ A. Demir     │  ❌   │   0×    │   │
│  └──────────────────────────────────────────────────┘   │
│                                                           │
│  [🗑️ Şirketi Sil]  [📊 Rapor İndir]                     │
└─────────────────────────────────────────────────────────┘

Ayarlar Sayfası

┌─────────────────────────────────────────────────────────┐
│  ⚙️ Ayarlar                                              │
├─────────────────────────────────────────────────────────┤
│                                                           │
│  📧 Gmail Ayarları                                       │
│  ┌──────────────────────────────────────────────────┐   │
│  │ Gmail Adresi:                                     │   │
│  │ [myemail@gmail.com                              ] │   │
│  │                                                    │   │
│  │ App Password:                                     │   │
│  │ [••••••••••••••••                               ] │   │
│  │                                                    │   │
│  │ Gönderen Adı:                                     │   │
│  │ [Güvenlik Ekibi                                 ] │   │
│  │                                                    │   │
│  │ [💾 Kaydet]  [📧 Test Mail Gönder]               │   │
│  └──────────────────────────────────────────────────┘   │
│                                                           │
│  💬 Telegram Ayarları                                    │
│  ┌──────────────────────────────────────────────────┐   │
│  │ Bot Token:                                        │   │
│  │ [1234567890:ABCdefGHI...                        ] │   │
│  │                                                    │   │
│  │ Chat ID:                                          │   │
│  │ [123456789                                      ] │   │
│  │                                                    │   │
│  │  Telegram Bot nasıl oluşturulur? [Rehber]     │   │
│  │                                                    │   │
│  │ [💾 Kaydet]  [💬 Test Mesajı Gönder]             │   │
│  └──────────────────────────────────────────────────┘   │
│                                                           │
│  🌐 Domain Ayarları                                      │
│  ┌──────────────────────────────────────────────────┐   │
│  │ Base URL:                                         │   │
│  │ [https://domain.com                             ] │   │
│  │                                                    │   │
│  │ [💾 Kaydet]                                       │   │
│  └──────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────┘

🔒 Güvenlik Önlemleri

Uygulama Güvenliği

  • Tüm şifreler bcrypt ile hash'lenecek
  • JWT token'lar kısa ömürlü (15-30 dakika), refresh token uzun ömürlü
  • Rate limiting: API endpoint'lerine DDoS koruması
  • Input validation: Tüm user input'lar validate edilecek
  • SQL injection: Parameterized queries (ORM kullanımı)
  • XSS: Output encoding, CSP headers
  • CSRF protection: Token-based
  • HTTPS zorunlu (production)
  • Sensitive data encryption (at rest): SMTP passwords

Etik ve Yasal Gereklilikler

⚠️ ÖNEMLİ UYARI: Bu sistem yalnızca yasal ve etik sınırlar içinde kullanılmalıdır:

  • Yalnızca izin verilen organizasyonlarda test yapılmalı
  • Hedef kullanıcılardan yazılı onay alınmalı (awareness training kapsamında)
  • Gerçek phishing saldırısı düzenlenmemeli
  • Toplanan veriler KVKK/GDPR uyumlu olmalı
  • Audit log'lar düzenli tutulmalı
  • Landing page'lerde açık uyarı yapılmalı ("Bu bir güvenlik testi idi")

Audit ve Logging

  • Tüm kritik işlemler loglanmalı (kim, ne, ne zaman)
  • Login attempts tracking
  • Failed authentication monitoring
  • Campaign lifecycle events
  • Admin actions logging
  • Suspicious activity alerts

📦 Bağımlılıklar (package.json)

Backend Dependencies

{
  "express": "^4.18.x",
  "express-session": "^1.17.x",
  "sqlite3": "^5.1.x",
  "sequelize": "^6.35.x",
  "bcrypt": "^5.1.x",
  "nodemailer": "^6.9.x",
  "handlebars": "^4.7.x",
  "node-telegram-bot-api": "^0.64.x",
  "joi": "^17.11.x",
  "winston": "^3.11.x",
  "dotenv": "^16.3.x",
  "express-rate-limit": "^7.1.x",
  "helmet": "^7.1.x",
  "cors": "^2.8.x",
  "geoip-lite": "^1.4.x",
  "useragent": "^2.3.x",
  "crypto": "built-in"
}

Frontend Dependencies

{
  "react": "^18.2.x",
  "next": "^14.0.x",
  "axios": "^1.6.x",
  "react-hook-form": "^7.48.x",
  "@mui/material": "^5.14.x",
  "chart.js": "^4.4.x",
  "react-chartjs-2": "^5.2.x",
  "zustand": "^4.4.x",
  "date-fns": "^2.30.x"
}

📁 Proje Klasör Yapısı

oltalama/
├── backend/
│   ├── src/
│   │   ├── config/
│   │   │   ├── database.js       # SQLite Sequelize config
│   │   │   ├── session.js        # Express-session config
│   │   │   └── logger.js         # Winston config
│   │   │
│   │   ├── models/               # Sequelize models
│   │   │   ├── index.js
│   │   │   ├── TrackingToken.js
│   │   │   ├── ClickLog.js
│   │   │   ├── MailTemplate.js
│   │   │   ├── Settings.js
│   │   │   └── AdminUser.js
│   │   │
│   │   ├── controllers/          # Route handlers
│   │   │   ├── auth.controller.js
│   │   │   ├── company.controller.js     # ŞİRKET YÖNETİMİ
│   │   │   ├── token.controller.js
│   │   │   ├── template.controller.js
│   │   │   ├── settings.controller.js
│   │   │   ├── tracking.controller.js    # Public /t/:token
│   │   │   └── stats.controller.js
│   │   │
│   │   ├── services/             # Business logic
│   │   │   ├── company.service.js        # ŞİRKET SERVİSİ
│   │   │   ├── token.service.js
│   │   │   ├── mail.service.js
│   │   │   ├── telegram.service.js
│   │   │   ├── template.service.js
│   │   │   └── tracking.service.js
│   │   │
│   │   ├── middlewares/
│   │   │   ├── auth.middleware.js       # Session check
│   │   │   ├── errorHandler.js
│   │   │   └── rateLimiter.js
│   │   │
│   │   ├── routes/
│   │   │   ├── auth.routes.js
│   │   │   ├── company.routes.js        # ŞİRKET ROUTE'LARI
│   │   │   ├── token.routes.js
│   │   │   ├── template.routes.js
│   │   │   ├── settings.routes.js
│   │   │   ├── tracking.routes.js       # Public routes
│   │   │   └── stats.routes.js
│   │   │
│   │   ├── validators/           # Joi validation schemas
│   │   │   ├── company.validator.js     # ŞİRKET VALİDATOR
│   │   │   ├── token.validator.js
│   │   │   ├── template.validator.js
│   │   │   └── settings.validator.js
│   │   │
│   │   ├── utils/
│   │   │   ├── tokenGenerator.js        # crypto.randomBytes
│   │   │   ├── geoip.js                 # geoip-lite wrapper
│   │   │   ├── userAgentParser.js       # useragent wrapper
│   │   │   ├── encryption.js            # Sensitive data encrypt/decrypt
│   │   │   └── logger.js                # Winston logger
│   │   │
│   │   ├── templates/            # Handlebars mail templates
│   │   │   ├── layouts/
│   │   │   │   └── base.hbs
│   │   │   └── emails/
│   │   │       ├── bank.hbs
│   │   │       ├── edevlet.hbs
│   │   │       └── corporate.hbs
│   │   │
│   │   ├── public/               # Landing page HTML
│   │   │   └── landing.html
│   │   │
│   │   └── app.js                # Express app entry point
│   │
│   ├── database/
│   │   └── oltalama.db           # SQLite database file
│   │
│   ├── migrations/               # Sequelize migrations
│   │   ├── 001-create-tables.js
│   │   └── 002-seed-templates.js
│   │
│   ├── logs/                     # Winston logs
│   │   ├── error.log
│   │   └── combined.log
│   │
│   ├── .env.example
│   ├── .gitignore
│   ├── package.json
│   └── README.md
│
├── frontend/
│   ├── src/
│   │   ├── components/
│   │   │   ├── Layout/
│   │   │   │   ├── Sidebar.jsx
│   │   │   │   ├── Header.jsx
│   │   │   │   └── Layout.jsx
│   │   │   ├── Dashboard/
│   │   │   │   ├── StatCard.jsx
│   │   │   │   ├── ActivityFeed.jsx
│   │   │   │   ├── CompanyPerformanceTable.jsx  # ŞİRKET PERFORMANS
│   │   │   │   └── ChartWidget.jsx
│   │   │   ├── Companies/                       # ŞİRKET BİLEŞENLERİ
│   │   │   │   ├── CompanyList.jsx
│   │   │   │   ├── CompanyCard.jsx
│   │   │   │   ├── CompanyDetail.jsx
│   │   │   │   ├── CreateCompanyModal.jsx
│   │   │   │   └── CompanyStats.jsx
│   │   │   ├── Tokens/
│   │   │   │   ├── TokenList.jsx
│   │   │   │   ├── TokenDetail.jsx
│   │   │   │   ├── CreateTokenModal.jsx       # Şirket seçimi ile
│   │   │   │   └── ClickHistoryTable.jsx
│   │   │   └── Common/
│   │   │       ├── Button.jsx
│   │   │       ├── Input.jsx
│   │   │       └── CompanySelector.jsx        # Şirket dropdown
│   │   │
│   │   ├── pages/
│   │   │   ├── Login.jsx
│   │   │   ├── Dashboard.jsx
│   │   │   ├── Companies.jsx                  # ŞİRKETLER SAYFASI
│   │   │   ├── CompanyDetail.jsx              # ŞİRKET DETAY
│   │   │   ├── Tokens.jsx
│   │   │   ├── TokenDetail.jsx
│   │   │   ├── Templates.jsx
│   │   │   └── Settings.jsx
│   │   │
│   │   ├── services/
│   │   │   ├── api.js            # Axios instance
│   │   │   ├── authService.js
│   │   │   ├── companyService.js              # ŞİRKET SERVİSİ
│   │   │   ├── tokenService.js
│   │   │   ├── templateService.js
│   │   │   └── settingsService.js
│   │   │
│   │   ├── context/
│   │   │   └── AuthContext.jsx   # Auth state
│   │   │
│   │   ├── utils/
│   │   │   ├── dateFormatter.js
│   │   │   └── copyToClipboard.js
│   │   │
│   │   ├── App.jsx
│   │   └── main.jsx
│   │
│   ├── public/
│   ├── .env.example
│   ├── package.json
│   ├── vite.config.js
│   └── README.md
│
├── docs/
│   ├── SETUP.md              # Kurulum rehberi
│   ├── TELEGRAM.md           # Telegram bot setup
│   ├── GMAIL.md              # Gmail app password setup
│   └── API.md                # API documentation
│
├── scripts/
│   └── backup-db.sh          # SQLite backup script
│
├── .gitignore
├── README.md                 # Ana README
└── devpan.md                 # Bu dosya - Proje tanımı

🚀 Kurulum ve Çalıştırma

Development

# Repository clone veya yeni proje oluştur
cd oltalama

# Backend setup
cd backend
npm install
cp .env.example .env
# .env dosyasını düzenle (PORT, JWT_SECRET, SMTP ayarları)

# SQLite database oluştur ve migrate et
npm run db:migrate
npm run db:seed

# Backend'i başlat
npm run dev  # http://localhost:3000

# Frontend setup (yeni terminal)
cd ../frontend
npm install
cp .env.example .env
# API URL'sini ayarla (REACT_APP_API_URL=http://localhost:3000)

# Frontend'i başlat
npm run dev  # http://localhost:3001

Production Deployment

# PM2 ile production'da çalıştırma
cd backend
npm install --production
npm run db:migrate

# PM2 ile başlat
pm2 start src/app.js --name "oltalama-backend"
pm2 save
pm2 startup

# Frontend build
cd ../frontend
npm install
npm run build

# Static dosyaları serve et (nginx veya serve paketi ile)
npx serve -s build -p 3001

📊 Tahmini Süre ve Kaynak

  • Toplam Geliştirme Süresi: 6-7 hafta (1.5-2 ay)
  • Developer Sayısı: 1 full-stack developer yeterli
  • Teknoloji Seviyesi: Intermediate Node.js, React bilgisi gerekli
  • Önerilen Çalışma Temposu: Günde 4-6 saat odaklanmış çalışma

💾 SQLite Kullanmanın Avantajları

Neden SQLite?

  • Sıfır Kurulum: Ayrı database sunucusu gerektirmez
  • Tek Dosya: Tüm veri oltalama.db dosyasında - kolayca yedeklenir
  • Taşınabilir: Database dosyasını kopyala-yapıştır ile taşıyabilirsin
  • Hafif: Düşük kaynak tüketimi, VPS'lerde mükemmel çalışır
  • Hızlı: Küçük-orta ölçekli projeler için PostgreSQL kadar hızlı
  • Güvenilir: Milyarlarca cihazda kullanılıyor (Android, iOS, her browser)
  • ACID Uyumlu: Transaction desteği, veri güvenliği
  • Backup Kolay: Tek dosya yedekleme - cp oltalama.db oltalama.backup.db

Ne Zaman PostgreSQL'e Geçilmeli?

SQLite şu durumlarda yeterli:

  • Günde 1000'den az mail gönderiyorsan
  • Eşzamanlı 50'den az kullanıcı varsa
  • Database 10GB'dan küçükse

PostgreSQL'e geç eğer:

  • Çok yüksek concurrency gerekiyorsa (100+ eşzamanlı yazma)
  • Multi-server deployment yapacaksan
  • Çok büyük veri setleri varsa (10GB+)
  • Replication/clustering gerekiyorsa

📱 Telegram Bot Kurulum Rehberi

Adım 1: Bot Oluştur

  1. Telegram'da @BotFather'ı ara
  2. /newbot komutunu gönder
  3. Bot'un adını gir (örn: "Oltalama Test Bot")
  4. Bot'un username'ini gir (örn: "oltalama_test_bot")
  5. BotFather sana bir token verecek:
    1234567890:ABCdefGHIjklMNOpqrSTUvwxYZ123456789
    
  6. Bu token'ı kopyala, ayarlara yapıştıracaksın

Adım 2: Chat ID'ni Öğren

  1. Bot'unu aç ve /start gönder
  2. Tarayıcıda şu URL'yi aç:
    https://api.telegram.org/bot<TOKEN>/getUpdates
    
    (<TOKEN> yerine kendi token'ını koy)
  3. Dönen JSON'da "chat":{"id":123456789} şeklinde bir değer göreceksin
  4. Bu sayıyı (123456789) kopyala, bu senin Chat ID'n

Adım 3: Sisteme Ekle

  • Panel'de Ayarlar > Telegram kısmına git
  • Bot Token'ı yapıştır
  • Chat ID'yi yapıştır
  • Test Mesajı Gönder butonuna tıkla
  • Telegram'da mesaj aldıysan hazırsın! 🎉

📧 Gmail App Password Kurulum Rehberi

Neden App Password?

Gmail normal şifreni kullanmana izin vermiyor (2FA olsa bile). "App Password" özel bir şifre oluşturman gerekiyor.

Adım 1: 2-Factor Authentication Aç

  1. Google Account sayfasına git
  2. Security kısmına tıkla
  3. 2-Step Verification'ı aktifleştir (eğer aktif değilse)

Adım 2: App Password Oluştur

  1. App Passwords sayfasına git
  2. "Select app" dropdown'ından "Other (Custom name)" seç
  3. İsim gir: "Oltalama Test System"
  4. Generate butonuna tıkla
  5. Google sana 16 haneli bir şifre gösterecek:
    abcd efgh ijkl mnop
    
  6. Bu şifreyi kopyala (boşlukları silebilirsin)

Adım 3: Sisteme Ekle

  • Panel'de Ayarlar > Gmail kısmına git
  • Gmail adresini gir: myemail@gmail.com
  • App Password'u yapıştır: abcdefghijklmnop
  • Gönderen Adı: Güvenlik Ekibi (mail'de görünecek)
  • Test Mail Gönder butonuna tıkla
  • Kendi mail adresine test maili gelirse hazırsın! 🎉

🎯 Gelecek Geliştirmeler (Roadmap v2.0)

  • Toplu token oluşturma (CSV upload)
  • Mail şablonu editörü (WYSIWYG)
  • Custom landing page'ler (her token için farklı)
  • WhatsApp Business API entegrasyonu
  • SMS phishing desteği
  • QR code phishing
  • Multi-user support (ekip üyeleri)
  • Webhook integrations
  • Advanced reporting (PDF export)
  • API documentation (diğer sistemlerle entegre)
  • Mobile app (React Native)

📞 Destek ve İletişim

Projeyle ilgili sorular için:

  • GitHub Issues
  • Email: [email adresi]
  • Documentation: /docs

⚠️ ÖNEMLİ UYARI: Bu sistem yalnızca etik ve yasal phishing testleri için tasarlanmıştır. Kötü niyetli kullanım kesinlikle yasaktır ve yasal sonuçlar doğurur.


📋 Proje Bilgileri

Versiyon: 1.0.0 (Basitleştirilmiş)
Son Güncelleme: 10 Kasım 2025
Durum: Planning Phase - Ready to Develop
Tahmini Tamamlanma: 6-7 hafta

Temel Özellikler Özeti

Şirket bazlı yönetim (Her şirket ayrı takip)
SQLite (tek dosya database)
Gmail entegrasyonu (Nodemailer)
Telegram gerçek zamanlı bildirimler (şirket bilgisi ile)
Otomatik IP tracking + GeoIP
Mail şablon sistemi (Handlebars)
Basit admin paneli (React)
Session-based authentication
Responsive design
Şirket bazlı istatistik ve raporlama

Teknoloji Stack

Backend: Node.js + Express + SQLite + Sequelize
Frontend: React (Vite) + Material-UI
Entegrasyonlar: Gmail (SMTP), Telegram Bot API, GeoIP-Lite

Geliştirme Adımları

  1. Proje planı hazırlandı (Şirket yönetimi dahil)
  2. Backend altyapı + Company model (1 hafta)
  3. Authentication + Şirket yönetimi (3-4 gün)
  4. Token sistemi (company_id ile) (1 hafta)
  5. Mail & Tracking & Telegram (2 hafta)
  6. Frontend (Şirket sayfaları dahil) (2 hafta)
  7. Test & Deploy (3-4 gün)

Toplam: ~7-8 hafta geliştirme (şirket yönetimi eklendi)