38 #if defined(P_LDAP) && !defined(_WIN32_WCE)
107 NumAuthenticationMethod1,
108 NumAuthenticationMethod2
148 struct ldapmod & mod,
306 struct ldapmsg * result;
307 struct ldapmsg * message;
472 void PrintOn(ostream & strm)
const;
561 #define LDAP_Schema(name) \
562 static LDAPPluginServiceDescriptor<name##_schema> name##_schema_descriptor; \
563 PCREATE_PLUGIN(name##_schema, PLDAPSchema, &name##_schema_descriptor)
567 #define PLDAP_STRUCT_BEGIN(name) \
568 class name : public PLDAPStructBase { \
569 public: name() : PLDAPStructBase() { EndConstructor(); } \
570 public: name(const name & other) : PLDAPStructBase() { EndConstructor(); operator=(other); } \
571 public: name(const PStringArray & array) : PLDAPStructBase() { EndConstructor(); operator=(array); } \
572 public: name(const PStringToString & dict) : PLDAPStructBase() { EndConstructor(); operator=(dict); } \
573 public: name & operator=(const name & other) { PLDAPStructBase::operator=(other); return *this; } \
574 public: name & operator=(const PStringArray & array) { PLDAPStructBase::operator=(array); return *this; } \
575 public: name & operator=(const PStringToString & dict) { PLDAPStructBase::operator=(dict); return *this; } \
576 PLDAP_ATTR_INIT(name, PString, objectClass, #name);
578 #define PLDAP_ATTRIBUTE(base, type, attribute, pointer, init) \
579 public: type attribute; \
580 private: struct PLDAPAttr_##attribute : public PLDAPAttributeBase { \
581 PLDAPAttr_##attribute() \
582 : PLDAPAttributeBase(#attribute, pointer, sizeof(type)), \
583 instance(((base &)base::GetInitialiser()).attribute) \
585 virtual void PrintOn (ostream & s) const { s << instance; } \
586 virtual void ReadFrom(istream & s) { s >> instance; } \
587 virtual void Copy(const PLDAPAttributeBase & other) \
588 { instance = ((PLDAPAttr_##attribute &)other).instance; } \
590 } pldapvar_##attribute
592 #define PLDAP_ATTR_SIMP(base, type, attribute) \
593 PLDAP_ATTRIBUTE(base, type, attribute, NULL, ;)
595 #define PLDAP_ATTR_INIT(base, type, attribute, init) \
596 PLDAP_ATTRIBUTE(base, type, attribute, NULL, instance = init;)
598 #define PLDAP_BINATTRIB(base, type, attribute) \
599 PLDAP_ATTRIBUTE(base, type, attribute, &((base &)base::GetInitialiser()).attribute, ;)
601 #define PLDAP_STRUCT_END() \
606 #endif // PTLIB_PLDAP_H
AttributeType GetAttributeType(const PString &attribute)
PLDAPAttributeBase * GetAttribute(const char *name) const
Definition: pldap.h:476
void SetSearchLimit(const unsigned s)
Set a limit on the number of results to return.
Definition: pldap.h:420
ldapAttributes attributes
Definition: pldap.h:549
PString defaultBaseDN
Definition: pldap.h:428
Operation op
Definition: pldap.h:157
void SetTimeout(const PTimeInterval &t)
Set the timeout for LDAP operations.
Definition: pldap.h:414
This class defines an arbitrary time interval to millisecond accuracy.
Definition: timeint.h:55
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:545
static PLDAPStructBase * initialiserInstance
Definition: pldap.h:488
PString name
Definition: pldap.h:156
std::map< PString, PString > ldapAttributes
Definition: pldap.h:544
static PLDAPSchema * CreateSchema(const PString &schemaname, PPluginManager *pluginMgr=NULL)
const PTimeInterval & GetTimeout() const
Get the timeout for LDAP operations.
Definition: pldap.h:410
Definition: pluginmgr.h:57
virtual PString ToString() const
virtual PObject * CreateInstance(int) const
Definition: pldap.h:557
virtual void FromBinary(const PArray< PBYTEArray > &data)
PBoolean Open(const PString &server, WORD port=0)
Open the LDAP session to the specified server.
attributeList attributelist
Definition: pldap.h:548
unsigned searchLimit
Definition: pldap.h:429
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:2784
AttributeType m_type
Definition: pldap.h:511
virtual PStringArray GetDeviceNames(int) const
Definition: pldap.h:558
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:479
This class will create an LDAP client to access a remote LDAP server.
Definition: pldap.h:55
PStringArray values
Definition: pldap.h:187
StringModAttrib(const PString &name, Operation op=NumOperations)
PLDAPSession(const PString &defaultBaseDN=PString::Empty())
Create a LDAP client.
virtual void AttributeList(attributeList &)
Definition: pldap.h:528
static PStringList GetSchemaNames(PPluginManager *pluginMgr=NULL)
SearchScope
Definition: pldap.h:290
This is an array collection class of PString objects.
Definition: pstring.h:2024
PString multipleValueSeparator
Definition: pldap.h:431
PBoolean GetAttribute(const PString &attribute, PString &value)
PString GetErrorText() const
Get the last OpenLDAP error as text string.
This template class maps the PAbstractList to a specific object type.
Definition: lists.h:321
AttributeType
Definition: pldap.h:498
PObject()
Constructor for PObject, made protected so cannot ever create one on its own.
Definition: object.h:1124
void SetBaseDN(const PString &dn)
Set the default base DN for use if not specified for searches.
Definition: pldap.h:388
BOOL PBoolean
Definition: object.h:102
struct ldap * GetOpenLDAP() const
Get the OpenLDAP context structure.
Definition: pldap.h:406
void AddAttribute(PLDAPAttributeBase *var)
PBoolean Search(SearchContext &context, const PString &filter, const PStringArray &attributes=PStringList(), const PString &base=PString::Empty(), SearchScope scope=ScopeSubTree)
Start search for specified information.
virtual PBoolean IsBinary() const
Array of unsigned characters.
Definition: array.h:670
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)
D & GetDataAt(PINDEX index) const
Get the data in the dictionary at the ordinal index position.
Definition: dict.h:969
#define PAssertNULL(ptr)
This macro is used to assert that a pointer must be non-null.
Definition: object.h:220
virtual PINDEX GetSize() const
Get the current size of the container.
virtual void SetLDAPModVars(struct ldapmod &mod)
void AddValue(const PBYTEArray &value)
PDictionary< PString, PLDAPAttributeBase > attributes
Definition: pldap.h:484
static PStringList GetSchemaFriendlyNames(const PString &schema, PPluginManager *pluginMgr=NULL)
PLDAPAttributeBase(const char *name, void *pointer, PINDEX size)
The character string class.
Definition: pstring.h:108
PINDEX size
Definition: pldap.h:457
virtual D * GetAt(const K &key) const
Get the object at the specified key position.
Definition: dict.h:938
PLDAPStructBase * initialiserStack
Definition: pldap.h:486
static PString Empty()
Return an empty string.
virtual void SetLDAPModVars(struct ldapmod &mod)
ldapBinAttributes binattributes
Definition: pldap.h:550
PBoolean IsOpen() const
Determine of session is open.
Definition: pldap.h:86
PBoolean StartTLS()
Start encrypted connection.
PString m_name
Definition: pldap.h:510
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:2184
PTimeInterval timeout
Definition: pldap.h:430
int GetErrorNumber() const
Get the last OpenLDAP error code.
Definition: pldap.h:398
std::list< Attribute > attributeList
Definition: pldap.h:514
PLDAPStructBase & operator=(const PLDAPStructBase &)
static PMutex initialiserMutex
Definition: pldap.h:487
const char * GetName() const
Definition: pldap.h:444
void SetValue(const PBYTEArray &value)
struct ldap * ldapContext
Definition: pldap.h:425
PBYTEArray bervals
Definition: pldap.h:220
const PString & GetBaseDN() const
Set the default base DN for use if not specified for searches.
Definition: pldap.h:394
Operation GetOperation() const
Definition: pldap.h:145
Attribute()
Definition: pldap.h:508
PBoolean SetAttribute(const PString &attribute, const PString &value)
PStringList SchemaName()
Definition: pldap.h:527
const char * name
Definition: pldap.h:455
const PString & GetName() const
Definition: pldap.h:143
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:302
virtual void Copy(const PLDAPAttributeBase &other)=0
PBaseArray< char * > pointers
Definition: pldap.h:188
PINDEX GetNumAttributes() const
Definition: pldap.h:474
void * pointer
Definition: pldap.h:456
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:1118
PArray< PBYTEArray > values
Definition: pldap.h:218
PBoolean Exists(const PString &attribute)
PLDAPAttributeBase & GetAttribute(PINDEX idx) const
Definition: pldap.h:475
Operation
Definition: pldap.h:129
unsigned protocolVersion
Definition: pldap.h:427
AuthenticationMethod
Definition: pldap.h:102
void OnSendSchema(PArray< PLDAPSession::ModAttrib > &attributes, PLDAPSession::ModAttrib::Operation op=PLDAPSession::ModAttrib::Add)
PBoolean IsBinary() const
Definition: pldap.h:445
virtual PBoolean IsBinary() const =0
PBaseArray< struct berval * > pointers
Definition: pldap.h:219
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.
int errorNumber
Definition: pldap.h:426
void PrintOn(ostream &strm) const
Output the contents of the object to the stream.