X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_ldap.inc;h=e5809d72099e075eb69c1fdbd23d80e1c098f6b7;hb=6cd6e23d05122acac3b3e678c02f2f1643076dd1;hp=d79ef172c56dbb7e9dcb41bb1e35e10a301b0f14;hpb=a6adf1367875e163868e5eb847a6495abcefe45d;p=gosa.git diff --git a/include/class_ldap.inc b/include/class_ldap.inc index d79ef172c..e5809d720 100644 --- a/include/class_ldap.inc +++ b/include/class_ldap.inc @@ -1,7 +1,7 @@ + Copyright (C) 2003 Alejandro Escanero Blanco Copyright (C) 2004-2006 Cajus Pollmeier Based in code of ldap.inc of @@ -197,6 +197,7 @@ class LDAP{ } } + $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=search('".$this->fix($this->basedn)."', '$filter')"); return($this->sr); }else{ $this->error = "Could not connect to LDAP server"; @@ -229,6 +230,8 @@ class LDAP{ } } + $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=ls('".$this->fix($basedn)."', '$filter')"); + return($this->sr); }else{ $this->error = "Could not connect to LDAP server"; @@ -281,7 +284,7 @@ class LDAP{ if ($this->re) { $att= @ldap_get_attributes($this->cid, $this->re); - $att['dn']= $this->convert(@ldap_get_dn($this->cid, $this->re)); + $att['dn']= trim($this->convert(@ldap_get_dn($this->cid, $this->re))); } $this->error = @ldap_error($this->cid); if (!isset($att)){ @@ -325,7 +328,7 @@ class LDAP{ $rv = @ldap_get_dn($this->cid, $this->re); $this->error = @ldap_error($this->cid); - return($this->convert($rv)); + return(trim($this->convert($rv))); } }else{ $this->error = "Perform a Fetch with no Search"; @@ -527,7 +530,7 @@ class LDAP{ /* If this is no department */ foreach($attr as $key => $value){ - if(in_array($key ,array("FAItemplateFile","FAIscript", "gotoLogonScript", "gosaApplicationIcon"))){ + if(in_array($key ,array("FAItemplateFile","FAIscript", "gotoLogonScript", "gosaApplicationIcon","gotoMimeIcon"))){ $sr= ldap_read($this->cid, $this->fix($sourcedn), "$key=*", array($key)); $ei= ldap_first_entry($this->cid, $sr); if ($tmp= @ldap_get_values_len($this->cid, $ei,$key)){ @@ -545,7 +548,7 @@ class LDAP{ unset($attr['count']); unset($attr['dn']); - if(!in_array("gosaApplication" , $attr['objectClass'])){ + if((!in_array("gosaApplication" , $attr['objectClass'])) && (!in_array("gotoMimeType", $attr['objectClass']))){ if($type=="branch"){ $attr['FAIstate'] ="branch"; }elseif($type=="freeze"){ @@ -642,7 +645,7 @@ class LDAP{ } $real_path= substr($target, 0, strlen($target) - strlen($this->basedn) -1 ); - $l= array_reverse(ldap_explode_dn($real_path,0)); + $l= array_reverse(gosa_ldap_explode_dn($real_path)); unset($l['count']); $cdn= $this->basedn; $tag= ""; @@ -1058,9 +1061,17 @@ class LDAP{ } /* Split the line into attribute and value */ - $attr = split(":", $row); + $attr = split(":", $row,2); $attr[0]= trim($attr[0]); /* attribute */ - $attr[1]= trim($attr[1]); /* value */ + $attr[1]= $attr[1]; /* value */ + + /* Check :: was used to indicate base64_encoded strings */ + if($attr[1][0] == ":"){ + $attr[1]=trim(preg_replace("/^:/","",$attr[1])); + $attr[1]=base64_decode($attr[1]); + } + + $attr[1] = trim($attr[1]); /* Check for attributes that are used more than once */ if(!isset($data[$attr[0]])) { @@ -1087,7 +1098,7 @@ class LDAP{ if(isset($data['dn'])) { /* Fix dn */ - $tmp = ldap_explode_dn($data['dn'],0); + $tmp = gosa_ldap_explode_dn($data['dn']); unset($tmp['count']); $newdn =""; foreach($tmp as $tm){ @@ -1108,6 +1119,7 @@ class LDAP{ $this->cd ($this->basedn); $this->create_missing_trees($data['dn']); $this->cd($data['dn']); + $dn = $data['dn']; unset($data['dn']); @@ -1140,7 +1152,7 @@ class LDAP{ $ret = $this->modify($data); } } - show_ldap_error($this->get_error(),_("Ldap import failed")); + show_ldap_error($this->get_error(), sprintf(_("Ldap import with dn '%s' failed."),$dn)); return($ret); } @@ -1196,6 +1208,15 @@ class LDAP{ return $objectclasses; } + function log($string) + { + if (isset($_SESSION['config'])){ + $cfg= $_SESSION['config']; + if (isset($cfg->current['LDAPSTATS']) && preg_match('/true/i', $cfg->current['LDAPSTATS'])){ + syslog (LOG_INFO, $string); + } + } + } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: