X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_ldap.inc;h=1973c820b5a408931b378533829a10d632d1f16b;hb=7da42021bacbd916f09c39b742509482c185c699;hp=1a8ec8050393c2e349d4c20e942884d7d49c4538;hpb=e4478f3806d8a8b952c13904d794f5cdf87b6889;p=gosa.git diff --git a/include/class_ldap.inc b/include/class_ldap.inc index 1a8ec8050..1973c820b 100644 --- a/include/class_ldap.inc +++ b/include/class_ldap.inc @@ -37,7 +37,7 @@ class LDAP{ global $config; $this->follow_referral= $follow_referral; $this->tls=$tls; - $this->binddn=$this->convert($binddn); + $this->binddn=LDAP::convert($binddn); $this->bindpw=$bindpw; $this->hostname=$hostname; @@ -62,7 +62,7 @@ class LDAP{ ( => OB ) => CB / => SL */ - function convert($dn) + static function convert($dn) { if (SPECIALS_OVERRIDE == TRUE){ $tmp= preg_replace(array("/\\\\,/", "/\\\\2C/", "/\(/", "/\)/", "/\//"), @@ -79,7 +79,7 @@ class LDAP{ codes to their original values. See "convert" for mor information. ',' characters are always expanded to \, (not \2C), since all tested LDAP servers seem to take it the correct way. */ - function fix($dn) + static function fix($dn) { if (SPECIALS_OVERRIDE == TRUE){ return (preg_replace(array("/\001CO/", "/\001OB/", "/\001CB/", "/\001SL/"), @@ -106,7 +106,7 @@ class LDAP{ } $this->error = "No Error"; - if ($bid = @ldap_bind($this->cid, $this->fix($this->binddn), $this->bindpw)) { + if ($bid = @ldap_bind($this->cid, LDAP::fix($this->binddn), $this->bindpw)) { $this->error = "Success"; $this->hascon=true; } else { @@ -126,7 +126,7 @@ class LDAP{ function rebind($ldap, $referral) { $credentials= $this->get_credentials($referral); - if (@ldap_bind($ldap, $this->fix($credentials['ADMIN']), $credentials['PASSWORD'])) { + if (@ldap_bind($ldap, LDAP::fix($credentials['ADMIN']), $credentials['PASSWORD'])) { $this->error = "Success"; $this->hascon=true; $this->reconnect= true; @@ -164,7 +164,7 @@ class LDAP{ if ($dir == "..") $this->basedn = $this->getParentDir(); else - $this->basedn = $this->convert($dir); + $this->basedn = LDAP::convert($dir); } function getParentDir($basedn = "") @@ -172,7 +172,7 @@ class LDAP{ if ($basedn=="") $basedn = $this->basedn; else - $basedn = $this->convert($this->basedn); + $basedn = LDAP::convert($this->basedn); return(ereg_replace("[^,]*[,]*[ ]*(.*)", "\\1", $basedn)); } @@ -184,7 +184,7 @@ class LDAP{ $start = microtime(); $this->clearResult(); - $this->sr = @ldap_search($this->cid, $this->fix($this->basedn), $filter, $attrs); + $this->sr = @ldap_search($this->cid, LDAP::fix($this->basedn), $filter, $attrs); $this->error = @ldap_error($this->cid); $this->resetResult(); $this->hasres=true; @@ -197,7 +197,7 @@ class LDAP{ } } - $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=search('".$this->fix($this->basedn)."', '$filter')"); + $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=search('".LDAP::fix($this->basedn)."', '$filter')"); return($this->sr); }else{ $this->error = "Could not connect to LDAP server"; @@ -213,11 +213,10 @@ class LDAP{ if ($basedn == "") $basedn = $this->basedn; else - $basedn= $this->convert($basedn); + $basedn= LDAP::convert($basedn); $start = microtime(); - - $this->sr = @ldap_list($this->cid, $this->fix($basedn), $filter,$attrs); + $this->sr = @ldap_list($this->cid, LDAP::fix($basedn), $filter,$attrs); $this->error = @ldap_error($this->cid); $this->resetResult(); $this->hasres=true; @@ -230,7 +229,7 @@ class LDAP{ } } - $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=ls('".$this->fix($basedn)."', '$filter')"); + $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=ls('".LDAP::fix($basedn)."', '$filter')"); return($this->sr); }else{ @@ -245,7 +244,7 @@ class LDAP{ if ($this->reconnect) $this->connect(); $this->clearResult(); $filter = "(objectclass=*)"; - $this->sr = @ldap_read($this->cid, $this->fix($dn), $filter,$attrs); + $this->sr = @ldap_read($this->cid, LDAP::fix($dn), $filter,$attrs); $this->error = @ldap_error($this->cid); $this->resetResult(); $this->hasres=true; @@ -276,15 +275,19 @@ class LDAP{ if($this->hasres){ if ($this->start == 0) { - $this->start = 1; - $this->re= @ldap_first_entry($this->cid, $this->sr); + if ($this->sr){ + $this->start = 1; + $this->re= @ldap_first_entry($this->cid, $this->sr); + } else { + return array(); + } } else { $this->re= @ldap_next_entry($this->cid, $this->re); } if ($this->re) { $att= @ldap_get_attributes($this->cid, $this->re); - $att['dn']= trim($this->convert(@ldap_get_dn($this->cid, $this->re))); + $att['dn']= trim(LDAP::convert(@ldap_get_dn($this->cid, $this->re))); } $this->error = @ldap_error($this->cid); if (!isset($att)){ @@ -328,7 +331,7 @@ class LDAP{ $rv = @ldap_get_dn($this->cid, $this->re); $this->error = @ldap_error($this->cid); - return(trim($this->convert($rv))); + return(trim(LDAP::convert($rv))); } }else{ $this->error = "Perform a Fetch with no Search"; @@ -364,7 +367,7 @@ class LDAP{ if ($dn == "") $dn = $this->basedn; - $r = @ldap_mod_del($this->cid, $this->fix($dn), $attrs); + $r = @ldap_mod_del($this->cid, LDAP::fix($dn), $attrs); $this->error = @ldap_error($this->cid); return($r); }else{ @@ -380,7 +383,7 @@ class LDAP{ if ($dn == "") $dn = $this->basedn; - $r = @ldap_mod_replace($this->cid, $this->fix($dn), $attrs); + $r = @ldap_mod_replace($this->cid, LDAP::fix($dn), $attrs); $this->error = @ldap_error($this->cid); return($r); }else{ @@ -393,7 +396,7 @@ class LDAP{ { if($this->hascon){ if ($this->reconnect) $this->connect(); - $r = @ldap_delete($this->cid, $this->fix($deletedn)); + $r = @ldap_delete($this->cid, LDAP::fix($deletedn)); $this->error = @ldap_error($this->cid); return($r ? $r : 0); }else{ @@ -432,7 +435,7 @@ class LDAP{ } /* Finally Delete own Node */ - $r = @ldap_delete($this->cid, $this->fix($deletedn)); + $r = @ldap_delete($this->cid, LDAP::fix($deletedn)); $this->error = @ldap_error($this->cid); return($r ? $r : 0); }else{ @@ -445,19 +448,19 @@ class LDAP{ */ function copy_FAI_resource_recursive($sourcedn,$destinationdn,$destinationName,$type="branch",$is_first = true,$depth=0) { - error_reporting(E_ALL); + error_reporting(E_ALL | E_STRICT); if($is_first){ - echo "