Location: PHPKode > projects > Cancerbero - The watchdog of the ports > cancerbero-0.6/site/include/net.php
<?php
#function net_data ($ip_addr_cidr) {
#		$ip_arr = explode('/', $ip_addr_cidr);
#	$bin = '';
#	for($i=1;$i<=32;$i++) {
#		$bin .= $ip_arr[1] >= $i ? '1' : '0';
#	}
#	
#	$ip_arr[1] = bindec($bin);
#	$ip = ip2long($ip_arr[0]);
#	$nm = ip2long($ip_arr[1]);
#	$nw = ($ip & $nm);
#	$bc = $nw | (~$nm);
#	$number = ($bc - $nw);
#	$array_return = array("$ip_arr[1]", "$ip", "$nm", "$nw", "$bc", "$number");
#	return $array_return;
#}

function net_data ($ip_addr_cidr) {

	$ip_arr = explode('/', $ip_addr_cidr);

	if (count($ip_arr)==1) {

		#Anexo para otros tipos de direcciones
		$sector_addr = explode('.', $ip_addr_cidr);
		$num_pots = count ($sector_addr);
		switch ($num_pots) {
		case 4: 
			if ($sector_addr[3]=='') {
				$ip_addr_cidr .= "0/24";
			} else {
				$ip_addr_cidr .= "/32";
			}
			break;
		case 3:
			if ($sector_addr[2]=='') {
				$ip_addr_cidr .= "0.0/16";
			} else {
				$ip_addr_cidr .= ".0/24";
			} 
			break;
		case 2:
			if ($sector_addr[1]=='') {
				$ip_addr_cidr .= "0.0.0/8";
			} else {
				$ip_addr_cidr .= ".0.0/16";
			} 
			break;
		case 1:
			$ip_addr_cidr .= ".0.0.0/8";
			break;
		default:
			break;
		}
	} else {
		#Anexo para otros tipos de direcciones
		$sector_addr = explode('.', $ip_arr[0]);
		$num_pots = count ($sector_addr);
		switch ($num_pots) {
		case 4: 
			if ($sector_addr[3]=='') {
				$ip_addr_cidr = $ip_arr[0]."0/$ip_arr[1]";
			} else {
				$ip_addr_cidr = $ip_arr[0]."/$ip_arr[1]";
			}
			break;
		case 3:
			if ($sector_addr[2]=='') {
				$ip_addr_cidr = $ip_arr[0]."0.0/$ip_arr[1]";
			} else {
				$ip_addr_cidr = $ip_arr[0].".0/$ip_arr[1]";
			} 
			break;
		case 2:
			if ($sector_addr[1]=='') {
				$ip_addr_cidr = $ip_arr[0]."0.0.0/$ip_arr[1]";
			} else {
				$ip_addr_cidr = $ip_arr[0].".0.0/$ip_arr[1]";
			} 
			break;
		case 1:
			$ip_addr_cidr = $ip_arr[0].".0.0.0/$ip_arr[1]";
			break;
		default:
			break;
		}
	}

	
	$ip_arr = explode('/', $ip_addr_cidr);
	$bin = '';
	
	for($i=1;$i<=32;$i++) {
		$bin .= $ip_arr[1] >= $i ? '1' : '0';
	}
	
	$ip_arr[1] = bindec($bin);	
	$ip = ip2long($ip_arr[0]);
	$nm = intval(ip2long($ip_arr[1]));
	if ($nm == 0) $nm = -1;
	$nw = ($ip & $nm);
	$nw = ip2long(long2ip($nw));
	$bc = $nw | (~$nm);
	$bc = ip2long(long2ip($bc));


	$number = ($bc - $nw + 1);
	
	$array_return = array("$ip_arr[1]", "$ip", "$nm", "$nw", "$bc", "$number", "$ip_addr_cidr");
	return $array_return;
}

function list_cidr ($ip_addr_cidr) {
	
	$data = net_data($ip_addr_cidr);
	$ip_arr[1] = $data[0];
	$ip = $data[1];
	$nm = $data[2];
	$nw = $data[3];
	$bc = $data[4];
	$number = $data[5];

	for($i=0;$i<$number;$i++) {
		$ip_list[$i] = long2ip($nw + $i);
	}
	return $ip_list;
}

function match_cidr($addr, $cidr) {
       // $addr should be an ip address in the format '0.0.0.0'
       // $cidr should be a string in the format '100/8'
       //      or an array where each element is in the above format

       $output = false;
       if ( is_array($cidr) ) {
               foreach ( $cidr as $cidrlet ) {
                       if ( match_cidr( $addr, $cidrlet) ) {
                               $output = true;
                       }
               }
       } else {
               if ((ereg("/", $cidr))) {
	               list($ip, $mask) = explode('/', $cidr);
		} else {
			$ip = $cidr;
			$mask = 32;
		}
               $mask = 0xffffffff << (32 - $mask);
               $output = ((ip2long($addr) & $mask) == (ip2long($ip) & $mask));
       }
       return $output;
}

?>
Return current item: Cancerbero - The watchdog of the ports