LDAP avec cURL

Fermé
Ronieee Messages postés 70 Date d'inscription jeudi 30 juillet 2009 Statut Membre Dernière intervention 6 février 2013 - 8 févr. 2011 à 11:54
Ronieee Messages postés 70 Date d'inscription jeudi 30 juillet 2009 Statut Membre Dernière intervention 6 février 2013 - 8 févr. 2011 à 14:33
Bonjour,

Je dois créer un client LDAP en C++.
J'ai d'abord essayer de travailler avec OpenLDAP, puis on m'a fait remarquer que la librairie cURL (que je possède déjà dans mon projet dans une autre section) supportait le protocole LDAP.

J'aimerais savoir si quelqu'un avait un sample pour voir comment s'utilisait ces fonctionnalités.

De plus, j'aimerais savoir si, comme j'ai vu que cURL s'appuyait justement d'OpenLDAP, Est-ce que je dois aussi avoir les librairies d'OpenLDAP pour utiliser les fonctionnalités LDAP sous cURL ?

1 réponse

Ronieee Messages postés 70 Date d'inscription jeudi 30 juillet 2009 Statut Membre Dernière intervention 6 février 2013 38
8 févr. 2011 à 14:33
Bon, pour ceux que ca intéresse.

Si l'on veut utiliser les commandes LDAP avec la libcurl en C++, il faut bien posséder les librairies OpenLDAP dans son package.

De plus, pour ceux qui cherche un bout de code d'utilisation du LDAP avec cURL C++ : j'ai codé une version, que je n'ai pas pu tester. Je ne saurais dire si elle est juste ou non, mais je l'ai retranscrit d'un code php et ca devrait normalement marcher... :


size_t ws_write(char *ptr, size_t size, size_t nmemb, std::stringstream *stream) {
if(stream != NULL) { stream->write(ptr, size * nmemb); }
return size * nmemb;
}


int Ldap::getentries( ){

CURL *curl;
CURLcode ret;
std::stringstream out_stream;

std::string data;
std::string url="ldap://ldap.mondomaine.fr/dc=example,dc=com";
/*
ldap://hôte:port/DN?attributs?profondeur?filtre?extension
DN : le DN à partir duquel effectuer la recherche ;
attributs : liste contenant les attributs à renvoyer, séparés par des virgules ;
profondeur : base (par défaut), one ou sub pour la profondeur de la recherche ;
filtre : le filtre de recherche ;
extension : extensions éventuelles du format d'URL LDAP.
*/

curl = curl_easy_init();
// Options necessaires a la recuperation des donnees demandees
ret = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, ws_write);
ret = curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out_stream);
// Options de connection
ret = curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
ret = curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);
ret = curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10);

// Execution commande
ret = curl_easy_perform(curl);
if(ret != CURLE_OK){ cout << Ldap Error : << curl_easy_strerror(ret); }
curl_easy_cleanup(curl);

data = out_stream.str().c_str();
if( data == "" ) data = "$NotFound";

return 0;
}
0