X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Ffunctions.inc;h=4acc2419e139f5e12f46570541bdad03092454fd;hb=f9e2a15ea3578c6c86efef30a0c8ebededefbb9e;hp=376d19d86012519723c7714527d49328233c925d;hpb=8ecfbbfb5ea474890d7d46bb8aefea20135b226c;p=gosa.git diff --git a/include/functions.inc b/include/functions.inc index 376d19d86..4acc2419e 100644 --- a/include/functions.inc +++ b/include/functions.inc @@ -20,6 +20,7 @@ /* Configuration file location */ define ("CONFIG_DIR", "/etc/gosa"); +define ("CONFIG_FILE", "gosa.conf-trunk"); define ("CONFIG_TEMPLATE_DIR", "../contrib/"); define ("HELP_BASEDIR", "/var/www/doc/"); @@ -291,7 +292,8 @@ function ldap_init ($server, $base, $binddn='', $pass='') { global $config; - $ldap = new LDAP ($binddn, $pass, $server, isset($config->current['RECURSIVE']) && $config->current['RECURSIVE'] == "true", + $ldap = new LDAP ($binddn, $pass, $server, + isset($config->current['RECURSIVE']) && $config->current['RECURSIVE'] == "true", isset($config->current['TLS']) && $config->current['TLS'] == "true"); /* Sadly we've no proper return values here. Use the error message instead. */ @@ -916,6 +918,13 @@ function is_ip($ip) return 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); } + +function is_mac($mac) +{ + return preg_match("/^[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$/i", $mac); +} + + /* Checks if the given ip address dosen't match "is_ip" because there is also a sub net mask given */ function is_ip_with_subnetmask($ip) @@ -1148,42 +1157,11 @@ function to_string ($value) function get_printer_list($cups_server) { global $config; - - $res= array(); - - /* Use CUPS, if we've access to it */ - if (function_exists('cups_get_dest_list')){ - $dest_list= cups_get_dest_list ($cups_server); - - foreach ($dest_list as $prt){ - $attr= cups_get_printer_attributes ($cups_server, $prt->name); - - foreach ($attr as $prt_info){ - if ($prt_info->name == "printer-info"){ - $info= $prt_info->value; - break; - } - } - $res[$prt->name]= "$info [$prt->name]"; - } - - /* CUPS is not available, try lpstat as a replacement */ - } else { - $ar = false; - exec("lpstat -p", $ar); - foreach($ar as $val){ - @list($dummy, $printer, $rest)= split(' ', $val, 3); - if (preg_match('/^[^@]+$/', $printer)){ - $res[$printer]= "$printer"; - } - } + $res = array(); + $data = get_list('(objectClass=gotoPrinter)',"printer",$config->current['BASE'], array('cn')); + foreach($data as $attrs ){ + $res[$attrs['cn'][0]] = $attrs['cn'][0]; } - - /* Merge in printers from LDAP */ - $ldap= $config->get_ldap_link(); - $ldap->cd ($config->current['BASE']); - $ldap->search('(objectClass=gotoPrinter)', array('cn')); - return $res; } @@ -2105,8 +2083,6 @@ function gosa_ldap_explode_dn($dn,$config = NULL,$verify_in_ldap=false) $ldap = $config->get_ldap_link(); } - $Diff = ldap_explode_dn($dn,0); - /* Lets start */ $called = false; while(preg_match("/,/",$dn) && $next && $cnt < $max){ @@ -2136,6 +2112,11 @@ function gosa_ldap_explode_dn($dn,$config = NULL,$verify_in_ldap=false) } } + /* No dn was posted */ + if($cnt == 0 && !empty($dn)){ + $ret[] = $dn; + } + /* Append the rest */ $test = $keep.$dn; if($called && !empty($test)){ @@ -2143,12 +2124,64 @@ function gosa_ldap_explode_dn($dn,$config = NULL,$verify_in_ldap=false) } $ret['count'] = count($ret) - 1; - $diff = array_diff($ret,$Diff); - if($diff){ - print_a(array("Diff" => $diff,"OLD" => $Diff,"NEW"=> $ret,"DEBUG"=> debug_backtrace())); - } return($ret); } +function is_php4() +{ + return (preg_match('/^4/', phpversion())); +} + +/* Add "str_split" if this function is missing. + * This function is only available in PHP5 + */ + if(!function_exists("str_split")){ + function str_split($str,$length =1) + { + if($length < 1 ) $length =1; + + $ret = array(); + for($i = 0 ; $i < strlen($str); $i = $i +$length){ + $ret[] = substr($str,$i ,$length); + } + return($ret); + } + } + + +function get_base_from_hook($dn, $attrib) +{ + global $config; + + if (isset($config->current['BASE_HOOK'])){ + + /* Call hook script - if present */ + $command= $config->current['BASE_HOOK']; + + if ($command != ""){ + $command.= " '$dn' $attrib"; + if (check_command($command)){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Execute"); + exec($command, $output); + if (preg_match("/^[0-9]+$/", $output[0])){ + return ($output[0]); + } else { + print_red(_("Warning - base_hook is not avialable. Using default base.")); + return ($config->current['UIDBASE']); + } + } else { + print_red(_("Warning - base_hook is not avialable. Using default base.")); + return ($config->current['UIDBASE']); + } + + } else { + + print_red(_("Warning - no base_hook defined. Using default base.")); + return ($config->current['UIDBASE']); + + } + } +} + // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>