PHP Classes

File: crw_hunter.php

Recommend this page to a friend!
  Classes of Mr.shaggyy83   My Wordpress Crawler Plugin   crw_hunter.php   Download  
File: crw_hunter.php
Role: Example script
Content type: text/plain
Description: Example script
Class: My Wordpress Crawler Plugin
Block bots that do not benefit WordPress sites
Author: By
Last change:
Date: 8 months ago
Size: 7,225 bytes
 

Contents

Class file image Download
<?php
/**
Plugin Name: crawler-hunter
Tags: bad bots,block,ban,control bots,spiders,security
Requires at least: 3.6
Description:Bots and web crawlers coming to your site check the content of the Full user agent string and block the ones other than the white list.
Tested up to: 6.2.2
Requires PHP: 5.6
Version: 1.1
Stable tag: 1.1
License: GPL2
**/
require_once __DIR__ . '/crw_function.php';
require_once
__DIR__ . '/crw_ip.php';

require_once
__DIR__ . '/crw_bot_table.php';
require_once
__DIR__ . '/crw_ip_table.php';


if ( !
defined( 'ABSPATH' ) ) exit;




  function
crawler_hunter_admin_menu_option()
  {
   
add_menu_page('Crawler Hunter','crawler-hunter','manage_options','crawler-hunter-admin-menu','crawler_hunter_scripts_page','',200);
add_submenu_page('crawler-hunter-admin-menu', __('crawler-hunter-ip','menu-test'), __('crawler-hunter-ip','menu-test'), 'manage_options', 'crw_ip.php', 'crawlers_ip_monitor');


  }

 
add_action('admin_menu','crawler_hunter_admin_menu_option');

 
  function
crawler_hunter_scripts_page()
  {

   


   
?>




<?php


    $table
= new crw_bot_table();
   
$table->prepare_items();



?>

     <div class="">
      <h2></h2>
      <form method="post" action="">
   <?php wp_nonce_field('crwhunter-nonce'); ?>
<h1>
Add Bot Name To Whitelist</h1><br>
 <h4><b>Examples: google,bing</b></h4>
<input type="text" id="crw_bot_name" name="crw_bot_name">
                    <h3>WHITELISTED</h3><br>

                        
                   

 
<?php








?>

    <input type="submit" name="crw_add" class="button button-primary" value="Add Bot">
      </form>
    </div>
<div class="wrap">

    <div class="icon32 icon32-posts-post" id="icon-edit"><br></div>

    <form id="persons-table" method="GET">
        <input type="hidden" name="page" value="<?php echo esc_attr($_REQUEST['page']) ?>"/>
        <?php $table->display() ?>
</form>



<br><br>
<div class="wrap">
<h2><center>Blocked Bot Logs Monitor </center></h2>

<?php

global $wpdb;
  
$table_name = $wpdb->prefix . 'crawler_hunter';

      
       
$qry="SELECT
    *
   
FROM
   
$table_name WHERE list_status=1
"
;
       
$result=$wpdb->get_results($qry, object);
       
//print_r($result);
        //if($result):


        
echo '<div class="container">';

         echo
' <table id="crw_demo_datatable" cellpadding="2" cellspacing="2" border="4" width="100%" >
    <thead>
      <tr>
        <th>Bot Name</th>
    <th>Last Ban Time</th>
    <th>Total Ban</th>
      
       
       
       
    </tr>
    </thead>'
;

   
 
 
'<tbody>';
            foreach(
$result as $row){
       
        echo
'<td>' . esc_attr($row->bot_name) ."</td>";
      echo
'<td>' . esc_attr($row->access_time) ."</td>";

     echo
'<td>' . esc_attr($row->total_access) ."</td>";

          echo
"</tr>";
       
      }
              
        
          echo
' </tbody>
  </table>
</div>'
;


?>



</div>


</div>

 

    <?php
 
}


  if ( !
function_exists( 'crw_manuel_adding' ) ) {
function
crw_manuel_adding(){

 
$crw_all_func = new crw_all_func;

  if (isset(
$_POST['crw_add'] ) && $crw_bot_name=$_POST['crw_bot_name'] && wp_verify_nonce($_POST['_wpnonce'], 'crwhunter-nonce')) {
   
# code...
 
$crw_new_bot_name=sanitize_text_field($_POST['crw_bot_name']);
  
$crw_all_func->crw_manuel_add_bot($crw_new_bot_name);



    
//echo '<meta http-equiv="refresh" content="1">';













 
}




   else if (isset(
$_POST['crw_add_ip'] ) && $crw_ip_addr=$_POST['ip_addr'] && wp_verify_nonce($_POST['_wpnonce'], 'crwhunter-nonce')) {
  
     
//$crw_ip_addr=$_POST['ip_addr'];
     
$crw_ip_addr_new=sanitize_text_field($crw_ip_addr=$_POST['ip_addr']);


    
$crw_all_func->crw_manuel_add_ip($crw_ip_addr_new);
   
  
   







   
}






}

}

