= 0 ; $a --){ $c = 1; while($i[$a] > 0 ){ $str = $i[0].".".$i[1].".".$i[2].".".$i[3]; $res[$str] = $str; $i[$a] -=$c; $c = 2*$c; } } $res["0.0.0.0"] = "0.0.0.0"; if(preg_match("/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/", $ip)){ $mask = preg_replace("/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/","",$ip); $mask = preg_replace("/^\//","",$mask); if((in_array("$mask",$res)) && preg_match("/^[0-9\.]/",$mask)){ return(TRUE); } } return(FALSE); } /*! \brief Simple is domain check * * This checks if the given string looks like "string(...).string" */ public static function is_domain($str) { return(preg_match("/^([a-z0-9\-]*)\.[a-z0-9\-]*$/i",$str)); } /*! \brief Check if the given argument is an id */ public static function is_id($id) { if ($id == ""){ return (FALSE); } return preg_match ("/^[0-9]+$/", $id); } /*! \brief Check if the given argument is a path */ public static function is_path($path) { if ($path == ""){ return (TRUE); } if (!preg_match('/^[a-z0-9%\/_.+-]+$/i', $path)){ return (FALSE); } return preg_match ("/\/.+$/", $path); } /*! \brief Check if the given argument is an email */ public static function is_email($address, $template= FALSE) { if ($address == ""){ return (TRUE); } if ($template){ return preg_match ("/^[._a-z0-9%-]+@[_a-z0-9-]+(\.[a-z0-9-]+)(\.[a-z0-9-]+)*$/i", $address); } else { return preg_match ("/^[._a-z0-9-]+@[_a-z0-9-]+(\.[a-z0-9i-]+)(\.[a-z0-9-]+)*$/i", $address); } } /* \brief Check if the given department name is valid */ public static function is_department_name_reserved($name,$base) { $reservedName = array("systems","apps","incomming","internal","accounts","fax","addressbook", preg_replace("/ou=(.*),/","\\1",get_people_ou()), preg_replace("/ou=(.*),/","\\1",get_groups_ou())); $follwedNames['/ou=fai,ou=configs,ou=systems,/'] = array("fai","hooks","templates","scripts","disk","packages","variables","profiles"); /* Check if name is one of the reserved names */ if(in_array_ics($name,$reservedName)) { return(true); } /* Check all follow combinations if name is in array && parent base == array_key, return false*/ foreach($follwedNames as $key => $names){ if((in_array_ics($name,$names)) && (preg_match($key,$base))){ return(true); } } return(false); } /* \brief Check if $ip1 and $ip2 represents a valid IP range * \return TRUE in case of a valid range, FALSE in case of an error. */ public static function is_ip_range($ip1,$ip2) { if(!tests::is_ip($ip1) || !tests::is_ip($ip2)){ return(FALSE); }else{ $ar1 = split("\.",$ip1); $var1 = $ar1[0] * (16777216) + $ar1[1] * (65536) + $ar1[2] * (256) + $ar1[3]; $ar2 = split("\.",$ip2); $var2 = $ar2[0] * (16777216) + $ar2[1] * (65536) + $ar2[2] * (256) + $ar2[3]; return($var1 < $var2); } } /* \brief Check if the specified IP address $address is inside the given network */ public static function is_in_network($network, $netmask, $address) { $nw= split('\.', $network); $nm= split('\.', $netmask); $ad= split('\.', $address); /* Generate inverted netmask */ for ($i= 0; $i<4; $i++){ $ni[$i]= 255-$nm[$i]; $la[$i]= $nw[$i] | $ni[$i]; } /* Transform to integer */ $first= $nw[0] * (16777216) + $nw[1] * (65536) + $nw[2] * (256) + $nw[3]; $curr= $ad[0] * (16777216) + $ad[1] * (65536) + $ad[2] * (256) + $ad[3]; $last= $la[0] * (16777216) + $la[1] * (65536) + $la[2] * (256) + $la[3]; return ($first < $curr&& $last > $curr); } /* \brief Check if the specified IP address $address is inside the given network */ public static function is_in_ip_range($from, $to, $address) { $from = split('\.', $from); $to = split('\.', $to); $ad = split('\.', $address); /* Transform to integer */ $from= $from[0] * (16777216) + $from[1] * (65536) + $from[2] * (256) + $from[3]; $to= $to[0] * (16777216) + $to[1] * (65536) + $to[2] * (256) + $to[3]; $ad= $ad[0] * (16777216) + $ad[1] * (65536) + $ad[2] * (256) + $ad[3]; return ($ad >= $from && $ad <= $to); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>