Merhaba, php'de bir scriptim var under attack mode aktif ediyor. buna ek olarak under attack mod aktif edildiğinde istediğim bir kural da aktif edecek/deaktif edecek scripte ihtiyacım var.
Bütçe 200 TL teklifleri bekliyorum.
Cloudflare PHP API ile waf custom rule Script
7
●254
- 23-12-2024, 18:14:03
<?php // Cloudflare API isteği yapmak için bir yardımcı fonksiyon function cloudflare_api_istegi($url, $yontem = 'GET', $veri = null) { // API anahtarınızı ve diğer bilgilerinizi buraya girin $apiAnahtari = 'CLOUDFLARE_API_ANAHTARINIZ'; $email = 'CLOUDFLARE_HESAP_EMAILINIZ'; $zoneId = 'CLOUDFLARE_ZONE_ID'; // API isteği için gerekli başlıklar $basliklar = [ "X-Auth-Email: $email", "X-Auth-Key: $apiAnahtari", "Content-Type: application/json" ]; // cURL ile API isteği gönderiyoruz $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $yontem); // GET, POST, PATCH, vb. curl_setopt($curl, CURLOPT_HTTPHEADER, $basliklar); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Eğer veri varsa, bunu JSON formatında gönderiyoruz if ($veri) { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($veri)); } $cevap = curl_exec($curl); $httpKodu = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); // API cevabını ve HTTP durum kodunu döndürüyoruz return [ 'cevap' => json_decode($cevap, true), 'httpKodu' => $httpKodu ]; } // Under Attack Mode'u aktif/deaktif etmek için bir fonksiyon function under_attack_modunu_ayarla($aktifMi) { global $zoneId; // Cloudflare Security Level ayarını değiştiriyoruz $url = "https://api.cloudflare.com/client/v4/zones/$zoneId/settings/security_level"; $veri = [ 'value' => $aktifMi ? 'under_attack' : 'medium' // Aktifse "under_attack", değilse "medium" ]; return cloudflare_api_istegi($url, 'PATCH', $veri); } // Belirli bir firewall kuralını aktif/deaktif etmek için bir fonksiyon function firewall_kuralini_ayarla($kuralId, $aktifMi) { global $zoneId; // Firewall Rule ayarını değiştiriyoruz $url = "https://api.cloudflare.com/client/v4/zones/$zoneId/firewall/rules/$kuralId"; $veri = [ 'paused' => !$aktifMi // Aktifse false, değilse true ]; return cloudflare_api_istegi($url, 'PUT', $veri); } // Kullanıcıdan gelen talebe göre işlemleri gerçekleştiriyoruz $underAttackAktifMi = true; // Under Attack Mode aktif mi? $firewallKuralId = 'FIREWALL_KURAL_ID'; // Değiştirmek istediğiniz firewall kuralının ID'si // Under Attack Mode'u ayarla $underAttackSonuc = under_attack_modunu_ayarla($underAttackAktifMi); if ($underAttackSonuc['httpKodu'] === 200) { echo "Under Attack Mode başarıyla " . ($underAttackAktifMi ? "aktif" : "deaktif") . " edildi.\n"; } else { echo "Under Attack Mode ayarlanırken hata oluştu.\n"; } // Firewall kuralını ayarla $firewallSonuc = firewall_kuralini_ayarla($firewallKuralId, $underAttackAktifMi); if ($firewallSonuc['httpKodu'] === 200) { echo "Firewall kuralı başarıyla " . ($underAttackAktifMi ? "aktif" : "deaktif") . " edildi.\n"; } else { echo "Firewall kuralı ayarlanırken hata oluştu.\n"; } - 23-12-2024, 19:03:57Takdire şayan hareketinizden ötürü teşekkürlerimi sunarım. Doğru RULE_ID'yi nasıl elde edebilirim bilginiz var mı?onurCC adlı üyeden alıntı: mesajı görüntüle
- 23-12-2024, 19:07:58lonescary adlı üyeden alıntı: mesajı görüntüle
function firewall_kurallari_listele() { global $zoneId; // API uç noktası $url = "https://api.cloudflare.com/client/v4/zones/$zoneId/firewall/rules"; // API isteği yap ve yanıtı döndür return cloudflare_api_istegi($url, 'GET'); } // Firewall kurallarını al $kurallarSonuc = firewall_kurallari_listele(); if ($kurallarSonuc['httpKodu'] === 200) { echo "Mevcut firewall kuralları:\n"; foreach ($kurallarSonuc['cevap']['result'] as $kural) { echo "Kural ID: " . $kural['id'] . "\n"; echo "Kural Adı: " . $kural['description'] . "\n"; echo "Durum: " . ($kural['paused'] ? "Pasif" : "Aktif") . "\n"; echo "--------------------------\n"; } } else { echo "Firewall kurallarını alırken hata oluştu.\n"; }muhtemelen sonuc alacaksin. - 23-12-2024, 19:32:11onurCC adlı üyeden alıntı: mesajı görüntüle
Firewall kurallarını alırken hata oluştu. Under Attack Mode ayarlanırken hata oluştu. Firewall kuralı ayarlanırken hata oluştu. - 23-12-2024, 20:00:53lonescary adlı üyeden alıntı: mesajı görüntüle
// API isteği fonksiyonunu güncelleyin function cloudflare_api_istegi($url, $yontem = 'GET', $veri = null) { $apiAnahtari = 'CLOUDFLARE_API_ANAHTARINIZ'; $email = 'CLOUDFLARE_HESAP_EMAILINIZ'; $zoneId = 'CLOUDFLARE_ZONE_ID'; $basliklar = [ "X-Auth-Email: $email", "X-Auth-Key: $apiAnahtari", "Content-Type: application/json" ]; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $yontem); curl_setopt($curl, CURLOPT_HTTPHEADER, $basliklar); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); if ($veri) { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($veri)); } $cevap = curl_exec($curl); $httpKodu = curl_getinfo($curl, CURLINFO_HTTP_CODE); // Hata kontrolü ekleyin if (curl_errno($curl)) { echo "cURL Hatası: " . curl_error($curl) . "\n"; } curl_close($curl); // Yanıt ve durum kodunu döndür echo "HTTP Kodu: $httpKodu\n"; echo "API Yanıtı: " . $cevap . "\n"; return [ 'cevap' => json_decode($cevap, true), 'httpKodu' => $httpKodu ]; }boyle dener misin, ne hata aliyosun bakalim. - 23-12-2024, 20:04:46onurCC adlı üyeden alıntı: mesajı görüntüle
- 200: Başarılı.
- 403: Yetki sorunu (API anahtarı veya Zone ID yanlış).
- 404: Yanlış URL veya Zone ID.
- 429: Çok fazla istek (API limiti).
- 23-12-2024, 20:20:03onurCC adlı üyeden alıntı: mesajı görüntüle
yanıtın tümünü göstereyim,
HTTP Kodu: 400 API Yanıtı: {"success":false,"errors":[{"code":7003,"message":"Could not route to \/zones\/settings\/security_level, perhaps your object identifier is invalid?"},{"code":7000,"message":"No route for that URI"}],"messages":[],"result":null} Under Attack Mode ayarlanırken hata oluştu. HTTP Kodu: 404 API Yanıtı: {"result":null,"success":false,"errors":[{"code":7003,"message":"Could not route to /client/v4/zones/firewall/rules/df22432c585c4512971843a1c6ecf814, perhaps your object identifier is invalid?"}],"messages":[]} Firewall kuralı ayarlanırken hata oluştu.