first commit
This commit is contained in:
262
belgeler/SERVER_STARTUP_CORS_DISPLAY.md
Normal file
262
belgeler/SERVER_STARTUP_CORS_DISPLAY.md
Normal file
@@ -0,0 +1,262 @@
|
||||
# Server Startup CORS Display
|
||||
|
||||
## 🎯 Özellik
|
||||
|
||||
Server başlarken **CORS Whitelist** ve **Blacklist** otomatik olarak console'da gösterilir.
|
||||
|
||||
---
|
||||
|
||||
## 📺 Örnek Output
|
||||
|
||||
### Whitelist ve Blacklist Varsa:
|
||||
|
||||
```
|
||||
___ __ __ ___ ___ ___ _ __ ___ _ _ ___
|
||||
| _ )| | / \| \ | _ ) / \| |/ / | __|| \| || \
|
||||
| _ \| |_| () | |) || _ \| - | ' < | _| | . || |) |
|
||||
|___/|____\__/|___/ |___/|_| |_|_|\_\ |___||_|\_||___/
|
||||
|
||||
Go Backend | v1.0.0 | Running
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
CORS Configuration (Database-Driven)
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
✅ WHITELIST (Allowed Origins):
|
||||
● 1. https://nextgo.beyhano.net.tr
|
||||
└─ Production Next.js frontend
|
||||
● 2. http://localhost:3000
|
||||
└─ Local development
|
||||
○ 3. https://staging.beyhano.net.tr
|
||||
└─ Staging environment (inactive)
|
||||
|
||||
🚫 BLACKLIST (Blocked Origins):
|
||||
● 1. https://spam-site.com
|
||||
└─ Reason: Spam attempts detected
|
||||
● 2. https://malicious-domain.com
|
||||
└─ Reason: Security threat
|
||||
|
||||
Legend: ● Active | ○ Inactive
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
[GIN-debug] [WARNING] Running in "debug" mode...
|
||||
[GIN-debug] GET /v1/auth/login --> ...
|
||||
Server running on port 8080
|
||||
```
|
||||
|
||||
### Whitelist Boşsa (İlk Kurulum):
|
||||
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
CORS Configuration (Database-Driven)
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
✅ WHITELIST (Allowed Origins):
|
||||
⚠️ No origins whitelisted! Add origins via API.
|
||||
|
||||
🚫 BLACKLIST (Blocked Origins):
|
||||
✅ No origins blacklisted.
|
||||
|
||||
Legend: ● Active | ○ Inactive
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
|
||||
### Database Error:
|
||||
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
CORS Configuration (Database-Driven)
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
❌ Failed to load whitelist: database connection error
|
||||
❌ Failed to load blacklist: database connection error
|
||||
|
||||
Legend: ● Active | ○ Inactive
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 Renk Kodları
|
||||
|
||||
| Sembol | Anlamı | Renk |
|
||||
|--------|--------|------|
|
||||
| `●` | Active (Aktif) | Yeşil |
|
||||
| `○` | Inactive (Pasif) | Kırmızı/Sarı |
|
||||
| `✅` | Success | Yeşil |
|
||||
| `❌` | Error | Kırmızı |
|
||||
| `⚠️` | Warning | Sarı |
|
||||
| `🚫` | Blocked | Kırmızı |
|
||||
|
||||
---
|
||||
|
||||
## 📋 Bilgiler
|
||||
|
||||
### Whitelist Display:
|
||||
```
|
||||
● 1. https://example.com
|
||||
└─ Description here
|
||||
```
|
||||
|
||||
- **Numara:** Sıra numarası
|
||||
- **Origin:** CORS izinli domain
|
||||
- **Description:** Opsiyonel açıklama
|
||||
- **Status:**
|
||||
- `●` (Yeşil) = Active (is_active = true)
|
||||
- `○` (Kırmızı) = Inactive (is_active = false)
|
||||
|
||||
### Blacklist Display:
|
||||
```
|
||||
● 1. https://spam.com
|
||||
└─ Reason: Spam attempts
|
||||
```
|
||||
|
||||
- **Numara:** Sıra numarası
|
||||
- **Origin:** CORS yasaklı domain
|
||||
- **Reason:** Neden yasaklandığı
|
||||
- **Status:**
|
||||
- `●` (Kırmızı) = Active (is_active = true)
|
||||
- `○` (Sarı) = Inactive (is_active = false)
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Kod
|
||||
|
||||
`main.go`:
|
||||
```go
|
||||
func displayCorsConfiguration(settingsService *services.SettingsService) {
|
||||
fmt.Println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
fmt.Println(" CORS Configuration (Database-Driven)")
|
||||
fmt.Println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
|
||||
// Get Whitelist from database
|
||||
whitelists, err := settingsService.GetAllCorsWhitelist()
|
||||
|
||||
// Display each whitelist entry
|
||||
for i, w := range whitelists {
|
||||
status := "●" // Active
|
||||
if !w.IsActive {
|
||||
status = "○" // Inactive
|
||||
}
|
||||
fmt.Printf(" %s %d. %s\n", status, i+1, w.Origin)
|
||||
if w.Description != "" {
|
||||
fmt.Printf(" └─ %s\n", w.Description)
|
||||
}
|
||||
}
|
||||
|
||||
// Same for blacklist...
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Kullanım
|
||||
|
||||
### 1. Server'ı Başlat
|
||||
|
||||
```bash
|
||||
./main
|
||||
```
|
||||
|
||||
### 2. CORS Listelerini Gör
|
||||
|
||||
Server başlarken otomatik olarak gösterilir!
|
||||
|
||||
### 3. Origin Ekle/Sil
|
||||
|
||||
```bash
|
||||
# Whitelist'e ekle
|
||||
curl -X POST http://localhost:8080/v1/settings/cors/whitelist \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-d '{"origin":"https://newdomain.com","description":"New app"}'
|
||||
|
||||
# Server'ı restart et
|
||||
./main
|
||||
# Yeni origin liste
|
||||
|
||||
de görünür!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 Avantajlar
|
||||
|
||||
✅ **Görünürlük**
|
||||
- Hangi origin'lerin izinli olduğunu hemen görürsünüz
|
||||
- Blacklist'te hangi domain'ler var anında belli
|
||||
|
||||
✅ **Debug**
|
||||
- CORS 403 hatalarını anında anlarsınız
|
||||
- Eksik origin'leri hemen tespit edebilirsiniz
|
||||
|
||||
✅ **Audit**
|
||||
- Server startup loglarında CORS config kayıtlı kalır
|
||||
- Production'da hangi origin'lerin kullanıldığı belli
|
||||
|
||||
✅ **Security**
|
||||
- Blacklist'teki tehdit origin'leri görebilirsiniz
|
||||
- Beklenmeyen origin'leri tespit edebilirsiniz
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Production'da
|
||||
|
||||
### Beklenen Output:
|
||||
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
CORS Configuration (Database-Driven)
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
✅ WHITELIST (Allowed Origins):
|
||||
● 1. https://nextgo.beyhano.net.tr
|
||||
└─ Production Next.js frontend
|
||||
● 2. https://app.beyhano.net.tr
|
||||
└─ Production React app
|
||||
|
||||
🚫 BLACKLIST (Blocked Origins):
|
||||
✅ No origins blacklisted.
|
||||
|
||||
Legend: ● Active | ○ Inactive
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
|
||||
### İlk Deploy (Whitelist Boş):
|
||||
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
CORS Configuration (Database-Driven)
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
✅ WHITELIST (Allowed Origins):
|
||||
⚠️ No origins whitelisted! Add origins via API.
|
||||
|
||||
🚫 BLACKLIST (Blocked Origins):
|
||||
✅ No origins blacklisted.
|
||||
|
||||
Legend: ● Active | ○ Inactive
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
|
||||
**Hemen origin ekleyin:**
|
||||
```bash
|
||||
./fix-cors-403.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 Notlar
|
||||
|
||||
- ✅ **Database-driven:** Her server restart'ta database'den okunur
|
||||
- ✅ **Real-time:** Origin ekleme/silme sonrası restart gerekir
|
||||
- ✅ **Color-coded:** Aktif/Pasif origin'ler farklı renkte
|
||||
- ✅ **Descriptive:** Her origin için açıklama gösterilir
|
||||
- ✅ **Error handling:** Database bağlantı hataları gösterilir
|
||||
|
||||
---
|
||||
|
||||
## ✅ Sonuç
|
||||
|
||||
**Server startup'ta CORS configuration artık görünür!**
|
||||
|
||||
- Whitelist ve blacklist otomatik gösterilir
|
||||
- Renk kodları ile kolay okunur
|
||||
- Production'da hangi origin'lerin aktif olduğu belli
|
||||
- Debug ve troubleshooting kolaylaşır
|
||||
|
||||
**Tüm değişiklikler `main.go` dosyasında!**
|
||||
Reference in New Issue
Block a user