Conditions
Conditions Nedir?
Conditions, TR7 Load Balancer üzerinden geçen HTTP ve L7 TCP trafiğinin belirli özelliklerini kontrol eden, yeniden kullanılabilir karar mekanizmalarıdır.
Koşullar, modern Load Balancer ve Application Delivery Controller (ADC) sistemlerinin temel yapı taşlarından biridir. Geleneksel sistemlerdeki script tabanlı koşul mantığının TR7'deki GUI-tabanlı ve no-code/low-code karşılığıdır. İşlevsel olarak, "bir durumun sağlanıp sağlanmadığını" kontrol eder ve Aksiyonların ne zaman çalışacağını veya trafik dağılımının nasıl yapılacağını belirler.
Her Koşul, bir veya birden fazla Aksiyon veya vService üzerinde kullanılarak trafiğin dinamik olarak yönetilmesini sağlar. Koşullar, AND/OR mantığı ile birleştirilerek karmaşık karar ağaçları oluşturmanıza olanak tanır.
Neler Kontrol Edilebilir?
- İstemci Bilgileri: Kaynak IP adresi, ülke, tarayıcı, mobil platform, bot türü
- İstek Özellikleri: Path, query parametresi, HTTP method, header değerleri, cookie, request body
- Sunucu Durumu: Sağlıklı kurum servisi sayısı, response time, status code
- Güvenlik: IP Intelligence, WAF saldırı imzası, blacklist kontrolü
- Oturum ve Kimlik: Kullanıcı doğrulaması, AGS oturum bilgisi, karantina durumu
- Network: Hedef IP/Port, SSL cipher/versiyon, SNI bilgisi
Koşulların Çalışma Prensibi
TR7 Koşulları, trafiğin yaşam döngüsünde gerçek zamanlı olarak değerlendirilir ve sonuç olarak true (doğru) veya false (yanlış) döner.
Koşul Değerlendirme Sırası
- Koşullar, Aksiyon çalıştırılmadan önce değerlendirilir.
- Bir Aksiyon'da birden fazla koşul varsa, AND/OR operatörlerine göre birleştirilir:
- AND (◆): Tüm koşullar true olmalı → Aksiyon çalışır.
- OR (◇): En az bir koşul true olmalı → Aksiyon çalışır.
- Koşul false dönerse, ilgili Aksiyon atlanır ve bir sonraki Aksiyon değerlendirilir.
Koşul Eşleştirme Kriterleri
Her koşul tipi için farklı eşleştirme operatörleri kullanılır.
Metin Tabanlı Koşullar (Path, Header, Cookie, vb.):
| Operatör | Anlamı | Örnek |
|---|---|---|
| Exact Match | Birebir tam eşleşme | /admin = /admin, /Admin ≠ /admin |
| Start | İle başlar | /api/v1/users START /api |
| End | İle biter | image.jpg END .jpg |
| Includes | İçerir | /user/123 INCLUDES /user |
| Regex | Regular expression (düzenli ifade) | /user/\d+ → /user/123 eşleşir |
| Is Present | Değere bakılmaksızın öğenin var olup olmadığı; yalnızca HTTP Header, Query Parameter, User/Server Cookie ve RDP Cookie koşullarında sunulur | X-Debug başlığı istekte varsa eşleşir |
Sayısal Koşullar (Port, Size, Count, vb.):
| Operatör | Anlamı |
|---|---|
| < LESS THAN | Küçüktür |
| = EQUALS TO | Eşittir |
| > GREATER THAN | Büyüktür |
| RANGE | Aralık |
Büyük/Küçük Harf Duyarlılığı (Case Sensitivity)
- Default olarak koşullar case-sensitive'dir (
/Admin≠/admin). - Case-insensitive seçeneği ile büyük/küçük harf farkı gözetilmez.
Koşulların Aksiyonlarla İlişkisi
- Koşulsuz Aksiyon: Tüm trafik üzerinde her zaman çalışır.
- Koşullu Aksiyon: Sadece koşullar sağlandığında çalışır.
Koşulların Yeniden Kullanılabilirliği
- Bir koşul, birden fazla Aksiyon veya vService'de kullanılabilir.
- Koşulda yapılan değişiklik, tüm ilişkili Aksiyon/vService'lere yansır.
- "Used in" özelliği ile koşulun nerede kullanıldığı takip edilir.
Otomatik NOT (Değili) Koşulu Oluşturma
Tanımlanan her koşul, kullanım yerlerindeki seçim listelerinde iki biçimde sunulur: koşulun kendisi ve değili (NOT). Ayrı bir NOT nesnesi oluşturulmaz; değil, koşulun kullanıldığı yerde tutulan bir işarettir; bu nedenle Conditions listesinde yalnızca koşulun kendisi görünür.
Nasıl Çalışır:
- Yeni bir koşul eklenir:
SourceIP_OfficeNetwork = 192.168.1.0/24 - Kullanım yerlerindeki seçim listelerinde iki seçenek belirir:
SourceIP_OfficeNetworkveNOT(SourceIP_OfficeNetwork) - NOT biçimi "Conditions" listesinde ayrı bir kayıt olarak görünmez.
- Aksiyon veya Conditional Backend Services eklerken dropdown'da seçilebilir.
Kullanım Alanları:
1. Aksiyon Eklerken:
- Load Balancer → Actions → Add/Edit
- Conditions dropdown'ında hem orijinal hem NOT versiyonu görünür.
- Örnek:
Path = /adminveNOT(Path = /admin)her ikisi de seçilebilir.
2. Conditional Backend Services:
- vService → Conditional Backend Services seçimi yapılırken,
- Kurum Servislerini koşula göre yönlendirirken NOT versiyonu kullanılabilir.
- Örnek:
/admindışındaki tüm istekleri Backend-B'ye gönder →NOT(Path = /admin)kullan.
- Manuel NOT koşulu oluşturmaya gerek yok: Sistem otomatik halleder.
- Tek yerden yönetim: Orijinal koşulu güncellerseniz, NOT versiyonu da otomatik güncellenir.
- Daha az konfigürasyon karmaşası: Liste sadece pozitif koşulları gösterir, negatif versiyonlar arka planda hazır.
- Esnek mantık (flexible logic): Hem "eşleşiyor" hem "eşleşmiyor" senaryoları kolayca uygulanabilir.
TIP
Örnek: Ofis IP Whitelist Senaryosu
Tanımlanan Koşul: SourceIP_OfficeNetwork = 192.168.1.0/24
Aksiyon: Ofis IP'leri dışındaki tüm isteklere güvenlik kontrolü.
- Koşul:
NOT(SourceIP_OfficeNetwork)→ CAPTCHA göster + Rate limiting uygula gibi.
Koşul Tipleri ve Kategorileri
TR7, farklı trafik senaryolarına yönelik 40'tan fazla koşul tipi sunar. Bu koşullar, işlevlerine göre aşağıdaki kategorilere ayrılabilir.
1. İstemci ve Cihaz Bilgileri
- Source IP: İstemcinin kaynak IP adresi veya CIDR bloğu kontrolü. Whitelist/blacklist, coğrafi kısıtlama için kullanılır.
- Blacklist IP Category: IP Intelligence ile IP reputation kontrolü. Malicious, Proxy, Tor, Spam gibi kategoriler.
- Browser: Chrome, Firefox, Safari, IE gibi tarayıcı tipi tespiti.
- Mobile Platform: iOS, Android, Windows Phone gibi mobil platform kontrolü.
- Bot Type: Search engine bot, malicious bot, good bot ayrımı.
2. İstek Özellikleri (Request)
- Path: URL path kontrolü (
/admin,/api/v1/users). - Path + Query: Path ve query string birlikte kontrolü.
- Query Parameter: Query string parametresi değeri kontrolü (
?user=123). - URL: Tam URL kontrolü (protocol + host + port + path + query).
- HTTP Header: HTTP header (request/response) değeri kontrolü.
- HTTP Request Body: POST/PUT request body içeriği kontrolü.
- User Cookie Name: İstemciden gelen cookie adı/değeri kontrolü.
- Request Size (bytes): HTTP request body boyutu kontrolü.
3. Yanıt Özellikleri (Response)
- Status Code: Kurum Servisinden dönen HTTP status code (200, 404, 500, vb.).
- HTTP Response Body: Response body içeriği kontrolü.
- Response Size (bytes): HTTP response body boyutu kontrolü.
- Server Cookie Name: Kurum Servisinden dönen Set-Cookie header kontrolü.
- Response Based URL List: Response içeriğinde belirli URL'lerin varlığı kontrolü.
4. Kurum Servisi ve Sunucu Durumu
- Number of Active Servers: UP durumundaki Kurum Servisi sayısı.
- Server Response Time: Kurum Servisi response time kontrolü (ms).
5. Trafik Yoğunluğu ve Rate Kontrolü
- Frontend Connection: Toplam aktif TCP bağlantı sayısı.
- Frontend Number of HTTP Requests /s: Belirli sürede gelen HTTP istek sayısı.
- Frontend Number of New Sessions /s: Yeni TCP session rate kontrolü.
6. Güvenlik ve WAF
- WAF Attack ID: Spesifik WAF attack signature ID kontrolü.
- WAF Attack Group: WAF attack category kontrolü (SQL Injection, XSS, vb.).
- Quarantine Condition: Kullanıcının karantina durumu kontrolü.
7. SSL/TLS
- SSL Cipher: TLS handshake'te kullanılan cipher suite.
- SSL Version: TLS versiyonu (TLS 1.2, TLS 1.3).
- SSL SNI Info: SSL Termination öncesi SNI header kontrolü.
8. Network
- Destination IP: Trafik hedef IP adresi.
- Destination Port: Trafik hedef port numarası.
- Network Type Category: İstemcinin ağ tipi kategorisine göre değerlendirme.
- Network Type Group: İstemcinin ağ tipi grubuna göre değerlendirme.
9. Kimlik Doğrulama ve Oturum
- User Authentication: TR7 seviyesinde authenticate olmuş mu?
- AGS Condition: AGS - AAM (Application Access Management) oturum bilgisi kontrolü.
- RDP Cookie: RDP cookie kontrolü.
10. Özel ve Gelişmiş
- Dynamic Condition: Smart Variable ile dinamik koşul oluşturma.
- Dynamic List: Smart Variable'ın bir listede olup olmadığını kontrol.
- Tracking Condition: Advanced Traffic Inspection aksiyonu ile loglanan verilere göre koşul.
11. Diğer
Koşulların Avantajları
TR7 Koşulları, geleneksel script tabanlı trafik kontrol yöntemlerine göre birçok operasyonel ve teknik avantaj sunar.
Kod Yazmaya Gerek Yok (No-Code/Low-Code)
- Koşullar tamamen GUI tabanlı bir arayüz üzerinden oluşturulur.
- Herhangi bir programlama dili veya script yazma bilgisine gerek yoktur.
- Karmaşık if/else logic'i basit dropdown ve input field'larla yapılır.
- Syntax hataları, mantık hataları veya runtime crash riski ortadan kalkar.
Merkezi ve Tek Noktadan Yönetim
- Bir kez oluşturulan koşul, birden fazla Aksiyon ve vService üzerinde yeniden kullanılabilir.
- Koşulda yapılan bir değişiklik, o koşulu kullanan tüm Aksiyon/vService'lere otomatik olarak yansır.
- Koşulun hangi Aksiyon/vService'lerde kullanıldığı "Used in" özelliği ile kolayca izlenir.
- Merkezi yönetim, tutarsızlık riskini minimize eder.
Güçlü ve Esnek Mantık Yapısı
- AND/OR operatörleri ile çok katmanlı koşul zincirleri kurulabilir.
- Karmaşık business logic'i basit GUI ile ifade edilebilir.
- Örnek: "(IP A'dan geliyorsa VEYA IP B'den geliyorsa) VE (path /admin ise) VE (saat 18:00-09:00 arasındaysa)"
Smart Variables ile Dinamik Kontrol
- Koşullar içinde Variables kullanılarak dinamik değerlendirmeler yapılır.
- İstemci IP, Host, Path, Header, Cookie, Timestamp gibi 50+ veri noktasına erişim.
- Runtime'da dinamik değerler üretilir ve koşullarda kullanılır.
Geniş Eşleştirme Seçenekleri
- Her koşul tipi için optimize edilmiş operatörler.
- Case-sensitive / Case-insensitive seçenekleri.
- CIDR bloğu, regex desteği.
- Numeric, string, IP, list-based matching.
Test ve Debug Kolaylığı
- Debug Mode ile koşul eşleşmelerini gerçek zamanlı izleme.
- HTTP/TCP loglarında hangi koşulun true/false döndüğünü görme.
- Production'a geçmeden önce test ortamında doğrulama.
Yüksek Performans ve Ölçeklenebilirlik
- Koşullar, yüksek throughput ve düşük latency için optimize edilmiştir.
- Büyük ölçekli deploymentlarda (yüksek trafikli web siteleri) verimli çalışır.
- Minimal sistem kaynağı tüketimi ile maksimum işlem kapasitesi sağlar.
Operasyonel En İyi Uygulamalar
TR7 Koşullarını production ortamlarında verimli ve güvenli kullanmak için aşağıdaki en iyi uygulamaları takip edin.
- Açıklayıcı isimler kullanın. Koşulun ne kontrol ettiğini net bir şekilde belirtin;
Condition1,Testgibi anlamsız isimlerden kaçının. - İsimlendirme standardı oluşturun. Tutarlılık için
[KontrolEdilen]_[Değer]_[Amaç]gibi bir format belirleyin ve ekipçe uygulayın. - Doğru operatörü seçin. Path kontrolü için
START, tam eşleşme içinEXACT MATCH, içerik kontrolü içinINCLUDESkullanın; her birinin performans maliyeti farklıdır. - Case-sensitivity'ye dikkat edin. Default case-sensitive olduğundan kullanıcı input'u içeren koşullarda case-insensitive seçeneğini değerlendirin.
- CIDR bloklarını tercih edin. Birden fazla tekil IP yerine
192.168.1.0/24gibi CIDR blokları daha performanslıdır. - Regex'i minimize edin. Regex en yavaş ve en yüksek CPU maliyetli eşleştirme yöntemidir; mümkünse
START/END/INCLUDEStercih edin. - AND/OR karmaşıklığını sınırlayın. Çok fazla AND/OR karışımından kaçının; karmaşık logic'i birden fazla Aksiyon'a bölün.
- Önce test ortamında deneyin ve "Used in" kontrolü yapın. Koşulu değiştirmeden önce hangi Aksiyon/vService'lerde kullanıldığını mutlaka kontrol edin.
İsimlendirme Kuralları (örneklerle)
Açıklayıcı isimler kullanın: Koşulun ne kontrol ettiğini net bir şekilde belirtin.
- ✅ İyi örnekler:
Check_SourceIP_OfficeNetwork,Path_AdminPanel,WAF_SQLInjection_Block - ❌ Kötü örnekler:
Condition1,Test,New_Cond
İsimlendirme standardı oluşturun: Tutarlılık için bir format belirleyin.
- Format:
[KontrolEdilen]_[Değer]_[Amaç] - Örnek:
IP_Blacklist_Security,Path_API_RateLimit,Browser_IE_Compatibility
Kullanım amacını belirtin: Koşulun nerede/nasıl kullanılacağını isimde ifade edin.
- Örnek:
ForAdminPath_IPWhitelist,ForAPI_BandwidthLimit
Operatör Seçimi ve Eşleştirme Stratejileri
Doğru operatörü kullanın:
- Path kontrolü:
STARTdaha verimli (örnek:/api/v1/users→/apiile başlıyor mu?) - Tam eşleşme gerekiyorsa:
EXACT MATCH. - İçerik kontrolü:
INCLUDES(ama performans maliyeti yüksek). - Regex: Sadece gerektiğinde (en yüksek CPU maliyeti).
Case-sensitivity'ye dikkat edin:
- Default case-sensitive →
/Admin≠/admin - Kullanıcı input'u varsa case-insensitive kullanın.
CIDR blokları tercih edin:
- Birden fazla IP yerine CIDR:
192.168.1.0/24(256 IP) - IP listesinden daha performanslı.
Regex Kullanımında Dikkat
Regex'i minimize edin: Regex en yavaş matching yöntemidir.
- ✅ Tercih:
START,END,INCLUDES - ❌ Kaçın: Karmaşık regex pattern'leri.
Regex'i optimize edin:
- Gereksiz capturing group'ları kaldırın:
(pattern)yerinepattern - Anchor kullanın, gereksiz joker eklemeyin:
/api/.*yerine^/api/
Smart Variables ile Dikkat Edilecekler
Smart Variable syntax'ını doğru kullanın:
- Köşeli parantez:
[İstemci IP adresi] - Büyük/küçük harf önemli.
- Dökümanı kontrol et.
Runtime değerlerini bilin:
[Host]port içerebilir:example.com:443[Path]query string içermez:/api/users(query ayrı)
Production Deployment Kontrol Listesi
- Önce test ortamında deneyin: Koşul mantığını staging'de doğrulayın.
- "Used in" kontrolü yapın: Koşulu değiştirmeden önce hangi Aksiyon/vService'lerde kullanıldığını kontrol edin.
- Incremental test:
- Koşulu basit tut, test et.
- Karmaşıklaştır, tekrar test et.
- Rollback planınız olsun:
- Önceki konfigürasyonu not alın.
Yaygın Kullanım Senaryoları
Aşağıda, TR7 Koşullarının canlı ortamlarda en sık kullanıldığı senaryolar yer almaktadır.
Güvenlik Senaryoları
Ofis IP Whitelist Kontrolü
Yönetim paneline sadece ofis ağından erişime izin ver.
Kötü Amaçlı IP Engelleme
IP Intelligence ile bilinen kötü IP'leri engelle.
- Koşul: Blacklist IP Category =
Malicious, Proxy, Tor - Aksiyon: Block veya Quarantine
- Sonuç: Şüpheli IP'ler otomatik engellenir.
Path Bazlı Kontroller
API Endpoint Rate Limiting
/api/ ile başlayan isteklere rate limiting uygula.
- Koşul: Path START
/api/ - Aksiyon: Bandwidth Limitation
- Sonuç: API abuse'i önlenir.
Admin Paneli Koruma
/admin ve /wp-admin path'lerine özel güvenlik katmanı.
- Koşul: Path START
/adminOR/wp-admin - Aksiyon: Advanced Captcha
- Sonuç: Çift katmanlı güvenlik.
Browser ve Cihaz Bazlı Kontroller
Internet Explorer Uyarısı
Eski IE kullanıcılarına modern tarayıcı uyarısı göster.
- Koşul: Browser =
Internet Explorer - Aksiyon: Show Content → Tarayıcı güncelleme sayfası
- Sonuç: IE kullanıcıları bilgilendirilir.
Mobil Kullanıcı Yönlendirme
Mobil cihazlardan gelenleri mobil versiyona yönlendir.
- Koşul: Mobile Platform =
iOS, Android - Aksiyon: Set Path →
/mobile/app - Sonuç: Mobil deneyim optimize edilir.
Kurum Servisi Durumu Bazlı Kontroller
Tüm Kurum Servisleri Down
Hiç sağlıklı kurum servisi kalmadığında bakım sayfası göster.
- Koşul: Number of Active Servers =
0 - Aksiyon: Show Content → "Servis geçici olarak kullanılamıyor"
- Sonuç: Kullanıcı dostu hata mesajı.
Trafik Yoğunluğu Kontrolü
DDoS Koruması: Yüksek Bağlantı Sayısı
Aşırı bağlantı sayısında rate limiting aktif et.
- Koşul: Frontend Connection >
10000 - Aksiyon: Bandwidth Limitation + CAPTCHA
- Sonuç: DDoS etkisi minimize edilir.
Yüksek İstek Rate'i
Saniyede 1000+ istek geliyorsa sınırla.
- Koşul: Frontend Number of HTTP Requests /s >
1000/saniye - Aksiyon: Quarantine veya Block
- Sonuç: Sistem korunur.
Nasıl Eklenir?
Yeni bir Koşul, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:
- Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
- Load Balancer → Conditions → Add adımları takip edilir.
- Koşul için benzersiz ve açıklayıcı bir isim girilir. (Opsiyonel)
- Koşul tipi seçilir.
- Seçilen Koşul tipine göre ilgili değerler yapılandırılır.
Addbutonuna tıklanarak Koşul eklenir.
TIP
Hızlı arama ile sayfaya ulaşma
Menüde adım adım gezmek yerine, ekranın sol alt köşesindeki arama çubuğu kullanılarak ilgili sayfaya doğrudan ulaşılır. Arama çubuğu Windows'ta Alt + T, macOS'ta Opt + T kısayolu ile açılır; ardından aranan özelliğin adının yazılması yeterlidir.
Oluşturulan Koşul, bir veya birden fazla vService ve Aksiyon üzerinde kullanılabilir.
Koşulları Listeleme Ekranı
Load Balancer → Conditions yolu izlenerek TR7 cihazı üzerinde ekli olan tüm Koşulların listesine ulaşılır. Bu ekran üzerinde Koşul ekleme, düzenleme ve silme gibi işlemler yapılır.
Koşul Listeleme Formu
Tablo varsayılan olarak şu kolonlarla açılır:
| Kolon | Açıklama |
|---|---|
| Criteria | Koşulun kontrol ettiği kriter (ör. HTTP Header, Path, Source IP, SSL SNI Info, Destination Port); uzun etiketin tamamı hücrenin üzerine gelindiğinde görünür. |
| Name | Koşula verilen ad; ad girilmemişse -. |
| Condition Description | Koşulun okunabilir ifadesi (ör. IF HTTP Host request header is exactly www.tr7.com); ifadenin tamamı hücrenin üzerine gelindiğinde de görünür. |
Ad ve ifade iki ayrı kolondur: bir Koşula ad verilmesi, ifadesinin listede görünmesini engellemez. Varsayılan olarak gizlenen kolon bulunmaz; kolon seçicisinde bu üç kolon yer alır. Tablo açılışta sıralanmamıştır; bir kolon başlığına tıklandığında önce azalan, sonra artan sıralama uygulanır, üçüncü tıklamada sıralama kalkar.
Araç çubuğundaki öğeler soldan sağa aşağıdaki sırayla yer alır; son iki öğe (Page Information ve Page Size) tablonun altındaki bilgi şeridinde bulunur.
Columns
Tabloda hangi kolonların gösterileceği seçilir; üç kolon da varsayılan olarak açıktır. Aynı panelde kolonlar sürüklenerek yeniden sıralanır ve kolon başına hizalama seçilir; Fit rows to the page butonuyla satır yüksekliği sayfaya sığdırılır, Reset butonuyla kolon düzeni varsayılana alınır. Düzen kullanıcı bazında saklanır.
Filter
Filter butonu, listede gösterilen Koşulları belirli kriterlere göre süzmek için kullanılır; buton etkin filtre sayısını rozetle gösterir. Şeritte iki kart bulunur: Criteria ve Used in. Kart başlığında filtre adı ile değer sayısı yer alır; karta tıklandığında değerler satır sayılarıyla altında listelenir. Used in kartı Koşulun kullanıldığı vService adlarını listeler; hiçbir vService'te kullanılmayan Koşullar için Unused Entries seçeneği bulunur. Seçimler kart şeridinin altında, tablonun hemen üstünde kapatılabilir etiketler olarak görüntülenir.
Export
Export butonuna tıklanarak tablo Excel, CSV veya PDF olarak dışa aktarılır. Açılan pencerede Filename, Format ve Data Source ile dışa aktarılacak Columns belirlenir; kalan alanlar biçime göre görüntülenir: CSV'de CSV Separator, Excel'de Excel Sheet Name, PDF'te Page Orientation ve Page Size.
Add
Add butonuna tıklanarak yeni bir Koşul oluşturma formu yeni bir sekmede açılır.
Delete
Bir veya birden fazla Koşul seçilip Delete butonuna tıklandığında ilgili Koşullar silinir. Silmeden önce "Are you sure that you want to delete conditions object?" onayı istenir; birden fazla Koşul seçiliyse metin "Are you sure you want to delete N conditions objects?" olur.
WARNING
Onay penceresi Koşulun kullanım yerlerini göstermez. Silmeden önce önizleme panelindeki Used in sekmesiyle Koşulun hangi Aksiyon ve vService'lerde kullanıldığı kontrol edilmelidir.
Kullanımdaki bir Koşulun silinmesi engellenmez. Koşul; kullanıldığı Aksiyonların, cache kurallarının ve vService'lerin koşul listelerinden kalıcı olarak çıkarılır, içinde başka koşul kalmayan koşul grubu da atılır. Bütün koşulları bu şekilde silinen bir Aksiyon koşulsuz hâle gelir ve bağlı olduğu vService'in bütün trafiğine uygulanır; koşul zorunlu Aksiyon tipleri ise hiç tetiklenmez.
Edit
Edit butonuna tıklanarak seçili Koşulun düzenleme formu Edit sekmesinde açılır. Buton yalnızca tek bir Koşul seçildiğinde etkinleşir.
Search
Tablodaki tüm bilgilerde arama yapmak için kullanılır.
RegExp Search
Tabloda bulunan tüm bilgilerde düzenli ifade (RegExp) ile arama yapmak için kullanılır. Sütun bazlı arama ya da kullanım filtresi etkinken bu buton gizlenir.
Column Based Search
Tabloda bulunan bilgilerde sütun bazlı arama yapmak için kullanılır.
Usage Filter
Koşulların hangi vService'lere bağlı olduğunu filtrelemek için kullanılır; seçilen vService'te kullanılan Koşullar listelenir, hiçbir vService'te kullanılmayanlar için Unused Entries seçeneği bulunur. Filtre etkinken arama kutusunun yerini seçici alır; simgeye yeniden tıklandığında arama kutusu geri döner.
Page Information
Tanımlı toplam Koşul sayısı ile listede görüntülenen Koşul sayısına ait bilgiler yer alır: Showing N-M of T records ve seçili Koşul sayısı (N selected, seçim yokken Nothing selected). Filtre şeridinde seçim yapılmışsa aynı satıra uygulanan filtre sayısı ile gösterilen/toplam satır bilgisi eklenir.
Page Size
Sayfada görüntülenecek maksimum Koşul sayısı seçilir. Varsayılan 100; seçenekler 5, 10, 20, 50, 100, 200, 500 ve All.
Sağ Tık Menüsü
Bir satıra sağ tıklandığında iki işlemli bir menü açılır; menüde başlık satırı bulunmaz. Menü açık kaldığı sürece sağ tıklanan satır vurgulu görüntülenir; sağ tıklama listedeki seçimi değiştirmez ve önizleme panelini açmaz. İki işlem de yalnızca sağ tıklanan Koşula uygulanır ve her satırda etkindir.
| İşlem | Ne yapar |
|---|---|
| Edit | Koşulun düzenleme formunu Edit sekmesinde açar; araç çubuğundaki Edit butonunun açtığı formun aynısıdır. Koşulun düzenleme sekmesi zaten açıksa yeni sekme açılmaz, açık sekmeye geçilir. |
| Delete | Sağ tıklanan Koşulu siler; silmeden önce "Are you sure that you want to delete conditions object?" onayı istenir. Listede başka Koşullar seçili olsa da yalnızca bu Koşul silinir. Kullanımdaki bir Koşulun silinmesi engellenmez; araç çubuğundaki Delete maddesinin uyarısı burada da geçerlidir. |
Seçilen Koşulun Önizlemesi
Listede bir satıra tıklandığında ekranın sağında Koşulun önizlemesi açılır; seçili satıra yeniden tıklandığında panel kapanır. Başlıkta koşul simgesi, Koşulun adı (ad verilmemişse kısa ifadesi, ör. ↓IP = 10.10.10.0/24) ve Condition alt başlığı, sağ üstte ise tek bir işlem bulunur.
Seçilen Koşulun Önizlemesi
| İşlem | Ne yapar |
|---|---|
| Edit | Koşulun düzenleme formunu Edit sekmesinde açar. |
Panelde üç sekme bulunur; sonuncusu yalnızca Koşul bir yerde kullanılıyorsa görüntülenir:
Koşulun ayarlarını satır satır listeler (aşağıdaki tablo).
Koşul üzerindeki kullanıcı işlemlerini (ekleme, düzenleme, silme) zaman çizelgesi olarak listeler.
Koşulun kullanıldığı vService'leri ve Aksiyonları listeler. Sekme adının yanındaki rozet kullanım sayısını gösterir; Koşul hiçbir yerde kullanılmıyorsa sekme hiç görüntülenmez.
Details sekmesindeki satırlar sırasıyla aşağıdaki gibidir:
| Satır | Açıklama | Görünme koşulu |
|---|---|---|
| Name | Koşula verilen ad. | Ad girilmişse |
| Condition Description | Koşulun okunabilir ifadesi (ör. IF Source (client) IP address is 10.10.10.0/24). | Her zaman |
| Criteria | Kriterin adı; içerik tabanlı kriterlerde ve Source IP'de yanında eşleşme ya da kaynak biçimi bulunur (ör. Source IP — Manual). | Her zaman |
| Kritere özel satırlar | Kriterin değerleri (ör. Header Name, Query, Source IP, Destination IP, Browser Name, WAF Attack Signatures). | Seçilen kritere göre |
| Condition Level | Koşulun değerlendirildiği seviye. | Değer tanımlıysa (manuel ve özel liste koşulları) |
| Condition Protocol | Koşulun protokolü. | Değer tanımlıysa (manuel ve özel liste koşulları) |
"Used in" sekmesi mutlaka kontrol edilmelidir
Used in alanı, ilgili Koşulun hangi vService'ler veya Aksiyonlar üzerinde aktif olarak kullanıldığını gösterir. Bu bilgi, Koşul üzerinde yapılacak bir değişikliğin hangi servisleri etkileyeceğinin hızlı ve doğru şekilde analiz edilmesini sağlar. Özellikle canlı ortamlarda, Koşul ayarlarında yapılacak güncellemeler öncesinde olası servis etkilerinin değerlendirilmesi açısından kritik öneme sahiptir.
Sık Karşılaşılan Sorunlar ve Çözümleri
Koşullar ile çalışırken karşılaşılan bazı yaygın sorunlar ve çözüm önerileri aşağıda yer almaktadır.
WARNING
Problem 1: Koşul Eşleşmiyor
Belirti:
- Koşul doğru gibi görünüyor ama Aksiyon tetiklenmiyor.
- Bazı isteklerde çalışıyor, bazılarında çalışmıyor.
Kontrol Listesi:
✅ Case-sensitivity
- Default case-sensitive →
/Admin≠/admin - Çözüm: Case-insensitive seçeneğini aktif et.
✅ Operatör doğru mu?
- EXACT MATCH: Tam eşleşme | START: Başlar | END: Biter | INCLUDES: İçerir | REGEX: Pattern
- Çözüm: Doğru operatörü seç, test et.
✅ Smart Variable değeri beklenenden farklı
- Çözüm: Debug log'larda değeri kontrol et |
[Host]port içerebilir:example.com:443
✅ AND/OR mantığı yanlış
- AND: Tümü sağlanmalı | OR: En az biri sağlanmalı
- Çözüm: Mantığı doğrula | Test case'leri yap.
WARNING
Problem 2: Beklenmeyen Davranış
Belirti:
- Koşul farklı şekilde eşleşiyor.
- İstenen sonuç elde edilemiyor.
Kontrol Listesi:
✅ Koşul tipi doğru seçilmiş mi?
- Path ≠ Path+Query | Header ≠ Cookie | URL ≠ Path
- Çözüm: Koşul dökümanını oku.
✅ Smart Variable formatı doğru mu?
- Çözüm: Köşeli parantez kullan:
[İstemci IP adresi]| Büyük/küçük harf eşleşmeli.
✅ CIDR/IP listesi doğru mu?
- Çözüm: CIDR formatı:
192.168.1.0/24
TIP
Debug İpuçları: Adım Adım Troubleshooting
1. Debug Mode Aktif Et
- vService → Details → Debug Mode = Enabled
- Debug Mode loglarında detaylı bilgi görünür.
2. Logları İncele
- Monitor Mode → İlgili vService → Logs & Tracking → HTTP/TCP Logs
3. Koşulu Basitleştir
- Tüm AND/OR koşullarını kaldır → Sadece tek koşul test et → Hangi koşul problem çıkarıyor bul.
4. Test Client ile Kontrollü Test
- curl/Postman ile spesifik istek gönder → Header/cookie manuel ekle → Koşul eşleşmesini doğrula.
5. "Used in" Kontrolü
- Koşulun hangi Aksiyon/vService'lerde kullanıldığını kontrol et → Yanlış yerde kullanılmış olabilir.
