ldapsdk  0.0.1
Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
LDAPAsynConnection Class Reference

This class represents an asynchronous connection to an LDAP-Server. More...

#include <LDAPAsynConnection.h>

Inheritance diagram for LDAPAsynConnection:
LDAPConnection

Public Member Functions

 LDAPAsynConnection (const std::string &url=std::string("localhost"), int port=0, LDAPConstraints *cons=new LDAPConstraints())
 Construtor that initializes a connection to a server. More...
 
virtual ~LDAPAsynConnection ()
 
void init (const std::string &hostname, int port)
 Initializes a connection to a server. More...
 
void initialize (const std::string &uri)
 Initializes a connection to a server. More...
 
void start_tls ()
 Start TLS on this connection. More...
 
LDAPMessageQueuebind (const std::string &dn="", const std::string &passwd="", const LDAPConstraints *cons=0)
 Simple authentication to a LDAP-Server. More...
 
LDAPMessageQueuesaslBind (const std::string &mech, const std::string &cred, const LDAPConstraints *cons=0)
 
LDAPMessageQueuesaslInteractiveBind (const std::string &mech, int flags=0, SaslInteractionHandler *sih=0, const LDAPConstraints *cons=0)
 
LDAPMessageQueuesearch (const std::string &base="", int scope=0, const std::string &filter="objectClass=*", const StringList &attrs=StringList(), bool attrsOnly=false, const LDAPConstraints *cons=0)
 Performing a search on a directory tree. More...
 
LDAPMessageQueuedel (const std::string &dn, const LDAPConstraints *cons=0)
 Delete an entry from the directory. More...
 
LDAPMessageQueuecompare (const std::string &dn, const LDAPAttribute &attr, const LDAPConstraints *cons=0)
 Perform the COMPARE-operation on an attribute. More...
 
LDAPMessageQueueadd (const LDAPEntry *le, const LDAPConstraints *const=0)
 Add an entry to the directory. More...
 
LDAPMessageQueuemodify (const std::string &dn, const LDAPModList *modlist, const LDAPConstraints *cons=0)
 Apply modifications to attributes of an entry. More...
 
LDAPMessageQueuerename (const std::string &dn, const std::string &newRDN, bool delOldRDN=false, const std::string &newParentDN="", const LDAPConstraints *cons=0)
 modify the DN of an entry More...
 
LDAPMessageQueueextOperation (const std::string &oid, const std::string &value="", const LDAPConstraints *cons=0)
 Perform a LDAP extended Operation. More...
 
void abandon (LDAPMessageQueue *q)
 End an outstanding request. More...
 
void unbind ()
 Performs the UNBIND-operation on the destination server. More...
 
LDAP * getSessionHandle () const
 
const std::string & getHost () const
 
int getPort () const
 
void setConstraints (LDAPConstraints *cons)
 Change the default constraints of the connection. More...
 
const LDAPConstraintsgetConstraints () const
 Get the default constraints of the connection. More...
 
TlsOptions getTlsOptions () const
 
LDAPAsynConnectionreferralConnect (const LDAPUrlList &urls, LDAPUrlList::const_iterator &usedUrl, const LDAPConstraints *cons) const
 This method is used internally for automatic referral chasing. More...
 

Static Public Attributes

static const int SEARCH_BASE =0
 Constant for the Search-Operation to indicate a Base-Level Search. More...
 
static const int SEARCH_ONE =1
 Constant for the Search-Operation to indicate a One-Level Search. More...
 
static const int SEARCH_SUB =2
 Constant for the Search-Operation to indicate a subtree Search. More...
 

Protected Attributes

bool m_cacheEnabled
 Is caching enabled? More...
 

Detailed Description

This class represents an asynchronous connection to an LDAP-Server.

