103 NumAuthenticationMethod1,
104 NumAuthenticationMethod2
144 struct ldapmod & mod,
302 struct ldapmsg * m_result;
303 struct ldapmsg * m_message;
468 void PrintOn(ostream & strm)
const;
553 #define LDAP_Schema(name) PCREATE_PLUGIN(name, PLDAPSchema)
558 #define PLDAP_STRUCT_BEGIN(name) \
559 class name : public PLDAPStructBase { \
560 public: name() : PLDAPStructBase() { EndConstructor(); } \
561 public: name(const name & other) : PLDAPStructBase() { EndConstructor(); operator=(other); } \
562 public: name(const PStringArray & array) : PLDAPStructBase() { EndConstructor(); operator=(array); } \
563 public: name(const PStringToString & dict) : PLDAPStructBase() { EndConstructor(); operator=(dict); } \
564 public: name & operator=(const name & other) { PLDAPStructBase::operator=(other); return *this; } \
565 public: name & operator=(const PStringArray & array) { PLDAPStructBase::operator=(array); return *this; } \
566 public: name & operator=(const PStringToString & dict) { PLDAPStructBase::operator=(dict); return *this; } \
567 PLDAP_ATTR_INIT(name, PString, objectClass, #name);
569 #define PLDAP_ATTRIBUTE(base, type, attribute, pointer, init) \
570 public: type attribute; \
571 private: struct PLDAPAttr_##attribute : public PLDAPAttributeBase { \
572 PLDAPAttr_##attribute() \
573 : PLDAPAttributeBase(#attribute, pointer, sizeof(type)), \
574 instance(((base &)base::GetInitialiser()).attribute) \
576 virtual void PrintOn (ostream & s) const { s << instance; } \
577 virtual void ReadFrom(istream & s) { s >> instance; } \
578 virtual void Copy(const PLDAPAttributeBase & other) \
579 { instance = ((PLDAPAttr_##attribute &)other).instance; } \
581 } pldapvar_##attribute
583 #define PLDAP_ATTR_SIMP(base, type, attribute) \
584 PLDAP_ATTRIBUTE(base, type, attribute, NULL, ;)
586 #define PLDAP_ATTR_INIT(base, type, attribute, init) \
587 PLDAP_ATTRIBUTE(base, type, attribute, NULL, instance = init;)
589 #define PLDAP_BINATTRIB(base, type, attribute) \
590 PLDAP_ATTRIBUTE(base, type, attribute, &((base &)base::GetInitialiser()).attribute, ;)
592 #define PLDAP_STRUCT_END() \
597 #endif // PTLIB_PLDAP_H
AttributeType GetAttributeType(const PString &attribute)
PLDAPAttributeBase * GetAttribute(const char *name) const
Definition: pldap.h:473
void SetSearchLimit(const unsigned s)
Set a limit on the number of results to return.
Definition: pldap.h:416
PString m_name
Definition: pldap.h:152
void SetTimeout(const PTimeInterval &t)
Set the timeout for LDAP operations.
Definition: pldap.h:410
This class defines an arbitrary time interval to millisecond accuracy.
Definition: timeint.h:51
PArray< PBYTEArray > m_values
Definition: pldap.h:214
PBoolean Modify(const PString &dn, const PArray< ModAttrib > &attributes)
Modify an existing distringuished name to LDAP dirctory.
PBoolean Delete(const PString &dn)
Delete the distinguished name from LDAP directory.
std::map< PString, PBYTEArray > ldapBinAttributes
Definition: pldap.h:542
std::map< PString, PString > ldapAttributes
Definition: pldap.h:541
static PLDAPSchema * CreateSchema(const PString &schemaname, PPluginManager *pluginMgr=NULL)
static PStringArray GetSchemaFriendlyNames(PPluginManager *pluginMgr=NULL)
const PTimeInterval & GetTimeout() const
Get the timeout for LDAP operations.
Definition: pldap.h:406
ldapBinAttributes m_binattributes
Definition: pldap.h:547
virtual PString ToString() const
virtual void FromBinary(const PArray< PBYTEArray > &data)
PBoolean Open(const PString &server, WORD port=0)
Open the LDAP session to the specified server.
AttribDict m_attributes
Definition: pldap.h:481
PStringList GetAttributeList()
virtual PBoolean IsBinary() const
ModAttrib(const PString &name, Operation op=NumOperations)
This is a dictionary collection class of PString objects, keyed by another string.
Definition: pstring.h:3151
AttributeType m_type
Definition: pldap.h:508
PBoolean GetNextSearchResult(SearchContext &context)
Get the next search result.
void SetValue(const PString &value)
void OnReceivedAttribute(const PString &attribute, const PString &value)
static PLDAPStructBase & GetInitialiser()
Definition: pldap.h:476
This class will create an LDAP client to access a remote LDAP server.
Definition: pldap.h:51
StringModAttrib(const PString &name, Operation op=NumOperations)
PLDAPSession(const PString &defaultBaseDN=PString::Empty())
Create a LDAP client.
virtual void AttributeList(attributeList &)
Definition: pldap.h:525
AttribDict & GetAttributes()
Definition: pldap.h:471
SearchScope
Definition: pldap.h:286
This is an array collection class of PString objects.
Definition: pstring.h:2365
PBoolean GetAttribute(const PString &attribute, PString &value)
PString GetErrorText() const
Get the last OpenLDAP error as text string.
const AttribDict & GetAttributes() const
Definition: pldap.h:472
PCREATE_PLUGIN_SERVICE(PLDAPSchema)
This template class maps the PAbstractList to a specific object type.
Definition: lists.h:322
AttributeType
Definition: pldap.h:495
PObject()
Constructor for PObject, made protected so cannot ever create one on its own.
Definition: object.h:2227
void SetBaseDN(const PString &dn)
Set the default base DN for use if not specified for searches.
Definition: pldap.h:384
struct ldap * GetOpenLDAP() const
Get the OpenLDAP context structure.
Definition: pldap.h:402
PString m_defaultBaseDN
Definition: pldap.h:424
unsigned m_protocolVersion
Definition: pldap.h:423
void AddAttribute(PLDAPAttributeBase *var)
Operation m_op
Definition: pldap.h:153
PBoolean Search(SearchContext &context, const PString &filter, const PStringArray &attributes=PStringList(), const PString &base=PString::Empty(), SearchScope scope=ScopeSubTree)
Start search for specified information.
static PStringArray GetSchemaNames(PPluginManager *pluginMgr=NULL)
virtual PBoolean IsBinary() const
Array of unsigned characters.
Definition: array.h:605
PTimeInterval m_timeout
Definition: pldap.h:426
PDictionary< PString, PLDAPAttributeBase > AttribDict
Definition: pldap.h:470
PBoolean Bind(const PString &who=PString::Empty(), const PString &passwd=PString::Empty(), AuthenticationMethod authMethod=AuthSimple)
Bind to the remote LDAP server.
virtual PBYTEArray ToBinary() const
PBoolean SetOption(int optcode, int value)
Set LDAP option parameter (OpenLDAp specific values)
ldapAttributes m_attributes
Definition: pldap.h:546
PString m_multipleValueSeparator
Definition: pldap.h:427
#define PAssertNULL(ptr)
This macro is used to assert that a pointer must be non-null.
Definition: object.h:428
PLDAPStructBase * m_initialiserStack
Definition: pldap.h:483
bool PBoolean
Definition: object.h:174
PBYTEArray m_bervals
Definition: pldap.h:216
virtual void SetLDAPModVars(struct ldapmod &mod)
void AddValue(const PBYTEArray &value)
void * m_pointer
Definition: pldap.h:452
unsigned m_searchLimit
Definition: pldap.h:425
PLDAPAttributeBase(const char *name, void *pointer, PINDEX size)
The character string class.
Definition: pstring.h:108
virtual D * GetAt(const K &key) const
Get the object at the specified key position.
Definition: dict.h:1075
virtual void SetLDAPModVars(struct ldapmod &mod)
PBoolean IsOpen() const
Determine of session is open.
Definition: pldap.h:82
static PMutex m_initialiserMutex
Definition: pldap.h:484
PBoolean StartTLS()
Start encrypted connection.
PString m_name
Definition: pldap.h:507
struct ldap * m_ldapContext
Definition: pldap.h:421
This class defines a thread mutual exclusion object.
Definition: mutex.h:101
PBoolean Add(const PString &dn, const PArray< ModAttrib > &attributes)
Add a new distringuished name to LDAP dirctory.
This is a list collection class of PString objects.
Definition: pstring.h:2562
int GetErrorNumber() const
Get the last OpenLDAP error code.
Definition: pldap.h:394
std::list< Attribute > attributeList
Definition: pldap.h:511
static const PString & Empty()
Return an empty string.
PLDAPStructBase & operator=(const PLDAPStructBase &)
attributeList m_attributelist
Definition: pldap.h:545
const char * GetName() const
Definition: pldap.h:440
void SetValue(const PBYTEArray &value)
static PLDAPStructBase * m_initialiserInstance
Definition: pldap.h:485
PINDEX m_size
Definition: pldap.h:453
const PString & GetBaseDN() const
Set the default base DN for use if not specified for searches.
Definition: pldap.h:390
PStringArray m_values
Definition: pldap.h:183
Operation GetOperation() const
Definition: pldap.h:141
Attribute()
Definition: pldap.h:505
const char * m_name
Definition: pldap.h:451
PBoolean SetAttribute(const PString &attribute, const PString &value)
PBaseArray< const char * > m_pointers
Definition: pldap.h:184
PStringList SchemaName()
Definition: pldap.h:524
int m_errorNumber
Definition: pldap.h:422
const PString & GetName() const
Definition: pldap.h:139
PBoolean Close()
Close the LDAP session.
void AddValue(const PString &value)
void SetLDAPMod(struct ldapmod &mod, Operation defaultOp)
BinaryModAttrib(const PString &name, Operation op=Add)
PBoolean IsCompleted() const
Definition: pldap.h:298
virtual void Copy(const PLDAPAttributeBase &other)=0
virtual void SetLDAPModVars(struct ldapmod &mod)=0
~PLDAPSession()
Close the sesison on destruction.
Ultimate parent class for all objects in the class library.
Definition: object.h:2204
PBoolean Exists(const PString &attribute)
Operation
Definition: pldap.h:125
AuthenticationMethod
Definition: pldap.h:98
void OnSendSchema(PArray< PLDAPSession::ModAttrib > &attributes, PLDAPSession::ModAttrib::Operation op=PLDAPSession::ModAttrib::Add)
PBoolean IsBinary() const
Definition: pldap.h:441
virtual PBoolean IsBinary() const =0
PString GetSearchResultDN(SearchContext &context)
Get the current search result distinguished name entry.
virtual void FromString(const PString &str)
PBoolean GetSearchResult(SearchContext &context, PStringToString &data)
Get the current search result entry.
PBaseArray< struct berval * > m_pointers
Definition: pldap.h:215
void PrintOn(ostream &strm) const
Output the contents of the object to the stream.