WordPress.org

Plugin Directory

Changeset 557053


Ignore:
Timestamp:
06/13/12 03:52:34 (5 years ago)
Author:
iosec
Message:
 
Location:
iosec-anti-flood-security-gateway-module/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • iosec-anti-flood-security-gateway-module/trunk/iosec.php

    r557046 r557053  
    22/** 
    33 * @package IOSEC Anti Flood Security Gateway Module 
    4  * @version 1.5 
     4 * @version 1.6 
    55 */ 
    66/* 
     
    88Plugin URI: https://sourceforge.net/projects/iosec/ 
    99Description: Anti Flood Security Gateway Module 
    10 Version: 1.5 
     10Version: 1.6 
    1111Author: Gokhan Muharremoglu 
    1212Author URI: http://www.iosec.org 
     
    3737$publickey = "6Ld6fNESAAAAAIM4YzckCmfqyzFOmrrTj2Qq55Tq";    // Get a key from https://www.google.com/recaptcha/admin/create 
    3838$privatekey = "6Ld6fNESAAAAAKWYKMAypEffxoUlpW8RZ5UYGmaK";   // Get a key from https://www.google.com/recaptcha/admin/create 
    39 $zasimi     = 0.5;  //Connection Interval in seconds (e.g. 1, 0.5, 0.001, etc.). 
     39$interval       = 0.5;  //Connection Interval in seconds (e.g. 1, 0.5, 0.001, etc.). 
    4040$conection_limit = 1; //Connection count in interval value (e.g. 1, 3, 5, 100). 
    41 $proxyyasak = "";   //If you want to block proxies set value to "e" otherwise leave empty. 
    42 $myenile    = 10;   //Suspended Process Timeout value in seconds. 
    43 $yonlendirme    = "";   //If you want to redirect user after suspended process, you can enter URL here. 
     41$block_proxies  = "";   //If you want to block proxies set value to "e" otherwise leave empty. 
     42$refresh_timeout    = 10;   //Suspended Process Timeout value in seconds. 
     43$redirection    = "";   //If you want to redirect user after suspended process, you can enter URL here. 
    4444$mail_info  = "";   //Mail address to notify (admin mail). 
    4545$debug_info = "e";  //If you want to show debug info then set value to "e" otherwise leave empty. 
    4646$behind_reverse_proxy   = "";   //If your web server behind a reverse proxy, set this value to "e". 
    4747$incremental_blocking   = "e"; //If you want to use incremental blocking, set this value to "e" (default is "e"). 
     48$implicit_deny_timeout = 0;   //If you want to block every request as default for a timeout period (seconds), set this value to greater than "0" (default is "0"). 
    4849///////////////////////////////////////////////////////////////////////////////////////////// 
    4950/////////////////////////////////////////////////////////////////////////////////////////// 
     
    7172    $ips = WP_CONTENT_DIR  .'/iosec_admin/ips'; 
    7273    $banlist = WP_CONTENT_DIR  .'/iosec_admin/banlist'; 
    73      
     74                            
     75                        define("RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api"); 
     76                        define("RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api"); 
     77                        define("RECAPTCHA_VERIFY_SERVER", "www.google.com"); 
     78                         
     79                        function _recaptcha_qsencode($data) 
     80                          { 
     81                            $req = ""; 
     82                            foreach ($data as $key => $value) 
     83                                $req .= $key . '=' . urlencode(stripslashes($value)) . '&'; 
     84                             
     85                            $req = substr($req, 0, strlen($req) - 1); 
     86                            return $req; 
     87                          } 
     88                         
     89                         
     90                         
     91                        function _recaptcha_http_post($host, $path, $data, $port = 80) 
     92                          { 
     93                            $req = _recaptcha_qsencode($data); 
     94                             
     95                            $http_request = "POST $path HTTP/1.0\r\n"; 
     96                            $http_request .= "Host: $host\r\n"; 
     97                            $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; 
     98                            $http_request .= "Content-Length: " . strlen($req) . "\r\n"; 
     99                            $http_request .= "User-Agent: reCAPTCHA/PHP\r\n"; 
     100                            $http_request .= "\r\n"; 
     101                            $http_request .= $req; 
     102                             
     103                            $response = ''; 
     104                            if (false == ($fs = @fsockopen($host, $port, $errno, $errstr, 10))) 
     105                              { 
     106                                die('Could not open socket'); 
     107                              } 
     108                             
     109                            fwrite($fs, $http_request); 
     110                             
     111                            while (!feof($fs)) 
     112                                $response .= fgets($fs, 1160); 
     113                            fclose($fs); 
     114                            $response = explode("\r\n\r\n", $response, 2); 
     115                             
     116                            return $response; 
     117                          } 
     118                         
     119                         
     120                         
     121                        function recaptcha_get_html($pubkey, $error = null, $use_ssl = false) 
     122                          { 
     123                            if ($pubkey == null || $pubkey == '') 
     124                              { 
     125                                die("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>"); 
     126                              } 
     127                             
     128                            if ($use_ssl) 
     129                              { 
     130                                $server = RECAPTCHA_API_SECURE_SERVER; 
     131                              } 
     132                            else 
     133                              { 
     134                                $server = RECAPTCHA_API_SERVER; 
     135                              } 
     136                             
     137                            $errorpart = ""; 
     138                            if ($error) 
     139                              { 
     140                                $errorpart = "&amp;error=" . $error; 
     141                              } 
     142                            return '<script type="text/javascript" src="' . $server . '/challenge?k=' . $pubkey . $errorpart . '"></script> 
     143 
     144    <noscript> 
     145        <iframe src="' . $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/> 
     146        <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea> 
     147        <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/> 
     148    </noscript>'; 
     149                          } 
     150                         
     151                         
     152                         
     153                         
     154                        class ReCaptchaResponse 
     155                          { 
     156                            var $is_valid; 
     157                            var $error; 
     158                          } 
     159                         
     160                         
     161                        function recaptcha_check_answer($privkey, $remoteip, $challenge, $response, $extra_params = array()) 
     162                          { 
     163                            if ($privkey == null || $privkey == '') 
     164                              { 
     165                                die("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>"); 
     166                              } 
     167                             
     168                            if ($remoteip == null || $remoteip == '') 
     169                              { 
     170                                die("For security reasons, you must pass the remote ip to reCAPTCHA"); 
     171                              } 
     172                             
     173                             
     174                             
     175                            if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) 
     176                              { 
     177                                $recaptcha_response           = new ReCaptchaResponse(); 
     178                                $recaptcha_response->is_valid = false; 
     179                                $recaptcha_response->error    = 'incorrect-captcha-sol'; 
     180                                return $recaptcha_response; 
     181                              } 
     182                             
     183                            $response = _recaptcha_http_post(RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify", array( 
     184                                'privatekey' => $privkey, 
     185                                'remoteip' => $remoteip, 
     186                                'challenge' => $challenge, 
     187                                'response' => $response 
     188                            ) + $extra_params); 
     189                             
     190                            $answers            = explode("\n", $response[1]); 
     191                            $recaptcha_response = new ReCaptchaResponse(); 
     192                             
     193                            if (trim($answers[0]) == 'true') 
     194                              { 
     195                                $recaptcha_response->is_valid = true; 
     196                              } 
     197                            else 
     198                              { 
     199                                $recaptcha_response->is_valid = false; 
     200                                $recaptcha_response->error    = $answers[1]; 
     201                              } 
     202                            return $recaptcha_response; 
     203                             
     204                          } 
     205                         
     206                        function recaptcha_get_signup_url($domain = null, $appname = null) 
     207                          { 
     208                            return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode(array( 
     209                                'domains' => $domain, 
     210                                'app' => $appname 
     211                            )); 
     212                          } 
     213                         
     214                        function _recaptcha_aes_pad($val) 
     215                          { 
     216                            $block_size = 16; 
     217                            $numpad     = $block_size - (strlen($val) % $block_size); 
     218                            return str_pad($val, strlen($val) + $numpad, chr($numpad)); 
     219                          } 
     220                         
     221                         
     222                         
     223                         
     224                        $resp  = null; 
     225                        $error = null; 
     226                         
    74227     
    75     if (($behind_reverse_proxy == "e") && ($proxyyasak <> "e")) 
     228    if (($behind_reverse_proxy == "e") && ($block_proxies <> "e")) 
    76229      { 
    77230        $REMOTE_ADDR = $_SERVER['HTTP_X_FORWARDED_FOR']; 
     
    130283    if ($let_it_go == 0) 
    131284      { 
    132         if ($proxyyasak == "e" and $HTTP_VIA > "") 
    133           { 
     285      if (!isset($_SESSION) && $implicit_deny_timeout > 0) { 
     286                                    session_start(); 
     287                                } 
     288    if (($block_proxies == "y" and $HTTP_VIA > "") or ($implicit_deny_timeout > 0 and $_SESSION['unblocked_time'] < time()  )) 
     289      { 
     290      
    134291?> 
    135292<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" /> 
     
    153310                                                        </font> 
    154311                                                       <font face="Arial" style="font-size: 8pt; " color="#C0C0C0"> 
    155                                                         Proxy is not Permitted</font></td> 
     312                                                        Proxy Usage Prohibited (Implicit Deny Mode)</font></td> 
    156313                                                </tr> 
    157314                                        </table> 
    158315                                </div> 
    159  
    160 <?php 
     316<?php 
     317      if ($use_captcha == "y") 
     318                  { 
     319?> 
     320 
     321<html> 
     322  <center><body> 
     323    <form action="" method="post"> 
     324<?php 
     325 
     326                    if ($_POST["recaptcha_response_field"]) 
     327                      { 
     328                        $resp = recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); 
     329                        if ($resp->is_valid) 
     330                          { 
     331                            
     332                            $_SESSION['unblocked_time'] = time() + $implicit_deny_timeout; 
     333                            echo "<meta http-equiv=\"Refresh\" content=\"" . ($interval + 1) . "; url=\">"; 
     334                            exit; 
     335                          } 
     336                        else 
     337                          { 
     338                            $error = $resp->error; 
     339                          } 
     340                      } 
     341                    echo recaptcha_get_html($publickey, $error); 
     342?> 
     343  <br/> 
     344    <input type="submit" value="Unblock" /> 
     345    </form> 
     346  </body></center> 
     347</html> 
     348<?php 
     349} 
    161350            exit; 
    162351          } 
     
    188377                $kaynak = $REMOTE_ADDR; 
    189378              } 
    190             if (($kaynak == $ayikla[0] and (time() + microtime()) < $ayikla[2] + $zasimi) or (($ipcheck[0] == $adres) && ($ipcheck[1] + $myenile + 0.0 >= (time() + microtime())))) 
     379            if (($kaynak == $ayikla[0] and (time() + microtime()) < $ayikla[2] + $interval) or (($ipcheck[0] == $adres) && ($ipcheck[1] + $refresh_timeout + 0.0 >= (time() + microtime())))) 
    191380              { 
    192381                $array_gokhan[$i] = "$adres|" . $connection_count++ . "|$saniye"; 
     
    199388<meta http-equiv="Content-Language" content="tr"> 
    200389<meta http-equiv="Refresh" content="<?php 
    201                     echo $myenile; 
     390                    echo $refresh_timeout; 
    202391?>; url=<?php 
    203                     echo $yonlendirme; 
     392                    echo $redirection; 
    204393?>"> 
    205394<title>IOSec.org Anti Flood Security Gateway Module</title> 
     
    210399<script> 
    211400var count=<?php 
    212                     echo $myenile; 
     401                    echo $refresh_timeout; 
    213402?>; 
    214403 
     
    270459                    fclose($g_muharremoglu); 
    271460                     
    272                     if (($ipcheck[0] == $adres) && ($ipcheck[1] + $myenile >= (time() + microtime()))) 
     461                    if (($ipcheck[0] == $adres) && ($ipcheck[1] + $refresh_timeout >= (time() + microtime()))) 
    273462                      { 
    274463                        $logfile = $banlist; 
     
    310499    <form action="" method="post"> 
    311500<?php 
    312                          
    313                         define("RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api"); 
    314                         define("RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api"); 
    315                         define("RECAPTCHA_VERIFY_SERVER", "www.google.com"); 
    316                          
    317                         function _recaptcha_qsencode($data) 
    318                           { 
    319                             $req = ""; 
    320                             foreach ($data as $key => $value) 
    321                                 $req .= $key . '=' . urlencode(stripslashes($value)) . '&'; 
    322                              
    323                             $req = substr($req, 0, strlen($req) - 1); 
    324                             return $req; 
    325                           } 
    326                          
    327                          
    328                          
    329                         function _recaptcha_http_post($host, $path, $data, $port = 80) 
    330                           { 
    331                             $req = _recaptcha_qsencode($data); 
    332                              
    333                             $http_request = "POST $path HTTP/1.0\r\n"; 
    334                             $http_request .= "Host: $host\r\n"; 
    335                             $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; 
    336                             $http_request .= "Content-Length: " . strlen($req) . "\r\n"; 
    337                             $http_request .= "User-Agent: reCAPTCHA/PHP\r\n"; 
    338                             $http_request .= "\r\n"; 
    339                             $http_request .= $req; 
    340                              
    341                             $response = ''; 
    342                             if (false == ($fs = @fsockopen($host, $port, $errno, $errstr, 10))) 
    343                               { 
    344                                 die('Could not open socket'); 
    345                               } 
    346                              
    347                             fwrite($fs, $http_request); 
    348                              
    349                             while (!feof($fs)) 
    350                                 $response .= fgets($fs, 1160); 
    351                             fclose($fs); 
    352                             $response = explode("\r\n\r\n", $response, 2); 
    353                              
    354                             return $response; 
    355                           } 
    356                          
    357                          
    358                          
    359                         function recaptcha_get_html($pubkey, $error = null, $use_ssl = false) 
    360                           { 
    361                             if ($pubkey == null || $pubkey == '') 
    362                               { 
    363                                 die("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>"); 
    364                               } 
    365                              
    366                             if ($use_ssl) 
    367                               { 
    368                                 $server = RECAPTCHA_API_SECURE_SERVER; 
    369                               } 
    370                             else 
    371                               { 
    372                                 $server = RECAPTCHA_API_SERVER; 
    373                               } 
    374                              
    375                             $errorpart = ""; 
    376                             if ($error) 
    377                               { 
    378                                 $errorpart = "&amp;error=" . $error; 
    379                               } 
    380                             return '<script type="text/javascript" src="' . $server . '/challenge?k=' . $pubkey . $errorpart . '"></script> 
    381  
    382     <noscript> 
    383         <iframe src="' . $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/> 
    384         <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea> 
    385         <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/> 
    386     </noscript>'; 
    387                           } 
    388                          
    389                          
    390                          
    391                          
    392                         class ReCaptchaResponse 
    393                           { 
    394                             var $is_valid; 
    395                             var $error; 
    396                           } 
    397                          
    398                          
    399                         function recaptcha_check_answer($privkey, $remoteip, $challenge, $response, $extra_params = array()) 
    400                           { 
    401                             if ($privkey == null || $privkey == '') 
    402                               { 
    403                                 die("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>"); 
    404                               } 
    405                              
    406                             if ($remoteip == null || $remoteip == '') 
    407                               { 
    408                                 die("For security reasons, you must pass the remote ip to reCAPTCHA"); 
    409                               } 
    410                              
    411                              
    412                              
    413                             if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) 
    414                               { 
    415                                 $recaptcha_response           = new ReCaptchaResponse(); 
    416                                 $recaptcha_response->is_valid = false; 
    417                                 $recaptcha_response->error    = 'incorrect-captcha-sol'; 
    418                                 return $recaptcha_response; 
    419                               } 
    420                              
    421                             $response = _recaptcha_http_post(RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify", array( 
    422                                 'privatekey' => $privkey, 
    423                                 'remoteip' => $remoteip, 
    424                                 'challenge' => $challenge, 
    425                                 'response' => $response 
    426                             ) + $extra_params); 
    427                              
    428                             $answers            = explode("\n", $response[1]); 
    429                             $recaptcha_response = new ReCaptchaResponse(); 
    430                              
    431                             if (trim($answers[0]) == 'true') 
    432                               { 
    433                                 $recaptcha_response->is_valid = true; 
    434                               } 
    435                             else 
    436                               { 
    437                                 $recaptcha_response->is_valid = false; 
    438                                 $recaptcha_response->error    = $answers[1]; 
    439                               } 
    440                             return $recaptcha_response; 
    441                              
    442                           } 
    443                          
    444                         function recaptcha_get_signup_url($domain = null, $appname = null) 
    445                           { 
    446                             return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode(array( 
    447                                 'domains' => $domain, 
    448                                 'app' => $appname 
    449                             )); 
    450                           } 
    451                          
    452                         function _recaptcha_aes_pad($val) 
    453                           { 
    454                             $block_size = 16; 
    455                             $numpad     = $block_size - (strlen($val) % $block_size); 
    456                             return str_pad($val, strlen($val) + $numpad, chr($numpad)); 
    457                           } 
    458                          
    459                          
    460                          
    461                          
    462                         $resp  = null; 
    463                         $error = null; 
    464                          
     501  
    465502                        if ($_POST["recaptcha_response_field"]) 
    466503                          { 
     
    472509                                 
    473510                                $htaccess = fopen($banlisttemp, 'a+'); 
    474                                 fwrite($htaccess, $adres . "|" . (time() + microtime() - $myenile) . "\n"); 
     511                                fwrite($htaccess, $adres . "|" . (time() + microtime() - $refresh_timeout) . "\n"); 
    475512                                fclose($htaccess); 
    476                                 echo "<meta http-equiv=\"Refresh\" content=\"" . ($zasimi + 1) . "; url=\">"; 
     513                                echo "<meta http-equiv=\"Refresh\" content=\"" . ($interval + 1) . "; url=\">"; 
    477514                                exit; 
    478515                              } 
  • iosec-anti-flood-security-gateway-module/trunk/readme.txt

    r557047 r557053  
    55Requires at least: 2.0.2 
    66Tested up to: 3.3.2 
    7 Stable tag: 1.5 
     7Stable tag: 1.6 
    88License: GPLv2 or later 
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html 
Note: See TracChangeset for help on using the changeset viewer.