X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_config.inc;h=7ef00cb6c44ed0147f48022ff48ab5fd674ce3c4;hb=393402bd6f7875b422726b00aad7c69bdaca55e7;hp=b79df2426fb5b024e98e0224029ba8fd9a656748;hpb=478ea60361b0824f073fd6151f1f064c54eb3c52;p=gosa.git diff --git a/include/class_config.inc b/include/class_config.inc index b79df2426..7ef00cb6c 100644 --- a/include/class_config.inc +++ b/include/class_config.inc @@ -46,6 +46,7 @@ class config { var $departments= array(); var $idepartments= array(); var $adepartments= array(); + var $tdepartments= array(); function config($filename, $basedir= "") { @@ -93,9 +94,9 @@ class config { /* yes/no to true/false and upper case TRUE to true and so on*/ foreach($attrs as $name => $value){ - if((preg_match("/^yes$/i",$value)) || (preg_match("/^true$/i",$value))){ + if(preg_match("/^(true|yes)$/i",$value)){ $attrs[$name] = "true"; - }elseif((preg_match("/^no$/i",$value)) || (preg_match("/^false$/i",$value))){ + }elseif(preg_match("/^(false|no)$/i",$value)){ $attrs[$name] = "false"; } } @@ -240,6 +241,15 @@ class config { if (!isset($this->current['GROUPS'])){ $this->current['GROUPS']= "ou=groups"; } + + if (isset($this->current['INITIAL_BASE'])){ + $_SESSION['CurrentMainBase']= $this->current['INITIAL_BASE']; + } + + /* Remove possibly added ',' from end of group and people ou */ + $this->current['GROUPS'] = preg_replace("/,*$/","",$this->current['GROUPS']); + $this->current['PEOPLE'] = preg_replace("/,*$/","",$this->current['PEOPLE']); + if (!isset($this->current['WINSTATIONS'])){ $this->current['WINSTATIONS']= "ou=winstations,ou=systems"; } @@ -357,24 +367,46 @@ class config { 'PASSWORD' => $attrs['goFaxPassword'][0]); } + /* Get asterisk servers */ $ldap->cd ($this->current['BASE']); $ldap->search ("(objectClass=goFonServer)"); + $this->data['SERVERS']['FON']= array(); if ($ldap->count()){ - $attrs= $ldap->fetch(); - $this->data['SERVERS']['FON']= array( - 'SERVER' => $attrs['cn'][0], - 'LOGIN' => $attrs['goFonAdmin'][0], - 'PASSWORD' => $attrs['goFonPassword'][0], - 'DB' => "gophone", - 'SIP_TABLE' => "sip_users", - 'EXT_TABLE' => "extensions", - 'VOICE_TABLE' => "voicemail_users", - 'QUEUE_TABLE' => "queues", - 'QUEUE_MEMBER_TABLE' => "queue_members"); + while ($attrs= $ldap->fetch()){ + + /* Add 0 entry for development */ + if(count($this->data['SERVERS']['FON']) == 0){ + $this->data['SERVERS']['FON'][0]= array( + 'DN' => $attrs['dn'], + 'SERVER' => $attrs['cn'][0], + 'LOGIN' => $attrs['goFonAdmin'][0], + 'PASSWORD' => $attrs['goFonPassword'][0], + 'DB' => "gophone", + 'SIP_TABLE' => "sip_users", + 'EXT_TABLE' => "extensions", + 'VOICE_TABLE' => "voicemail_users", + 'QUEUE_TABLE' => "queues", + 'QUEUE_MEMBER_TABLE' => "queue_members"); + } + + /* Add entry with 'dn' as index */ + $this->data['SERVERS']['FON'][$attrs['dn']]= array( + 'DN' => $attrs['dn'], + 'SERVER' => $attrs['cn'][0], + 'LOGIN' => $attrs['goFonAdmin'][0], + 'PASSWORD' => $attrs['goFonPassword'][0], + 'DB' => "gophone", + 'SIP_TABLE' => "sip_users", + 'EXT_TABLE' => "extensions", + 'VOICE_TABLE' => "voicemail_users", + 'QUEUE_TABLE' => "queues", + 'QUEUE_MEMBER_TABLE' => "queue_members"); + } } - /* Get asterisk servers */ + + /* Get glpi server */ $ldap->cd ($this->current['BASE']); $ldap->search ("(&(objectClass=goGlpiServer)(cn=*)(goGlpiAdmin=*)(goGlpiDatabase=*))",array("cn","goGlpiPassword","goGlpiAdmin","goGlpiDatabase")); if ($ldap->count()){ @@ -388,14 +420,16 @@ class config { 'PASSWORD' => $attrs['goGlpiPassword'][0], 'DB' => $attrs['goGlpiDatabase'][0]); } + /* Get logdb server */ $ldap->cd ($this->current['BASE']); - $ldap->search ("(objectClass=goLogDBServer)"); + $ldap->search ("(objectClass=goLogDBServer)",array("cn","goLogDBServerUser","goLogDBServerPassword","goLogDB")); if ($ldap->count()){ $attrs= $ldap->fetch(); - $this->data['SERVERS']['LOG']= array( 'SERVER' => $attrs['cn'][0], - 'LOGIN' => $attrs['goLogAdmin'][0], - 'PASSWORD' => $attrs['goLogPassword'][0]); + $this->data['SERVERS']['LOGGING'][$attrs['cn'][0]]= + array('USER' => $attrs['goLogDBServerUser'][0], + 'PWD' => $attrs['goLogDBServerPassword'][0], + 'DB' => $attrs['goLogDB'][0]); } /* Get NFS server lists */ @@ -489,6 +523,7 @@ class config { $result= array(); $administrative= array(); $result['/']= $this->current['BASE']; + $this->tdepartments= array(); /* Get list of department objects */ $ldap= $this->get_ldap_link(); @@ -496,11 +531,18 @@ class config { $ldap->search ("(objectClass=gosaDepartment)", array("ou", "objectClass", "gosaUnitTag")); while ($attrs= $ldap->fetch()){ $dn= $ldap->getDN(); + $this->tdepartments[$dn]= ""; /* Save administrative departments */ if (in_array_ics("gosaAdministrativeUnit", $attrs['objectClass']) && isset($attrs['gosaUnitTag'][0])){ $administrative[$dn]= $attrs['gosaUnitTag'][0]; + $this->tdepartments[$dn]= $attrs['gosaUnitTag'][0]; + } + + if (in_array_ics("gosaAdministrativeUnitTag", $attrs['objectClass']) && + isset($attrs['gosaUnitTag'][0])){ + $this->tdepartments[$dn]= $attrs['gosaUnitTag'][0]; } if ($dn == $ignore_dn){ @@ -524,12 +566,21 @@ class config { $base = $config->current['BASE']; $arr = array(); + $ui= get_userinfo(); $this->idepartments= array(); /* Create multidimensional array, with all departments. */ foreach ($this->departments as $key => $val){ + /* When using strict_units, filter non relevant parts */ + if (isset($config->current['STRICT_UNITS']) && preg_match('/true/i', $config->current['STRICT_UNITS'])){ + if ($ui->gosaUnitTag != "" && isset($this->tdepartments[$val]) && + $this->tdepartments[$val] != $ui->gosaUnitTag){ + continue; + } + } + /* remove base from dn */ $val2 = str_replace($base,"",$val); @@ -619,46 +670,57 @@ class config { function getShareList($listboxEntry = false) { $ldap= $this->get_ldap_link(); - $a_res = $ldap->search("(objectClass=goShareServer)",array("goExportEntry","cn")); - $return= array(); - while($entry = $ldap->fetch($a_res)){ - if(isset($entry['goExportEntry']['count'])){ - unset($entry['goExportEntry']['count']); - } - if(isset($entry['goExportEntry'])){ - foreach($entry['goExportEntry'] as $export){ - $shareAttrs = split("\|",$export); - if($listboxEntry) { - $return[$shareAttrs[0]."|".$entry['cn'][0]] = $shareAttrs[0]." - ".$entry['cn'][0]; - }else{ - $return[$shareAttrs[0]."|".$entry['cn'][0]]['server'] = $entry['cn'][0]; - $return[$shareAttrs[0]."|".$entry['cn'][0]]['name'] = $shareAttrs[0]; - $return[$shareAttrs[0]."|".$entry['cn'][0]]['description'] = $shareAttrs[1]; - $return[$shareAttrs[0]."|".$entry['cn'][0]]['type'] = $shareAttrs[2]; - $return[$shareAttrs[0]."|".$entry['cn'][0]]['charset'] = $shareAttrs[3]; - $return[$shareAttrs[0]."|".$entry['cn'][0]]['path'] = $shareAttrs[4]; - $return[$shareAttrs[0]."|".$entry['cn'][0]]['option'] = $shareAttrs[5]; + $base = $this->current['BASE']; + $res= get_list("(&(objectClass=goShareServer)(goExportEntry=*))","server",$base,array("goExportEntry","cn"),GL_SUBSEARCH); + $return = array(); + + foreach($res as $entry){ + if(obj_is_readable($entry['dn'], "server/goShareServer","goExportEntry")){ + + if(isset($entry['goExportEntry']['count'])){ + unset($entry['goExportEntry']['count']); + } + if(isset($entry['goExportEntry'])){ + foreach($entry['goExportEntry'] as $export){ + $shareAttrs = split("\|",$export); + if($listboxEntry) { + $return[$shareAttrs[0]."|".$entry['cn'][0]] = $shareAttrs[0]." - ".$entry['cn'][0]; + }else{ + $return[$shareAttrs[0]."|".$entry['cn'][0]]['server'] = $entry['cn'][0]; + $return[$shareAttrs[0]."|".$entry['cn'][0]]['name'] = $shareAttrs[0]; + $return[$shareAttrs[0]."|".$entry['cn'][0]]['description'] = $shareAttrs[1]; + $return[$shareAttrs[0]."|".$entry['cn'][0]]['type'] = $shareAttrs[2]; + $return[$shareAttrs[0]."|".$entry['cn'][0]]['charset'] = $shareAttrs[3]; + $return[$shareAttrs[0]."|".$entry['cn'][0]]['path'] = $shareAttrs[4]; + $return[$shareAttrs[0]."|".$entry['cn'][0]]['option'] = $shareAttrs[5]; + } } } - } + } } + return($return); } /* This function returns all available ShareServer */ function getShareServerList() { - $ldap= $this->get_ldap_link(); - $a_res = $ldap->search("(&(objectClass=goShareServer)(goExportEntry=*))",array("goExportEntry","cn")); - $return= array(); - while($entry = $ldap->fetch($a_res)){ - if(isset($entry['goExportEntry']['count'])){ - unset($entry['goExportEntry']['count']); - } - foreach($entry['goExportEntry'] as $share){ - $a_share = split("\|",$share); - $sharename = $a_share[0]; - $return[$entry['cn'][0]."|".$sharename] = $entry['cn'][0]." [".$sharename."]"; + global $config; + $return = array(); + $ui = get_userinfo(); + $base = $config->current['BASE']; + + $res= get_list("(&(objectClass=goShareServer)(goExportEntry=*))", "server", $base,array("goExportEntry","cn"),GL_SUBSEARCH); + foreach($res as $entry){ + if(obj_is_readable($entry['dn'], "server/goShareServer","goExportEntry")){ + if(isset($entry['goExportEntry']['count'])){ + unset($entry['goExportEntry']['count']); + } + foreach($entry['goExportEntry'] as $share){ + $a_share = split("\|",$share); + $sharename = $a_share[0]; + $return[$entry['cn'][0]."|".$sharename] = $entry['cn'][0]." [".$sharename."]"; + } } } return($return);