It provides the methods for authentication, and all other LDAP-Operations (e.g. search, add, delete, etc.) All of the LDAP-Operations return a pointer to a LDAPMessageQueue-Object, which can be used to obtain the results of that operation. A basic example of this class could be like this:

  1. Create a new LDAPAsynConnection Object:
  2. Use the init-method to initialize the connection
  3. Call the bind-method to authenticate to the directory
  4. Obtain the bind results from the return LDAPMessageQueue-Object
  5. Perform on of the operations on the directory (add, delete, search, ..)
  6. Use the return LDAPMessageQueue to obtain the results of the operation
  7. Close the connection (feature not implemented yet :) )

Constructor & Destructor Documentation

◆ LDAPAsynConnection()

LDAPAsynConnection::LDAPAsynConnection ( const std::string &  url = std::string("localhost"),
int  port = 0,
LDAPConstraints cons = new LDAPConstraints() 
)

Construtor that initializes a connection to a server.

Parameters
hostnameName (or IP-Adress) of the destination host
portPort the LDAP server is running on
consDefault constraints to use with operations over this connection

◆ ~LDAPAsynConnection()

LDAPAsynConnection::~LDAPAsynConnection ( )
virtual

Member Function Documentation

◆ abandon()

void LDAPAsynConnection::abandon ( LDAPMessageQueue q)

End an outstanding request.

Parameters
qAll outstanding request related to this LDAPMessageQueue will be abandoned

References DEBUG, LDAPRequest::getMsgID(), LDAPMessageQueue::getRequestStack(), and LDAP_DEBUG_TRACE.

◆ add()

LDAPMessageQueue * LDAPAsynConnection::add ( const LDAPEntry le,
const LDAPConstraints * const  cons = 0 
)

Add an entry to the directory.

Exceptions
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters
leThe entry that will be added to the directory

References DEBUG, LDAP_DEBUG_PARAMETER, LDAP_DEBUG_TRACE, and LDAPAddRequest::sendRequest().

Referenced by LDAPConnection::add().

◆ bind()

LDAPMessageQueue * LDAPAsynConnection::bind ( const std::string &  dn = "",
const std::string &  passwd = "",
const LDAPConstraints cons = 0 
)

Simple authentication to a LDAP-Server.

Exceptions
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured. This method does a simple (username, password) bind to the server. Other, saver, authentcation methods are provided later
Parameters
dnthe distiguished name to bind as
passwdcleartext password to use

References DEBUG, LDAP_DEBUG_PARAMETER, LDAP_DEBUG_TRACE, and LDAPBindRequest::sendRequest().

Referenced by LDAPConnection::bind().

◆ compare()

LDAPMessageQueue * LDAPAsynConnection::compare ( const std::string &  dn,
const LDAPAttribute attr,
const LDAPConstraints cons = 0 
)

Perform the COMPARE-operation on an attribute.

Exceptions
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters
dnDistinguished name of the entry for which the compare should be performed
attrAn Attribute (one (!) value) to use for the compare operation
consA set of constraints that should be used with this request

References DEBUG, LDAP_DEBUG_PARAMETER, LDAP_DEBUG_TRACE, and LDAPCompareRequest::sendRequest().

Referenced by LDAPConnection::compare().

◆ del()

LDAPMessageQueue * LDAPAsynConnection::del ( const std::string &  dn,
const LDAPConstraints cons = 0 
)

Delete an entry from the directory.

This method sends a delete request to the server

Exceptions
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters
dnDistinguished name of the entry that should be deleted
consA set of constraints that should be used with this request

References DEBUG, LDAP_DEBUG_PARAMETER, LDAP_DEBUG_TRACE, and LDAPDeleteRequest::sendRequest().

Referenced by LDAPConnection::del().

◆ extOperation()

LDAPMessageQueue * LDAPAsynConnection::extOperation ( const std::string &  oid,
const std::string &  value = "",
const LDAPConstraints cons = 0 
)

Perform a LDAP extended Operation.

Exceptions
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters
oidThe dotted decimal representation of the extended Operation that should be performed
valueThe data asociated with this operation
consA set of constraints that should be used with this request

