blob: beea1dfc2771a4965df788178ee8e0a5ee6cc89b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
// $OpenLDAP$
/*
* Copyright 2008-2021 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
#include <iostream>
#include <sstream>
#include "LDAPConnection.h"
#include "LDAPConstraints.h"
#include "LDAPSearchReference.h"
#include "LDAPSearchResults.h"
#include "LDAPAttribute.h"
#include "LDAPAttributeList.h"
#include "LDAPEntry.h"
#include "LDAPException.h"
#include "LDAPModification.h"
#include "LDAPSchema.h"
#include "debug.h"
int main(){
LDAPConnection *lc=new LDAPConnection("192.168.3.128",389);
std::cout << "----------------------doing bind...." << std::endl;
try{
lc->bind("uid=admin,dc=home,dc=local" , "secret");
std::cout << lc->getHost() << std::endl;
StringList tmp;
tmp.add("subschemasubentry");
LDAPSearchResults* entries = lc->search("",
LDAPConnection::SEARCH_BASE,
"(objectClass=*)",
tmp );
LDAPEntry* rootDse = entries->getNext();
std::string schemabase="cn=subschema";
if(rootDse){
const LDAPAttribute* schemaAttr = rootDse->getAttributes()->getAttributeByName("subschemaSubentry");
schemabase = *(schemaAttr->getValues().begin());
}
StringList attrs;
attrs.add("objectClasses");
attrs.add("attributeTypes");
entries = lc->search(schemabase, LDAPConnection::SEARCH_BASE, "(objectClass=*)",
attrs);
if (entries != 0){
LDAPEntry* entry = entries->getNext();
if(entry != 0){
const LDAPAttribute* oc = entry->getAttributes()->getAttributeByName("objectClasses");
LDAPSchema schema;
schema.setObjectClasses((oc->getValues()));
LDAPObjClass test = schema.getObjectClassByName("inetOrgPerson");
std::cout << test.getDesc() << std::endl;
// StringList mustAttr = test.getMay();
// for( StringList::const_iterator i = mustAttr.begin(); i != mustAttr.end(); i++ ){
// std::cout << *i << std::endl;
// }
StringList sup = test.getSup();
for( StringList::const_iterator i = sup.begin(); i != sup.end(); i++ ){
std::cout << *i << std::endl;
}
}
}
lc->unbind();
delete lc;
}catch (LDAPException e){
std::cout << "---------------- caught Exception ---------"<< std::endl;
std::cout << e << std::endl;
}
}
|