code.fastix.org

Dateiansicht:

Datei:Projekte -> PHP:check_blocked_ip -> check_blocked_ip.php
md5:057fc8d197fffc77f86d1f1d0f2e2fd3
sha1:948accb026b2715afb531f59fb75dee4e42dbfb7
  1. <?php
  2. # main
  3.    header( 'Content-Type: text/plain' );
  4.     if ( ! isset( $_GET['check'] ) ) {
  5.         echo "ERROR: NO IP-GIVEN. ### USAGE: SET ?check=IPv4";
  6.         exit;
  7.     }
  8.     $_GET['check'] = ip2dec( trim( $_GET['check'] ) );
  9.     if (false === $_GET['check']) {
  10.         echo "<pre>ERROR: Not a IPv4-Address: " , $ipOut , "</pre></body></html>";
  11.         exit;
  12.     }
  13.  
  14.     $ips=explode( "\n" , `/opt/fwlist` );
  15.     foreach( $ips as $ip ) {
  16.         $ip = trim( $ip );
  17.         if( $ip ) {
  18.             if( false === strpos( $ip , '/' ) ) {
  19.                 $ip      = $ip . '/32';
  20.                 $firstIP = ip2dec( $ip );
  21.                 $lastIP  = $firstIP;
  22.                 $netMask = 32;
  23.             } else {
  24.                 list ( $firstIP, $netMask ) = explode( '/' , $ip );
  25.                 $firstIP = ip2dec( $firstIP );
  26.                 $lastIP  = $firstIP + pow( 2 , 32-$netMask );
  27.             }
  28.             if( $_GET['check'] >= $firstIP && $_GET['check'] <= $lastIP ) {
  29.                 echo 'BLOCKED';
  30.                 exit;
  31.             }
  32.         }
  33.     }
  34.     echo 'NOT BLOCKED';
  35.     exit;
  36.  
  37. function ip2dec( $ip ) {
  38.     $arBytes = explode( '.', $ip );
  39.     if( 4 != count( $arBytes ) ) {
  40.         return false;
  41.     }
  42.     foreach( $arBytes as $byte ) {
  43.         if( intval( $byte ) != $byte || $byte > 255 || $byte < 0  ) {
  44.             return false;
  45.         }
  46.     }
  47.     $z3 = 16777216 * $arBytes[0];
  48.     $z2 = 65536    * $arBytes[1];
  49.     $z1 = 256      * $arBytes[2];
  50.     $z0 = $arBytes[3];
  51.     return $z3 + $z2 + $z1 + $z0;
  52. }
  53. ?>