References DEBUG, LDAP_DEBUG_PARAMETER, LDAP_DEBUG_TRACE, and LDAPExtRequest::sendRequest().

Referenced by LDAPConnection::extOperation().

◆ getConstraints()

const LDAPConstraints * LDAPAsynConnection::getConstraints ( ) const

Get the default constraints of the connection.

Returns
Pointer to the LDAPConstraints-Object that is currently used with the Connection

References DEBUG, and LDAP_DEBUG_TRACE.

Referenced by LDAPConnection::getConstraints(), and LDAPRequest::LDAPRequest().

◆ getHost()

const string & LDAPAsynConnection::getHost ( ) const
Returns
The Hostname of the destination server of the connection.

References DEBUG, and LDAP_DEBUG_TRACE.

Referenced by LDAPRequest::equals(), and LDAPConnection::getHost().

◆ getPort()

int LDAPAsynConnection::getPort ( ) const
Returns
The Port to which this connection is connecting to on the remote server.

References DEBUG, and LDAP_DEBUG_TRACE.

Referenced by LDAPRequest::equals(), and LDAPConnection::getPort().

◆ getSessionHandle()

LDAP * LDAPAsynConnection::getSessionHandle ( ) const

◆ getTlsOptions()

TlsOptions LDAPAsynConnection::getTlsOptions ( ) const

◆ init()

void LDAPAsynConnection::init ( const std::string &  hostname,
int  port 
)

Initializes a connection to a server.

There actually no communication to the server. Just the object is initialized (e.g. this method is called within the LDAPAsynConnection(char*,int,LDAPConstraints) constructor.)

Parameters
hostnameThe Name or IP-Address of the destination LDAP-Server
portThe Network Port the server is running on

References DEBUG, LDAP_DEBUG_PARAMETER, and LDAP_DEBUG_TRACE.

◆ initialize()

void LDAPAsynConnection::initialize ( const std::string &  uri)

Initializes a connection to a server.

There actually no communication to the server. Just the object is initialized

Parameters
uriThe LDAP-Uri for the destination

◆ modify()

LDAPMessageQueue * LDAPAsynConnection::modify ( const std::string &  dn,
const LDAPModList modlist,
const LDAPConstraints cons = 0 
)

Apply modifications to attributes of an entry.

Exceptions
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters
dnDistiguished Name of the Entry to modify
modlistA set of modification that should be applied to the Entry
consA set of constraints that should be used with this request

References DEBUG, LDAP_DEBUG_PARAMETER, LDAP_DEBUG_TRACE, and LDAPModifyRequest::sendRequest().

Referenced by LDAPConnection::modify().

◆ referralConnect()

LDAPAsynConnection * LDAPAsynConnection::referralConnect ( const LDAPUrlList urls,
LDAPUrlList::const_iterator usedUrl,
const LDAPConstraints cons 
) const

This method is used internally for automatic referral chasing.

It tries to bind to a destination server of the URLs of a referral.

Exceptions
LDAPExceptionin any case of an error
Parameters
urlsContains a std::list of LDAP-Urls that indicate the destinations of a referral
usedUrlAfter this method has successfully bind to one of the Destination URLs this parameter contains the URLs which was contacted.
consAn LDAPConstraints-Object that should be used for the new connection. If this object contains a LDAPRebind-object it is used to bind to the new server

References LDAPUrlList::begin(), DEBUG, LDAPUrlList::end(), LDAPRebindAuth::getDN(), LDAPRebindAuth::getPassword(), LDAPRebind::getRebindAuth(), LDAPConstraints::getReferralRebind(), getSessionHandle(), and LDAP_DEBUG_TRACE.

Referenced by LDAPDeleteRequest::followReferral(), LDAPExtRequest::followReferral(), LDAPCompareRequest::followReferral(), LDAPModDNRequest::followReferral(), LDAPAddRequest::followReferral(), LDAPModifyRequest::followReferral(), and LDAPSearchRequest::followReferral().

◆ rename()

