xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/examples/main.cpp (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
1d11b170bStron // $OpenLDAP$
22de962bdSlukem /*
3*e670fd5cSchristos  * Copyright 2000-2021 The OpenLDAP Foundation, All Rights Reserved.
42de962bdSlukem  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
52de962bdSlukem  */
62de962bdSlukem 
72de962bdSlukem #include <iostream>
82de962bdSlukem #include <sstream>
92de962bdSlukem #include "LDAPConnection.h"
102de962bdSlukem #include "LDAPConstraints.h"
112de962bdSlukem #include "LDAPSearchReference.h"
122de962bdSlukem #include "LDAPSearchResults.h"
132de962bdSlukem #include "LDAPAttribute.h"
142de962bdSlukem #include "LDAPAttributeList.h"
152de962bdSlukem #include "LDAPEntry.h"
162de962bdSlukem #include "LDAPException.h"
172de962bdSlukem #include "LDAPModification.h"
182de962bdSlukem 
192de962bdSlukem #include "debug.h"
202de962bdSlukem 
main()212de962bdSlukem int main(){
222de962bdSlukem     LDAPConstraints* cons=new LDAPConstraints;
232de962bdSlukem     LDAPControlSet* ctrls=new LDAPControlSet;
242de962bdSlukem     ctrls->add(LDAPCtrl(LDAP_CONTROL_MANAGEDSAIT));
252de962bdSlukem     cons->setServerControls(ctrls);
262de962bdSlukem     LDAPConnection *lc=new LDAPConnection("localhost",9009);
272de962bdSlukem     lc->setConstraints(cons);
282de962bdSlukem     std::cout << "----------------------doing bind...." << std::endl;
292de962bdSlukem     try{
302de962bdSlukem         lc->bind("cn=Manager,o=Organisation,c=DE" , "secret",cons);
312de962bdSlukem         std::cout << lc->getHost() << std::endl;
322de962bdSlukem         bool result = lc->compare("cn=Manager,o=Organisation,c=DE",
33*e670fd5cSchristos                 LDAPAttribute("cn","Manager"));
342de962bdSlukem         std::cout << "Compare: " << result << std::endl;
352de962bdSlukem 
362de962bdSlukem         LDAPAttributeList* attrs=new LDAPAttributeList();
372de962bdSlukem         StringList values;
382de962bdSlukem         StringList s2;
392de962bdSlukem         values.add("top");
402de962bdSlukem         values.add("Person");
412de962bdSlukem         attrs->addAttribute(LDAPAttribute("objectClass",values));
422de962bdSlukem         attrs->addAttribute(LDAPAttribute("cn","Peter"));
432de962bdSlukem         attrs->addAttribute(LDAPAttribute("sn","Peter,hallo"));
442de962bdSlukem         LDAPEntry* entry=new LDAPEntry(
452de962bdSlukem                 "cn=Peter , o=Organisation, c=DE", attrs);
462de962bdSlukem //        lc->add(entry);
472de962bdSlukem 
482de962bdSlukem //        lc->del("ou=Groups,o=Organisation,c=DE");
492de962bdSlukem 
502de962bdSlukem         LDAPSearchResults* entries = lc->search("o=Organisation,c=DE",
512de962bdSlukem                 LDAPConnection::SEARCH_ONE);
522de962bdSlukem         if (entries != 0){
532de962bdSlukem             LDAPEntry* entry = entries->getNext();
542de962bdSlukem             if(entry != 0){
552de962bdSlukem                 std::cout << *(entry) << std::endl;
562de962bdSlukem             }
572de962bdSlukem             while(entry){
582de962bdSlukem                 try{
592de962bdSlukem                     entry = entries->getNext();
602de962bdSlukem                     if(entry != 0){
612de962bdSlukem                         std::cout << *(entry) << std::endl;
622de962bdSlukem                     }
632de962bdSlukem                     delete entry;
642de962bdSlukem                 }catch(LDAPReferralException e){
652de962bdSlukem                     std::cout << "Caught Referral" << std::endl;
662de962bdSlukem                 }
672de962bdSlukem             }
682de962bdSlukem         }
692de962bdSlukem 
702de962bdSlukem         lc->unbind();
712de962bdSlukem         delete lc;
722de962bdSlukem    }catch (LDAPException &e){
732de962bdSlukem         std::cout << "-------------- caught Exception ---------"<< std::endl;
742de962bdSlukem         std::cout << e << std::endl;
752de962bdSlukem     }
762de962bdSlukem 
772de962bdSlukem     /*
782de962bdSlukem     std::cout << "--------------------starting search" << std::endl;
792de962bdSlukem     LDAPAttributeList* attrs=new LDAPAttributeList();
802de962bdSlukem     StringList values;
812de962bdSlukem     values.add("top");
822de962bdSlukem     values.add("organizationalUnit");
832de962bdSlukem     attrs->addAttribute(LDAPAttribute("objectClass",values));
842de962bdSlukem     attrs->addAttribute(LDAPAttribute("ou","Groups"));
852de962bdSlukem     LDAPEntry* entry=new LDAPEntry(
862de962bdSlukem             "ou=Groups, o=Organisation, c=DE", attrs);
872de962bdSlukem 
882de962bdSlukem     LDAPAttribute newattr("description");
892de962bdSlukem     LDAPModification::mod_op op = LDAPModification::OP_DELETE;
902de962bdSlukem     LDAPModList *mod=new LDAPModList();
912de962bdSlukem     mod->addModification(LDAPModification(newattr,op));
922de962bdSlukem     LDAPMessageQueue* q=0;
932de962bdSlukem     try{
942de962bdSlukem         q=lc->search("o=Organisation,c=de",LDAPAsynConnection::SEARCH_SUB,
952de962bdSlukem          "objectClass=*",StringList());
962de962bdSlukem //        q=lc->add(entry);
972de962bdSlukem //        q=lc->modify("cn=Manager,o=Organisation,c=DE",
982de962bdSlukem //                mod);
992de962bdSlukem         LDAPMsg *res=q->getNext();
1002de962bdSlukem         bool cont=true;
1012de962bdSlukem         while( cont  ) {
1022de962bdSlukem             switch(res->getMessageType()){
1032de962bdSlukem                 LDAPSearchResult *res2;
1042de962bdSlukem                 const LDAPEntry *entry;
1052de962bdSlukem                 case LDAP_RES_SEARCH_ENTRY :
1062de962bdSlukem                     res2= (LDAPSearchResult*)res;
1072de962bdSlukem                     entry=  res2->getEntry();
1082de962bdSlukem                     std::cout << "Entry:            " << *entry << std::endl;
1092de962bdSlukem                     delete res;
1102de962bdSlukem                     res=q->getNext();
1112de962bdSlukem                 break;
1122de962bdSlukem                 case LDAP_RES_SEARCH_REFERENCE :
1132de962bdSlukem                     std::cout << "Reference:         "  << std::endl;
1142de962bdSlukem                     delete res;
1152de962bdSlukem                     res=q->getNext();
1162de962bdSlukem                 break;
1172de962bdSlukem                 default :
1182de962bdSlukem                     std::cout << ( *(LDAPResult*) res) << std::endl;
1192de962bdSlukem                     delete res;
1202de962bdSlukem                     std::cout  << "-----------------search done" << std::endl;
1212de962bdSlukem                     cont=false;
1222de962bdSlukem                 break;
1232de962bdSlukem             }
1242de962bdSlukem         }
1252de962bdSlukem         delete q;
1262de962bdSlukem     }catch (LDAPException e){
1272de962bdSlukem         std::cout << "----------------error during search" << std::endl;
1282de962bdSlukem         delete q;
1292de962bdSlukem         std::cout << e << std::endl;
1302de962bdSlukem     }
1312de962bdSlukem     lc->unbind();
1322de962bdSlukem     */
1332de962bdSlukem }
1342de962bdSlukem 
135