xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/examples/readSchema.cpp (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
1d11b170bStron // $OpenLDAP$
22de962bdSlukem /*
3*e670fd5cSchristos  * Copyright 2008-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 #include "LDAPSchema.h"
192de962bdSlukem 
202de962bdSlukem #include "debug.h"
212de962bdSlukem 
main()222de962bdSlukem int main(){
232de962bdSlukem     LDAPConnection *lc=new LDAPConnection("192.168.3.128",389);
242de962bdSlukem     std::cout << "----------------------doing bind...." <<  std::endl;
252de962bdSlukem     try{
262de962bdSlukem         lc->bind("uid=admin,dc=home,dc=local" , "secret");
272de962bdSlukem         std::cout << lc->getHost() << std::endl;
282de962bdSlukem         StringList tmp;
292de962bdSlukem         tmp.add("subschemasubentry");
302de962bdSlukem         LDAPSearchResults* entries = lc->search("",
312de962bdSlukem                         LDAPConnection::SEARCH_BASE,
322de962bdSlukem                         "(objectClass=*)",
332de962bdSlukem                         tmp );
342de962bdSlukem         LDAPEntry* rootDse = entries->getNext();
352de962bdSlukem         std::string schemabase="cn=subschema";
362de962bdSlukem 
372de962bdSlukem         if(rootDse){
382de962bdSlukem             const LDAPAttribute* schemaAttr = rootDse->getAttributes()->getAttributeByName("subschemaSubentry");
392de962bdSlukem             schemabase = *(schemaAttr->getValues().begin());
402de962bdSlukem         }
412de962bdSlukem         StringList attrs;
422de962bdSlukem         attrs.add("objectClasses");
432de962bdSlukem         attrs.add("attributeTypes");
442de962bdSlukem         entries = lc->search(schemabase, LDAPConnection::SEARCH_BASE, "(objectClass=*)",
452de962bdSlukem                         attrs);
462de962bdSlukem         if (entries != 0){
472de962bdSlukem             LDAPEntry* entry = entries->getNext();
482de962bdSlukem             if(entry != 0){
492de962bdSlukem                 const LDAPAttribute* oc = entry->getAttributes()->getAttributeByName("objectClasses");
502de962bdSlukem                 LDAPSchema schema;
512de962bdSlukem                 schema.setObjectClasses((oc->getValues()));
522de962bdSlukem                 LDAPObjClass test = schema.getObjectClassByName("inetOrgPerson");
532de962bdSlukem                 std::cout << test.getDesc() << std::endl;
542de962bdSlukem //                StringList mustAttr = test.getMay();
552de962bdSlukem //                for( StringList::const_iterator i = mustAttr.begin(); i != mustAttr.end(); i++ ){
562de962bdSlukem //                    std::cout << *i << std::endl;
572de962bdSlukem //                }
582de962bdSlukem                 StringList sup = test.getSup();
592de962bdSlukem                 for( StringList::const_iterator i = sup.begin(); i != sup.end(); i++ ){
602de962bdSlukem                     std::cout << *i << std::endl;
612de962bdSlukem                 }
622de962bdSlukem             }
632de962bdSlukem         }
642de962bdSlukem 
652de962bdSlukem         lc->unbind();
662de962bdSlukem         delete lc;
672de962bdSlukem    }catch (LDAPException e){
682de962bdSlukem         std::cout << "---------------- caught Exception ---------"<< std::endl;
692de962bdSlukem         std::cout << e << std::endl;
702de962bdSlukem     }
712de962bdSlukem 
722de962bdSlukem }
732de962bdSlukem 
74