code.fastix.org

Dateiansicht:

Datei:Projekte -> PHP:check_blocked_ip -> isBlockedAPI.php
md5:645126cf1d89c1581ad9c16a6dfc60fe
sha1:f724360fd82acf6104889a41fb96a706283fcc77
  1. <?php
  2.  
  3.     /* Test:
  4.     if (empty($_GET['check'])  ) {
  5.         #$_GET['check']='98.210.23.201';
  6.         #$_GET['check']='10.10.10.10';
  7.         $_GET['check']='178.187.1.1';
  8.     }
  9.     */
  10.  
  11.     $output = array();
  12.     $output['errorNumber'] = 0;
  13.     $output['errorType']   = false;
  14.     $output['errorText']   = '';
  15.     $output['isBlocked']   = false;
  16.  
  17.  
  18.     $decIP = ip2dec( trim( $_GET['check'] ) );
  19.  
  20.     if ( false === $decIP ) {
  21.         $output['errorNumber'] = 1;
  22.         $output['errorText']   = "Keine IPv4-Addresse: " . $_GET['check'];
  23.         $output['errorType']   = "FATAL";
  24.         header( 'Status: 500' );
  25.         echo json_encode( $output );
  26.         exit;
  27.     }
  28.  
  29.     if (! is_file( '/tmp/fwlist.txt' ) ) {
  30.         $dummy = `/opt/fwlist > /tmp/fwlist.txt`;
  31.     }
  32.  
  33.     $ips = file( '/tmp/fwlist.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
  34.     foreach ( $ips as $ip ) {
  35.         $ip = trim ($ip);
  36.         if ( $ip ) {
  37.             if ( false === strpos( $ip, '/') ) {
  38.                 $firstIP = ip2dec( $ip );
  39.                 $lastIP  = $firstIP;
  40.                 $netMask = 32;
  41.             } else {
  42.                 list($firstIP, $netMask ) = explode( '/', $ip );
  43.                 $first IP = ip2dec( $firstIP );
  44.                 $lastIP  = $firstIP + pow( 2, 32 - $netMask );
  45.  
  46.             }
  47.  
  48.             if ( $decIP >= $firstIP && $decIP <= $lastIP ) {
  49.                 $output['isBlocked'] = true;
  50.                 break;
  51.             }
  52.         }
  53.     }
  54.     echo json_encode($output);
  55.     exit;
  56.  
  57.  
  58. function ip2dec( $ip ) {
  59.     return sprintf( '%u', ip2long( $ip ) );
  60. }