1.4 KiB
1.4 KiB
ProxyEngine
Özet: HTTP isteklerini upstream backend'e ileten merkezi proxy motoru (internal/proxy/proxy.go:24). Tüm header'ları korur, hassas header'ları log'da maskeler, hop-by-hop header'ları otomatik atlar.
Kütüphaneler: Go net/http, context, io
Bağlantılar: OpenAIHandler, AnthropicHandler, Index
Struct
type ForwardResult struct {
StatusCode int
Body []byte
Headers http.Header
}
Fonksiyonlar
Forward(ctx, method, targetURL, headers, body, timeoutSec) *ForwardResult
- HTTP isteğini hedef URL'ye iletir
- Context üzerinden timeout yönetimi (
time.Duration(timeoutSec) * time.Second) - Hop-by-hop header'ları atlar:
Connection,TE,Trailers,Transfer-Encoding,Upgrade - Body'yi log için okur, sonra tekrar sarar
ForwardResult{StatusCode, Body, Headers}döndürür
MaskSensitiveHeaders(headers) http.Header
- Header'ları clone'lar
Authorization→Bearer [REDACTED]X-Api-Key→[REDACTED]- Sadece loglama amaçlı kullanılır; upstream'e orijinal header gider
truncateForLog(s, maxLen) string
- Uzun string'leri
maxLen(2000) karakterde kırpar,...[TRUNCATED]ekler
Güvenlik
- Hassas header'lar upstream'e olduğu gibi iletilir ama log'da maskelenir
- Hop-by-hop header'lar otomatik atlanır (proxy zincirini bozmamak için)
- Sensitive header masking sadece log çıktısı içindir