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