X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_config.inc;h=6aa0277886795d0f9b4199f8287000500a6e4527;hb=aa26133f196b0c42cb491ed19f9d596255d9ab91;hp=65285a6559f6599687081877e6146dda7479901e;hpb=46483a65b9a7bc15f5b7e2f562fb0e337fba4de0;p=gosa.git diff --git a/include/class_config.inc b/include/class_config.inc index 65285a655..6aa027788 100644 --- a/include/class_config.inc +++ b/include/class_config.inc @@ -45,6 +45,7 @@ class config { /* Keep a copy of the current deparment list */ var $departments= array(); var $idepartments= array(); + var $adepartments= array(); function config($filename, $basedir= "") { @@ -112,8 +113,8 @@ class config { $this->currentLocation= $name; /* Add location elements */ - $this->data['LOCATIONS'][$name]= $attrs; - } + $this->data['LOCATIONS'][$name]= $attrs; + } break; /* Handle referral tags */ @@ -192,9 +193,11 @@ class config { /* Check for connection */ if (is_null($this->ldap) || (is_int($this->ldap) && $this->ldap == 0)){ + $smarty= get_smarty(); print_red (_("Can't bind to LDAP. Please contact the system administrator.")); - echo $_SESSION['errors']; - exit; + $smarty->display (get_template_path('headers.tpl')); + echo ''.$_SESSION['errors'].''; + exit(); } if (!isset($_SESSION['size_limit'])){ @@ -363,9 +366,12 @@ class config { /* Get asterisk servers */ $ldap->cd ($this->current['BASE']); - $ldap->search ("(objectClass=goGlpiServer)"); + $ldap->search ("(&(objectClass=goGlpiServer)(cn=*)(goGlpiAdmin=*)(goGlpiDatabase=*))",array("cn","goGlpiPassword","goGlpiAdmin","goGlpiDatabase")); if ($ldap->count()){ $attrs= $ldap->fetch(); + if(!isset($attrs['goGlpiPassword'])){ + $attrs['goGlpiPassword'][0] =""; + } $this->data['SERVERS']['GLPI']= array( 'SERVER' => $attrs['cn'][0], 'LOGIN' => $attrs['goGlpiAdmin'][0], @@ -388,13 +394,15 @@ class config { $ldap->search ("(&(objectClass=goShareServer)(goExportEntry=*))"); while ($attrs= $ldap->fetch()){ for ($i= 0; $i<$attrs["goExportEntry"]["count"]; $i++){ - $path= preg_replace ("/\s.*$/", "", $attrs["goExportEntry"][$i]); + if(!preg_match('/^[^|]+\|[^|]+\|NFS\|.*$/', $attrs["goExportEntry"][$i])){ + continue; + } + $path= preg_replace ("/^[^|]+\|[^|]+\|[^|]+\|[^|]+\|([^|]+).*$/", '\1', $attrs["goExportEntry"][$i]); $tmp[]= $attrs["cn"][0].":$path"; } } $this->data['SERVERS']['NFS']= $tmp; - /* Load Terminalservers */ $ldap->cd ($this->current['BASE']); $ldap->search ("(objectClass=goTerminalServer)"); @@ -411,7 +419,7 @@ class config { } /* Ldap Server */ - $this->data['SERVERS']['LDAP']= array("default"); + $this->data['SERVERS']['LDAP']= array(); $ldap->cd ($this->current['BASE']); $ldap->search ("(objectClass=goLdapServer)"); while ($attrs= $ldap->fetch()){ @@ -462,6 +470,44 @@ class config { } } + + function get_departments($ignore_dn= "") + { + global $config; + + /* Initialize result hash */ + $result= array(); + $administrative= array(); + $result['/']= $this->current['BASE']; + + /* Get list of department objects */ + $ldap= $this->get_ldap_link(); + $ldap->cd ($this->current['BASE']); + $ldap->search ("(objectClass=gosaDepartment)", array("ou", "objectClass", "gosaUnitTag")); + while ($attrs= $ldap->fetch()){ + $dn= $ldap->getDN(); + + /* Save administrative departments */ + if (in_array_ics("gosaAdministrativeUnit", $attrs['objectClass']) && + isset($attrs['gosaUnitTag'][0])){ + $administrative[$dn]= $attrs['gosaUnitTag'][0]; + } + + if ($dn == $ignore_dn){ + continue; + } + + /* Only assign non-root departments */ + if ($dn != $result['/']){ + $result[convert_department_dn($dn)]= $dn; + } + } + + $this->adepartments= $administrative; + $this->departments= $result; + } + + function make_idepartments($max_size= 28) { global $config; @@ -593,7 +639,7 @@ class config { function getShareServerList() { $ldap= $this->get_ldap_link(); - $a_res = $ldap->search("(objectClass=goShareServer)",array("goExportEntry","cn")); + $a_res = $ldap->search("(&(objectClass=goShareServer)(goExportEntry=*))",array("goExportEntry","cn")); $return= array(); while($entry = $ldap->fetch($a_res)){ if(isset($entry['goExportEntry']['count'])){