LDAPMessageQueue * LDAPAsynConnection::rename ( const std::string &  dn,
const std::string &  newRDN,
bool  delOldRDN = false,
const std::string &  newParentDN = "",
const LDAPConstraints cons = 0 
)

modify the DN of an entry

Exceptions
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters
dnDN to modify
newRDNThe new relative DN for the entry
delOldRDNtrue=The old RDN will be removed from the attributes
false=The old RDN will still be present in the attributes of the entry
newParentDNThe DN of the new parent entry of the entry 0 to keep the old one

References DEBUG, LDAP_DEBUG_PARAMETER, LDAP_DEBUG_TRACE, and LDAPModDNRequest::sendRequest().

Referenced by LDAPConnection::rename().

◆ saslBind()

LDAPMessageQueue * LDAPAsynConnection::saslBind ( const std::string &  mech,
const std::string &  cred,
const LDAPConstraints cons = 0 
)

◆ saslInteractiveBind()

LDAPMessageQueue * LDAPAsynConnection::saslInteractiveBind ( const std::string &  mech,
int  flags = 0,
SaslInteractionHandler sih = 0,
const LDAPConstraints cons = 0 
)

◆ search()

LDAPMessageQueue * LDAPAsynConnection::search ( const std::string &  base = "",
int  scope = 0,
const std::string &  filter = "objectClass=*",
const StringList attrs = StringList(),
bool  attrsOnly = false,
const LDAPConstraints cons = 0 
)

Performing a search on a directory tree.

Use the search method to perform a search on the LDAP-Directory

Exceptions
LDAPExceptionIf the Request could not be sent to the destination server, a LDAPException-object contains the error that occured.
Parameters
baseThe distinguished name of the starting point for the search operation
scopeThe scope of the search. Possible values:
LDAPAsynConnection::SEARCH_BASE,
LDAPAsynConnection::SEARCH_ONE,
LDAPAsynConnection::SEARCH_SUB
filterThe std::string representation of a search filter to use with this operation
attrsOnlytrue if only the attributes names (no values) should be returned
consA set of constraints that should be used with this request

References DEBUG, LDAP_DEBUG_PARAMETER, LDAP_DEBUG_TRACE, and LDAPSearchRequest::sendRequest().

Referenced by LDAPConnection::search().

◆ setConstraints()

void LDAPAsynConnection::setConstraints ( LDAPConstraints cons)

Change the default constraints of the connection.

cons cons New LDAPConstraints to use with the connection

References DEBUG, and LDAP_DEBUG_TRACE.

Referenced by LDAPConnection::setConstraints().

◆ start_tls()

void LDAPAsynConnection::start_tls ( )

Start TLS on this connection.

This isn't in the constructor, because it could fail (i.e. server doesn't have SSL cert, client api wasn't compiled against OpenSSL, etc.).

Exceptions
LDAPExceptionif the TLS Layer could not be setup correctly

Referenced by LDAPConnection::start_tls().

◆ unbind()

void LDAPAsynConnection::unbind ( )

Performs the UNBIND-operation on the destination server.

Exceptions
LDAPExceptionin any case of an error

References DEBUG, LDAPControlSet::freeLDAPControlArray(), and LDAP_DEBUG_TRACE.

Referenced by LDAPConnection::unbind().

Member Data Documentation

◆ m_cacheEnabled

bool LDAPAsynConnection::m_cacheEnabled
protected

Is caching enabled?

◆ SEARCH_BASE

const int LDAPAsynConnection::SEARCH_BASE =0
static

Constant for the Search-Operation to indicate a Base-Level Search.

Referenced by LDAPSearchRequest::followReferral().

◆ SEARCH_ONE

const int LDAPAsynConnection::SEARCH_ONE =1
static

Constant for the Search-Operation to indicate a One-Level Search.

Referenced by LDAPSearchRequest::followReferral().

◆ SEARCH_SUB

const int LDAPAsynConnection::SEARCH_SUB =2
static

Constant for the Search-Operation to indicate a subtree Search.


The documentation for this class was generated from the following files: