====== PHP & LDAP ====== function show_a_person2($host, $path, $racine, $userdn, $pass) { $ds=ldap_connect($host); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); $fullPath=$path.",".$racine ; $rootdn="cn=admin,".$racine; $rootpw="your pass"; $r=@ldap_bind($ds,$rootdn,$rootpw); if($ds && $r) { $sr=ldap_search($ds, $fullPath, "objectclass=*"); $info = ldap_get_entries($ds, $sr); for ($i=0;$i<$info["count"];$i++) { $res["cn"] = $info[$i]["cn"][0]; $res["gecos"] = $info[$i]["gecos"][0]; $res["gidnumber"] = $info[$i]["gidnumber"][0]; $res["homedirectory"] = $info[$i]["homedirectory"][0]; $res["loginshell"] = $info[$i]["loginshell"][0]; $res["uid"] = $info[$i]["uid"][0]; $res["uidnumber"] = $info[$i]["uidnumber"][0]; $res["userpassword"] = $info[$i]["userpassword"][0]; } return $res ; } else { return "Erreur de connexion" ; } } /* * Ajouter une personne dans le LDAP */ function ldapAddUser($login,$clearpass, $loginshell, $gidnumber, $uidnumber, $homedirectory) { $ds = connectLdap(getHost(),getUserAdminDn(),getPassAdminDn); if($ds) { $r=ldap_bind($ds,getUserAdminDn(),getPassAdminDn()); $info["uid"] = $login ; $info["cn"] = $login ; $info["objectClass"][0] = "account" ; $info["objectClass"][1] = "posixAccount" ; $info["objectClass"][2] = "top" ; $info["userPassword"] = "{crypt}".constructPass($clearpass); $info["loginShell"] = $loginshell ; $info["uidNumber"] = $uidnumber ; $info["gidNumber"] = $gidnumber ; $info["homeDirectory"] = $homedirectory ; $dn = "uid=".$login.",ou=people,ou=litis-lehavre,dc=litislab,dc=eu"; $res = ldap_add($ds, $dn, $info); $res = ldap_err2str( ldap_errno($ds) ); ldap_close($ds); return $res ; } } /** * Authentification */ function authentification($user, $ldappass) { $server="172.17.21.77"; $ldaprdn="uid=".$user.",ou=people,ou=litis-lehavre,dc=litislab,dc=eu"; $ds=ldap_connect($server); // doit ĂȘtre un serveur LDAP valide ! ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); if ($ds) { $r=@ldap_bind($ds, $ldaprdn, $ldappass); // connexion // Identification if ($r) { return true ; } else { return false ; } ldap_close($ds); } else { return 2 ; } } /** * connect LDAP */ function connectLdap($host,$userDn,$userPasswd) { $ds=ldap_connect($host); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); $r=@ldap_bind($ds,$userDn,$userPasswd); return $r ; } function disconnectLdap($ds) { return ldap_unbind($ds) ; } /** * list_of_people */ function list_of_people($host, $path, $racine, $userDn, $userPasswd) { $ds=ldap_connect($host); $fullPath=$path.",".$racine ; ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); $r=@ldap_bind($ds,$userDn,$userPasswd); if($ds) { //$sr=ldap_search($ds, $fullPath, "objectclass=*"); $sr=ldap_search($ds, $fullPath, "uid=jbaudry"); $info = ldap_get_entries($ds, $sr); for ($i=0;$i<$info["count"];$i++) { $res[$i]["uid"]=$info[$i]["uid"][0]; $res[$i]["cn"]=$info[$i]["cn"][0]; //echo $info[$i]["uid"][0]; } return $res ; } else { return "Erreur de connexion" ; } } function getCn($uid) { $host="ldap.litislab.eu" ; $path="ou=people,ou=litis" ; $racine="dc=litislab,dc=eu"; $userDn="cn=Julien BAUDRY,ou=people,ou=litis,dc=litislab,dc=eu"; $userPasswd="password"; $ds=ldap_connect($host); $fullPath=$path.",".$racine ; ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); $r=@ldap_bind($ds,$userDn,$userPasswd); if($ds) { $sr=ldap_search($ds, $fullPath, "uid=".$uid); $info = ldap_get_entries($ds, $sr); for ($i=0;$i<$info["count"];$i++) { $res[$i]["uid"]=$info[$i]["uid"][0]; $res[$i]["cn"]=$info[$i]["cn"][0]; } return $res[0]["cn"] ; } else { return 0 ; } } function ldapModifyPasswd2($login,$clearpass) { $ds = connectLdap(getHost(),getUserAdminDn(),getPassAdminDn); echo "login = ".$login ; if($ds) { $r=ldap_bind($ds,getUserAdminDn(),getPassAdminDn()); $new["userPassword"]= "{crypt}".constructPass($clearpass); echo $new["userPassword"]."--".$clearpass ; $dn = "uid=".$login.",ou=people,ou=litis-lehavre,dc=litislab,dc=eu"; $res=ldap_modify($ds, $dn, $new); disconnectLdap($ds); } else { echo "Connexion au serveur LDAP impossible"; } return $res; } /** * Genere un salt alĂ©atoire de 8 caracteres */ function generateSalt($length) { return substr(str_shuffle("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length); } function constructPass($text) { return crypt($text,'$1$'.generateSalt('8')); } function getUserAdminDn() { return "cn=admin,dc=litislab,dc=eu"; } function create_password($length=8,$use_upper=1,$use_lower=1,$use_number=1,$use_custom=""){ $upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $lower = "abcdefghijklmnopqrstuvwxyz"; $number = "0123456789"; if($use_upper){ $seed_length += 26; $seed .= $upper; } if($use_lower){ $seed_length += 26; $seed .= $lower; } if($use_number){ $seed_length += 10; $seed .= $number; } if($use_custom){ $seed_length +=strlen($use_custom); $seed .= $use_custom; } for($x=1;$x<=$length;$x++){ $password .= $seed{rand(0,$seed_length-1)}; } return($password); }