1// $OpenLDAP$
2/*
3 * Copyright 2000-2011 The OpenLDAP Foundation, All Rights Reserved.
4 * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5 */
6
7#include <iostream>
8#include <sstream>
9#include "LDAPConnection.h"
10#include "LDAPConstraints.h"
11#include "LDAPSearchReference.h"
12#include "LDAPSearchResults.h"
13#include "LDAPAttribute.h"
14#include "LDAPAttributeList.h"
15#include "LDAPEntry.h"
16#include "LDAPException.h"
17#include "LDAPModification.h"
18
19#include "debug.h"
20
21int main(){
22    LDAPConstraints* cons=new LDAPConstraints;
23    LDAPControlSet* ctrls=new LDAPControlSet;
24    ctrls->add(LDAPCtrl(LDAP_CONTROL_MANAGEDSAIT));
25    cons->setServerControls(ctrls);
26    LDAPConnection *lc=new LDAPConnection("localhost",9009);
27    lc->setConstraints(cons);
28    std::cout << "----------------------doing bind...." << std::endl;
29    try{
30        lc->bind("cn=Manager,o=Organisation,c=DE" , "secret",cons);
31        std::cout << lc->getHost() << std::endl;
32        bool result = lc->compare("cn=Manager,o=Organisation,c=DE",
33                LDAPAttribute("cn","Manaer"));
34        std::cout << "Compare: " << result << std::endl;
35
36        LDAPAttributeList* attrs=new LDAPAttributeList();
37        StringList values;
38        StringList s2;
39        values.add("top");
40        values.add("Person");
41        attrs->addAttribute(LDAPAttribute("objectClass",values));
42        attrs->addAttribute(LDAPAttribute("cn","Peter"));
43        attrs->addAttribute(LDAPAttribute("sn","Peter,hallo"));
44        LDAPEntry* entry=new LDAPEntry(
45                "cn=Peter , o=Organisation, c=DE", attrs);
46//        lc->add(entry);
47
48//        lc->del("ou=Groups,o=Organisation,c=DE");
49
50        LDAPSearchResults* entries = lc->search("o=Organisation,c=DE",
51                LDAPConnection::SEARCH_ONE);
52        if (entries != 0){
53            LDAPEntry* entry = entries->getNext();
54            if(entry != 0){
55                std::cout << *(entry) << std::endl;
56            }
57            while(entry){
58                try{
59                    entry = entries->getNext();
60                    if(entry != 0){
61                        std::cout << *(entry) << std::endl;
62                    }
63                    delete entry;
64                }catch(LDAPReferralException e){
65                    std::cout << "Caught Referral" << std::endl;
66                }
67            }
68        }
69
70        lc->unbind();
71        delete lc;
72   }catch (LDAPException &e){
73        std::cout << "-------------- caught Exception ---------"<< std::endl;
74        std::cout << e << std::endl;
75    }
76
77    /*
78    std::cout << "--------------------starting search" << std::endl;
79    LDAPAttributeList* attrs=new LDAPAttributeList();
80    StringList values;
81    values.add("top");
82    values.add("organizationalUnit");
83    attrs->addAttribute(LDAPAttribute("objectClass",values));
84    attrs->addAttribute(LDAPAttribute("ou","Groups"));
85    LDAPEntry* entry=new LDAPEntry(
86            "ou=Groups, o=Organisation, c=DE", attrs);
87
88    LDAPAttribute newattr("description");
89    LDAPModification::mod_op op = LDAPModification::OP_DELETE;
90    LDAPModList *mod=new LDAPModList();
91    mod->addModification(LDAPModification(newattr,op));
92    LDAPMessageQueue* q=0;
93    try{
94        q=lc->search("o=Organisation,c=de",LDAPAsynConnection::SEARCH_SUB,
95         "objectClass=*",StringList());
96//        q=lc->add(entry);
97//        q=lc->modify("cn=Manager,o=Organisation,c=DE",
98//                mod);
99        LDAPMsg *res=q->getNext();
100        bool cont=true;
101        while( cont  ) {
102            switch(res->getMessageType()){
103                LDAPSearchResult *res2;
104                const LDAPEntry *entry;
105                case LDAP_RES_SEARCH_ENTRY :
106                    res2= (LDAPSearchResult*)res;
107                    entry=  res2->getEntry();
108                    std::cout << "Entry:            " << *entry << std::endl;
109                    delete res;
110                    res=q->getNext();
111                break;
112                case LDAP_RES_SEARCH_REFERENCE :
113                    std::cout << "Reference:         "  << std::endl;
114                    delete res;
115                    res=q->getNext();
116                break;
117                default :
118                    std::cout << ( *(LDAPResult*) res) << std::endl;
119                    delete res;
120                    std::cout  << "-----------------search done" << std::endl;
121                    cont=false;
122                break;
123            }
124        }
125        delete q;
126    }catch (LDAPException e){
127        std::cout << "----------------error during search" << std::endl;
128        delete q;
129        std::cout << e << std::endl;
130    }
131    lc->unbind();
132    */
133}
134
135