LDAP Client in C
-
#include <windows.h> #include <winsock2.h> #include <stdio.h> int startWinsock(void); /************************************** Hauptprogramm *************************************/ int main() { printf("************************************************\n* LDAP-Client *"); printf("\n************************************************\n"); /*--------------------------------- Variablen definieren ---------------------------------*/ long rc; SOCKET s; SOCKADDR_IN addr; char buf[256]; char ip_addr[16]; char auswahl; /*---------------------------------------- Winsock ---------------------------------------*/ rc=startWinsock(); if(rc!=0) { printf("Fehler: startWinsock, fehler code: %d\n",rc); return(1); } /*---------------------------------------- Socket ----------------------------------------*/ s=socket(AF_INET,SOCK_STREAM,0); if(s==INVALID_SOCKET) { printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError()); return(1); } /*---------------------------------- Verbindungsteil -------------------------------------*/ memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten addr.sin_family=AF_INET; printf("\n [1]: Servereingabe [2]: Testserver\n"); printf(" Auswahl: "); scanf("%s", &auswahl); printf("------------------------------------------------\n"); switch(auswahl) { case '1': printf("Servereingabe: "); scanf("%15s", ip_addr); addr.sin_port=htons(389); // Wellknown Port addr.sin_addr.s_addr=inet_addr(ip_addr); rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); if(rc==SOCKET_ERROR) { printf("\nVerbindung gescheitert, Code: %d\n\n",WSAGetLastError()); } else { printf("\nVerbunden mit: %s\n", ip_addr); } break; case '2': addr.sin_port=htons(389); // Wellknown Port addr.sin_addr.s_addr=inet_addr("137.30.1.21"); // Testserver rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); if(rc==SOCKET_ERROR) { printf("\nVerbindung gescheitert, Code: %d\n\n",WSAGetLastError()); } else { printf("\nVerbunden mit: ldap.uno.edu\n\n"); } break; default: break; } closesocket(s); // Socket schließen WSACleanup(); system("Pause"); // Programm mit beliebiger Taste beenden } /******************************************************************************************/ int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }
Das ist mein Client der auch funktioniert wenn ich ihn complimiere...
Ich möchte allerdings eine ldapsearch-anfrage und Auswertung einbauen.
Ich habe dann noch eine Variable:
char ldapsearch[]="ldapsearch"; //Befehlssysntax fehlt mirIch dachte daran mit write() zu senden und mit read() zu empfangen und danach sollten die Suchergebnisse in einer Datei gespeichert werden.
Kann mir jemand helfen?
Gruß Sven
-
-
Ja danke das ist die RFC die hatte ich bereits angeschaut,...
Das ist das erste Mal, das ich damit arbeite.
http://tools.ietf.org/html/rfc4515
In dieser stehen die Daten denke ich drin, oder?
Ich will das ja erstmal garnicht Variabel programmieren, sondern mit einem festen Suchbegriff...
Weitere Hilfen nehme ich gerne an
Gruß Sven
-
Windows kommt doch mit einem LDAP Client daher bzw die Server auch mit einem LDAP Server . DNS Zone aufsetzten ( Sufix anpassen vorher ) , dann dcpromo in der Shell.
Um mit einem Linux LDAP zu komunizieren gibt es auch Möglichkeiten über die SUA.
Vorteile der MS Verison ist das Zusammenspiel vom LDAP und dem geteilten Kerberos Dienst sowie GP´s und diverses anderes.