/**
  * Prueft ob der User im LDAP angelegt ist
  * @param $username UID des Users
  * @return boolean true wenn vorhanden, sonst false
  */
 public function UserExternalExists($username)
 {
     // Alle vorhandenen LDAP Server nacheinander durchlaufen
     // bis einer passt.
     foreach ($this->ldap_config as $ldap) {
         $ldap_obj = new ldap();
         // Verbindung zum Server
         if ($ldap_obj->connect($ldap['LDAP_SERVER'], $ldap['LDAP_PORT'], $ldap['LDAP_BIND_USER'], $ldap['LDAP_BIND_PASSWORD'], $ldap['LDAP_STARTTLS'])) {
             // User suchen
             if ($userdn = $ldap_obj->GetUserDN($username, $ldap['LDAP_BASE_DN'], $ldap['LDAP_USER_SEARCH_FILTER'])) {
                 $ldap_obj->unbind();
                 return true;
             }
         }
         $ldap_obj->unbind();
     }
     return false;
 }
 /**
  * Aendert das Passwort im LDAP
  * @param $passwort_alt Altes (aktuelles) Passwort
  * @param $passwort_neu neues Passwort
  * @param $uid UID
  * @return true wenn erfolgreich sonst false
  */
 function change_password($passwort_alt, $passwort_neu, $uid)
 {
     $ldap = new ldap();
     // Normalen Bind zum LDAP Server
     if ($ldap->connect()) {
         // DN des Users holen
         if ($user_dn = $ldap->GetUserDN($uid)) {
             $ldap->unbind();
             $ldap = new ldap();
             // Bind des User mit alten Passwort
             if ($ldap->connect(LDAP_SERVER_MASTER, LDAP_PORT, $user_dn, $passwort_alt, LDAP_STARTTLS)) {
                 // Passwort verschlüsseln
                 //SSHA
                 $salt = substr(pack('H*', hash('sha1', substr(pack('h*', hash('md5', mt_rand())), 0, 8) . $passwort_neu)), 0, 4);
                 $encrypted = base64_encode(pack('H*', hash('sha1', $passwort_neu . $salt)) . $salt);
                 $ssha_password = '******' . $encrypted;
                 // LM und NT
                 //$hash = new Crypt_CHAP_MSv2();
                 //$hash->password = $passwort_neu;
                 // $lm_password = strtoupper(bin2hex($hash->lmPasswordHash()));
                 //$nt_password = strtoupper(bin2hex($hash->ntPasswordHash()));
                 // Neues Passwort setzen
                 $data = array();
                 $data['userPassword'] = $ssha_password;
                 // $data['sambaLMPassword']=$lm_password;
                 //$data['sambaNTPassword']=$nt_password;
                 //$data['sambaPwdLastSet']=time();
                 //$data['sambaPwdMustChange']=2147483647; // 2038-01-19 04:14:07
                 if ($ldap->Modify($user_dn, $data)) {
                     return true;
                 } else {
                     return false;
                 }
             } else {
                 return $ldap->errormsg;
             }
         } else {
             return $ldap->errormsg;
         }
     } else {
         return $ldap->errormsg;
     }
 }