• 23-12-2024, 17:36:17
    #1
    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.
  • 23-12-2024, 18:14:03
    #2
    <?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:57
    #3
    onurCC adlı üyeden alıntı: mesajı görüntüle
    <?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";
    }
    Takdire şayan hareketinizden ötürü teşekkürlerimi sunarım. Doğru RULE_ID'yi nasıl elde edebilirim bilginiz var mı?
  • 23-12-2024, 19:07:58
    #4
    lonescary adlı üyeden alıntı: mesajı görüntüle
    Takdire şayan hareketinizden ötürü teşekkürlerimi sunarım. Doğru RULE_ID'yi nasıl elde edebilirim bilginiz var mı?
    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:11
    #5
    onurCC 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.

    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:53
    #6
    lonescary 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.
    // 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:46
    #7
    onurCC 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.
    • 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:03
    #8
    onurCC 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).

    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.