if ( !
function_exists( 'crw_auto_detectet_bot' ) ) {
function
crw_auto_detectet_bot(){


$crw_all_func = new crw_all_func;

//$crw_browser=$_SERVER['HTTP_USER_AGENT']."\n";
 
$crw_browser_new=sanitize_text_field($_SERVER['HTTP_USER_AGENT']);
$crw_url_not_secure_plus=strpos($crw_browser_new, "+http");
 
$crw_url_secure_plus=strpos($crw_browser_new, "+https");
$crw_url_not_secure=strpos($crw_browser_new, "http");
 
$crw_url_secure=strpos($crw_browser_new, "https");
 
$crw_url_other=strpos($crw_browser_new, "compatible");
 
if (
sanitize_text_field( $_SERVER['REQUEST_METHOD']==='GET')) {
 if (
$crw_url_not_secure_plus || $crw_url_secure_plus|| $crw_url_not_secure || $crw_url_secure || $crw_url_other ) {
 
 
//$whitelisted=array();
 
$crw_whitelisted=array();
   global
$wpdb;
 
 
//$home_site=get_site_url();
 //$crw_home_site=get_site_url();


$crw_table_name=$wpdb->prefix . "crawler_hunter";

//$get_whitelisted = $wpdb->get_results($wpdb->prepare( "SELECT * FROM `wp_crawler_hunter` WHERE list_status=0" ));
 
$crw_get_whitelisted = $wpdb->get_results($wpdb->prepare( "SELECT * FROM `$crw_table_name` WHERE list_status=0" ));



        foreach (
$crw_get_whitelisted as $crw_get_whitelisted){

         
// $get_whitelisted->bot_name;
         
$crw_get_whitelisted->bot_name;
         
// $whitelisted[]=$get_whitelisted->bot_name;
          
$crw_whitelisted[]=$crw_get_whitelisted->bot_name;
  


}

//$whitelisted[]=$home_site;
//$crw_whitelisted[]=$home_site;
 



  
foreach ($crw_whitelisted as $check_crawler) {
 
# code...


 
if(strpos($crw_browser_new, $check_crawler) !== false){
   
//echo "Found!";
   
$crawler_find=$check_crawler;
}
}

     if (!isset(
$crawler_find)) {
   

  
$crw_all_func-> crawler_insert_block_url($crw_browser_new);

        
//header($_SERVER["SERVER_PROTOCOL"]." 403 Access Denied", true, 403);
   //header(sanitize_text_field($_SERVER["SERVER_PROTOCOL"])." 403 Access Denied", true, 403);
  
header( 'HTTP/1.1 403 Forbidden' );
   
header( 'Status: 403 Forbidden' );
   
header( 'Connection: Close' );
  

exit();
     }


 

 


 }

 


else{


// $get_crawler_ip=$_SERVER['REMOTE_ADDR'] ;
 
  //$get_crawler_ip_new=wp_filter_nohtml_kses($_SERVER['REMOTE_ADDR']);
 
$get_crawler_ip_new=sanitize_text_field($_SERVER['REMOTE_ADDR']);

$crw_all_func->crawler_ip_check($get_crawler_ip_new);




}

}

}

}












add_action( 'wp_enqueue_scripts', 'crw_datatables_script_js', 10 );

   
  function
crw_datatables_script_js() {
 
 
wp_enqueue_script('jquery-datatable' , plugin_dir_url( __FILE__ ). 'js/jquery.dataTables.min.js', array('jquery' )); //+++
 
wp_enqueue_style( 'crw-style', plugins_url( '/css/jquery.dataTables.min.css', __FILE__ ), false, '1.0', 'all' );
//?>
<script>
  jQuery(document).ready(function() {
    jQuery('#crw_demo_datatable').dataTable({


    "order": [1, 'desc']

    });
  });
  </script>
<?php
 
}


////////////////////
   
add_action('admin_head', 'crw_datatables_script_js');
  
  






 
add_action('init','crw_manuel_adding', 10,2);
  
add_action('init','crw_auto_detectet_bot', 10,4);
 

 
 
$crw_all_func =new crw_all_func;
 
 
// register_activation_hook( __FILE__, 'crw_all_func::crw_create_db' );
  
register_activation_hook( __FILE__, array($crw_all_func, 'crw_create_db') );
  
register_deactivation_hook(__FILE__, array($crw_all_func, 'crw_delete_records'));