244 lines
6.1 KiB
Markdown
244 lines
6.1 KiB
Markdown
|
|
# 📊 Hosting Platform - İş Akışı Diyagramları
|
|||
|
|
|
|||
|
|
Bu dokümanda projenin tüm görsel iş akışı diyagramları bulunmaktadır.
|
|||
|
|
|
|||
|
|
## 📑 İçindekiler
|
|||
|
|
|
|||
|
|
1. [Genel İş Akışları](#genel-iş-akışları)
|
|||
|
|
2. [Domain Setup Detaylı Akış](#domain-setup-detaylı-akış)
|
|||
|
|
3. [API Endpoint Yapısı](#api-endpoint-yapısı)
|
|||
|
|
4. [Veritabanı Şemaları](#veritabanı-şemaları)
|
|||
|
|
5. [Sistem Mimarisi](#sistem-mimarisi)
|
|||
|
|
6. [Kimlik Doğrulama](#kimlik-doğrulama)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔄 Genel İş Akışları
|
|||
|
|
|
|||
|
|
### Müşteri Panel - Ana İş Akışı
|
|||
|
|
|
|||
|
|
Bu diyagram müşteri panelinin tüm ana işlevlerini gösterir:
|
|||
|
|
- Kullanıcı kaydı ve girişi
|
|||
|
|
- Dashboard yönetimi
|
|||
|
|
- Domain ekleme ve yönetimi (8 adımlı süreç)
|
|||
|
|
- Container deployment
|
|||
|
|
- Abonelik yönetimi
|
|||
|
|
|
|||
|
|
**Akış Adımları:**
|
|||
|
|
1. **Kimlik Doğrulama**: Register/Login → JWT Token
|
|||
|
|
2. **Dashboard**: Profil, Domain Listesi, İstatistikler
|
|||
|
|
3. **Domain Yönetimi**:
|
|||
|
|
- Domain ekle
|
|||
|
|
- CF hesap seç (Company/Own)
|
|||
|
|
- Zone doğrula
|
|||
|
|
- NS kontrolü
|
|||
|
|
- DNS önizleme
|
|||
|
|
- DNS uygula
|
|||
|
|
- SSL yapılandır
|
|||
|
|
- Veritabanına kaydet
|
|||
|
|
4. **Container**: Deploy → Yapılandır → Yönet
|
|||
|
|
5. **Abonelik**: Planları görüntüle → Yükselt → Ödeme
|
|||
|
|
|
|||
|
|
### Admin Panel - Ana İş Akışı
|
|||
|
|
|
|||
|
|
Bu diyagram admin panelinin tüm yönetim işlevlerini gösterir:
|
|||
|
|
- Admin girişi ve audit logging
|
|||
|
|
- Dashboard ve istatistikler
|
|||
|
|
- Müşteri yönetimi
|
|||
|
|
- Plan yönetimi (CRUD)
|
|||
|
|
- Cloudflare hesap yönetimi
|
|||
|
|
- Audit log sistemi
|
|||
|
|
|
|||
|
|
**Akış Adımları:**
|
|||
|
|
1. **Kimlik Doğrulama**: Admin Login → JWT + Role → Audit Log
|
|||
|
|
2. **Dashboard**: Sistem istatistikleri ve genel bakış
|
|||
|
|
3. **Müşteri Yönetimi**: Liste → Detay → Plan Güncelle → Durum Yönet
|
|||
|
|
4. **Plan Yönetimi**: Liste → Oluştur/Düzenle/Sil → Limit Belirle
|
|||
|
|
5. **CF Yönetimi**: Liste → Ekle/Düzenle → Token Şifrele → Kota Kontrol
|
|||
|
|
6. **Audit**: Tüm işlemler loglanır → Görüntüle → Filtrele
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🌐 Domain Setup Detaylı Akış
|
|||
|
|
|
|||
|
|
### Sequence Diagram - Adım Adım
|
|||
|
|
|
|||
|
|
Bu sequence diagram, domain ekleme sürecinin tüm adımlarını detaylı gösterir:
|
|||
|
|
|
|||
|
|
**Katılımcılar:**
|
|||
|
|
- Kullanıcı
|
|||
|
|
- Frontend (React)
|
|||
|
|
- Backend API (Flask)
|
|||
|
|
- PostgreSQL Database
|
|||
|
|
- Cloudflare API
|
|||
|
|
- Load Balancer
|
|||
|
|
|
|||
|
|
**Süreç:**
|
|||
|
|
|
|||
|
|
1. **Domain Girişi**
|
|||
|
|
- Kullanıcı domain adını girer
|
|||
|
|
- POST /api/dns/validate-domain
|
|||
|
|
- Database'de kontrol edilir
|
|||
|
|
|
|||
|
|
2. **CF Hesap Seçimi**
|
|||
|
|
- Company Account: Listeden seçim
|
|||
|
|
- Own Account: Token girişi
|
|||
|
|
|
|||
|
|
3. **Zone Doğrulama**
|
|||
|
|
- Cloudflare API ile zone bilgisi alınır
|
|||
|
|
- Zone ID, nameservers kaydedilir
|
|||
|
|
|
|||
|
|
4. **Nameserver Kontrolü**
|
|||
|
|
- NS kayıtları kontrol edilir
|
|||
|
|
- Yapılandırılmamışsa talimatlar gösterilir
|
|||
|
|
- Polling ile kontrol devam eder
|
|||
|
|
|
|||
|
|
5. **DNS Önizleme**
|
|||
|
|
- Load Balancer IP seçilir (hash-based)
|
|||
|
|
- Mevcut DNS kayıtları alınır
|
|||
|
|
- Değişiklikler hesaplanır ve gösterilir
|
|||
|
|
|
|||
|
|
6. **DNS Uygulama**
|
|||
|
|
- A records güncellenir (root + www)
|
|||
|
|
- SSL yapılandırması (Full, HTTPS, Auto Rewrites)
|
|||
|
|
- Database'e kaydedilir
|
|||
|
|
|
|||
|
|
7. **Tamamlama**
|
|||
|
|
- Domain aktif duruma geçer
|
|||
|
|
- Başarı mesajı gösterilir
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📡 API Endpoint Yapısı
|
|||
|
|
|
|||
|
|
### Müşteri Panel API Endpoints
|
|||
|
|
|
|||
|
|
**Kategoriler:**
|
|||
|
|
- 🔐 **Authentication** (`/api/auth`)
|
|||
|
|
- POST /register
|
|||
|
|
- POST /login
|
|||
|
|
- GET /me
|
|||
|
|
- POST /logout
|
|||
|
|
|
|||
|
|
- 👤 **Customer** (`/api/customer`)
|
|||
|
|
- GET /domains
|
|||
|
|
- POST /domains
|
|||
|
|
- GET /domains/:id
|
|||
|
|
- DELETE /domains/:id
|
|||
|
|
- GET /stats
|
|||
|
|
|
|||
|
|
- 🌐 **DNS** (`/api/dns`)
|
|||
|
|
- POST /validate-domain
|
|||
|
|
- POST /validate-zone
|
|||
|
|
- POST /select-company-account
|
|||
|
|
- GET /check-nameservers
|
|||
|
|
- POST /preview-changes
|
|||
|
|
- POST /apply-changes
|
|||
|
|
|
|||
|
|
- ⚙️ **Admin** (`/api/admin`)
|
|||
|
|
- CF Accounts CRUD
|
|||
|
|
- Customers Management
|
|||
|
|
- Stats
|
|||
|
|
|
|||
|
|
- 🐳 **Containers** (`/api/containers`)
|
|||
|
|
- GET /
|
|||
|
|
- POST /deploy
|
|||
|
|
- GET /:id
|
|||
|
|
- DELETE /:id
|
|||
|
|
|
|||
|
|
### Admin Panel API Endpoints
|
|||
|
|
|
|||
|
|
**Kategoriler:**
|
|||
|
|
- 🔐 **Authentication** (`/api/auth`)
|
|||
|
|
- 📋 **Plans** (`/api/plans`) - CRUD
|
|||
|
|
- ☁️ **CF Accounts** (`/api/cf-accounts`) - CRUD
|
|||
|
|
- 👥 **Customers** (`/api/customers`) - Management
|
|||
|
|
- 📝 **Audit** (`/api/audit`) - Logs & Stats
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🗄️ Veritabanı Şemaları
|
|||
|
|
|
|||
|
|
### Müşteri Panel Database (hosting_db)
|
|||
|
|
|
|||
|
|
**Entity Relationships:**
|
|||
|
|
- USERS (1) → (N) CUSTOMERS
|
|||
|
|
- CUSTOMERS (1) → (N) DOMAINS
|
|||
|
|
- DOMAINS (1) → (N) DNS_RECORDS
|
|||
|
|
- CLOUDFLARE_ACCOUNTS (1) → (N) DOMAINS
|
|||
|
|
|
|||
|
|
**Ana Tablolar:**
|
|||
|
|
1. **users**: Kullanıcı hesapları
|
|||
|
|
2. **customers**: Müşteri profilleri ve abonelikler
|
|||
|
|
3. **domains**: Domain kayıtları
|
|||
|
|
4. **dns_records**: DNS kayıt detayları
|
|||
|
|
5. **cloudflare_accounts**: Şirket CF hesapları
|
|||
|
|
|
|||
|
|
**Önemli Alanlar:**
|
|||
|
|
- `cf_api_token_encrypted`: Şifrelenmiş API token (Fernet)
|
|||
|
|
- `subscription_plan`: Plan slug (free, basic, premium)
|
|||
|
|
- `cf_account_type`: 'company' veya 'own'
|
|||
|
|
- `status`: pending, active, suspended, deleted
|
|||
|
|
|
|||
|
|
### Admin Panel Database (admin_hosting_db)
|
|||
|
|
|
|||
|
|
**Entity Relationships:**
|
|||
|
|
- ADMIN_USERS (1) → (N) AUDIT_LOGS
|
|||
|
|
- SUBSCRIPTION_PLANS ← → CLOUDFLARE_ACCOUNTS
|
|||
|
|
|
|||
|
|
**Ana Tablolar:**
|
|||
|
|
1. **admin_users**: Admin hesapları
|
|||
|
|
2. **subscription_plans**: Abonelik planları
|
|||
|
|
3. **cloudflare_accounts**: CF hesap yönetimi
|
|||
|
|
4. **audit_logs**: Tüm admin işlemleri
|
|||
|
|
|
|||
|
|
**Önemli Alanlar:**
|
|||
|
|
- `role`: admin, super_admin
|
|||
|
|
- `features`: JSON array (plan özellikleri)
|
|||
|
|
- `action`: login, create_plan, update_customer, vb.
|
|||
|
|
- `details`: JSON (işlem detayları)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🏗️ Sistem Mimarisi
|
|||
|
|
|
|||
|
|
### Genel Mimari
|
|||
|
|
|
|||
|
|
**Katmanlar:**
|
|||
|
|
|
|||
|
|
1. **Internet Layer**
|
|||
|
|
- Kullanıcılar (Müşteriler + Adminler)
|
|||
|
|
- HTTPS üzerinden erişim
|
|||
|
|
|
|||
|
|
2. **CDN/DNS Layer**
|
|||
|
|
- Cloudflare (DNS, SSL, Proxy)
|
|||
|
|
- DDoS koruması
|
|||
|
|
- SSL/TLS termination
|
|||
|
|
|
|||
|
|
3. **Frontend Layer**
|
|||
|
|
- Customer React App (argeict.net, Port 3000)
|
|||
|
|
- Admin React App (admin.argeict.net, Port 3001)
|
|||
|
|
|
|||
|
|
4. **Backend Layer**
|
|||
|
|
- Customer Flask API (api.argeict.net, Port 5000)
|
|||
|
|
- Admin Flask API (admin-api.argeict.net, Port 5001)
|
|||
|
|
|
|||
|
|
5. **Data Layer**
|
|||
|
|
- PostgreSQL: hosting_db
|
|||
|
|
- PostgreSQL: admin_hosting_db
|
|||
|
|
- Redis Cache
|
|||
|
|
|
|||
|
|
6. **Infrastructure Layer**
|
|||
|
|
- Load Balancers (3 adet)
|
|||
|
|
- Docker Containers
|
|||
|
|
- Nginx Reverse Proxy
|
|||
|
|
|
|||
|
|
**Veri Akışı:**
|
|||
|
|
- Frontend → Backend: REST API (JSON)
|
|||
|
|
- Backend → Database: SQLAlchemy ORM
|
|||
|
|
- Backend → Cache: Redis
|
|||
|
|
- Backend → Cloudflare: REST API
|
|||
|
|
- Admin Panel → Customer Panel: API Call (cross-panel)
|
|||
|
|
|
|||
|
|
|