<?php

$ip = (int) sprintf("%u", ip2long(cleantalk_get_ip()));
$ip_str = cleantalk_get_ip();
//$ip=(int)sprintf("%u", ip2long("2.11.242.8"));
if (isset($_GET['sfw_test_ip'])) {
    $ip = (int) sprintf("%u", ip2long($_GET['sfw_test_ip']));
    $ip_str = $_GET['sfw_test_ip'];
}
global $wpdb;
$r = $wpdb->get_results("select * from `" . $wpdb->base_prefix . "cleantalk_sfw` where {$ip} & mask = network & mask;", ARRAY_A);
if (sizeof($r) > 0) {
    global $ct_options, $ct_data;
    $sfw_die_page = file_get_contents(dirname(__FILE__) . "/sfw_die_page.html");
    $sfw_die_page = str_replace("{REMOTE_ADDRESS}", $ip_str, $sfw_die_page);
    $sfw_die_page = str_replace("{REQUEST_URI}", $_SERVER['REQUEST_URI'], $sfw_die_page);
    $sfw_die_page = str_replace("{SFW_COOKIE}", md5(cleantalk_get_ip() . $ct_options['apikey']), $sfw_die_page);
    if (isset($ct_data['sfw_log'])) {
        $sfw_log = $ct_data['sfw_log'];
    } else {
        $sfw_log = array();
    }
    if (isset($sfw_log[$r[0]['network']])) {
        $sfw_log[$r[0]['network']]['block']++;
    } else {
        $sfw_log[$r[0]['network']] = array('block' => 1, 'allow' => 0);
    }
    $ct_data['sfw_log'] = $sfw_log;
    update_option('cleantalk_data', $ct_data);
    wp_die($sfw_die_page, "Blacklisted", array('response' => 403));
}
 global $ct_options, $ct_data, $pagenow;
 require_once CLEANTALK_PLUGIN_DIR . 'inc/cleantalk-common.php';
 require_once CLEANTALK_PLUGIN_DIR . 'inc/cleantalk-widget.php';
 $ct_options = ct_get_options();
 $ct_data = ct_get_data();
 if (@stripos($_SERVER['REQUEST_URI'], 'admin-ajax.php') !== false && sizeof($_POST) > 0 && isset($_GET['action']) && $_GET['action'] == 'ninja_forms_ajax_submit') {
     $_POST['action'] = 'ninja_forms_ajax_submit';
 }
 if (isset($ct_options['spam_firewall'])) {
     $value = @intval($ct_options['spam_firewall']);
 } else {
     $value = 0;
 }
 if ($value == 1 && !is_admin() && stripos($_SERVER['REQUEST_URI'], '/wp-admin/') === false || stripos($_SERVER['REQUEST_URI'], basename(admin_url('admin-ajax.php'))) != false) {
     $is_sfw_check = true;
     $ip = cleantalk_get_ip();
     for ($i = 0; $i < sizeof($ip); $i++) {
         if (isset($_COOKIE['ct_sfw_pass_key']) && $_COOKIE['ct_sfw_pass_key'] == md5($ip[$i] . $ct_options['apikey'])) {
             $is_sfw_check = false;
             if (isset($_COOKIE['ct_sfw_passed'])) {
                 if (isset($ct_data['sfw_log'])) {
                     $sfw_log = $ct_data['sfw_log'];
                 } else {
                     $sfw_log = array();
                     $sfw_log[$ip[$i]] = array();
                 }
                 $sfw_log[$ip[$i]]['allow']++;
                 $ct_data['sfw_log'] = $sfw_log;
                 update_option('cleantalk_data', $ct_data);
                 @setcookie('ct_sfw_passed', '0', 1, "/");
             }
     $value = @intval($ct_options['spam_firewall']);
 } else {
     $value = 0;
 }
 if ($value == 1 && !is_admin() && stripos($_SERVER['REQUEST_URI'], '/wp-admin/') === false) {
     $is_sfw_check = true;
     if (isset($_COOKIE['ct_sfw_pass_key']) && $_COOKIE['ct_sfw_pass_key'] == md5(cleantalk_get_ip() . $ct_options['apikey'])) {
         $is_sfw_check = false;
         if (isset($_COOKIE['ct_sfw_passed'])) {
             if (isset($ct_data['sfw_log'])) {
                 $sfw_log = $ct_data['sfw_log'];
             } else {
                 $sfw_log = array();
                 $sfw_log[cleantalk_get_ip()] = array();
             }
             $sfw_log[cleantalk_get_ip()]['allow']++;
             $ct_data['sfw_log'] = $sfw_log;
             update_option('cleantalk_data', $ct_data);
             @setcookie('ct_sfw_passed', '0', 1, "/");
         }
         //@$ct_data['sfw_log'][cleantalk_get_ip()]['all']++;
         //update_option('cleantalk_data', $ct_data);
     }
     if ($is_sfw_check) {
         //include_once("cleantalk-sfw.php");
         include_once "inc/cleantalk-sfw.class.php";
         $sfw = new CleanTalkSFW();
         $sfw->cleantalk_get_real_ip();
         $sfw->check_ip();
         if ($sfw->result) {
             $sfw->sfw_die();