38 #if defined(P_LDAP) && !defined(_WIN32_WCE) 107 NumAuthenticationMethod1,
108 NumAuthenticationMethod2
148 struct ldapmod & mod,
306 struct ldapmsg * result;
307 struct ldapmsg * message;
449 virtual PString ToString()
const;
450 virtual void FromString(
const PString & str);
472 void PrintOn(ostream & strm)
const;
482 void EndConstructor();
499 AttibuteUnknown = -1,
520 void OnReceivedAttribute(
const PString & attribute,
const PString & value);
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
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.
#define PCLASSINFO(cls, par)
Declare all the standard PTLib class information.
Definition: object.h:1049
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
const PTimeInterval & GetTimeout() const
Get the timeout for LDAP operations.
Definition: pldap.h:410
Definition: pluginmgr.h:57
virtual PObject * CreateInstance(int) const
Definition: pldap.h:557
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
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.
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
PLDAPSession(const PString &defaultBaseDN=PString::Empty())
Create a LDAP client.
virtual void AttributeList(attributeList &)
Definition: pldap.h:528
SearchScope
Definition: pldap.h:290
This is an array collection class of PString objects.
Definition: pstring.h:2024
PString multipleValueSeparator
Definition: pldap.h:431
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
PBoolean Search(SearchContext &context, const PString &filter, const PStringArray &attributes=PStringList(), const PString &base=PString::Empty(), SearchScope scope=ScopeSubTree)
Start search for specified information.
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.
PBoolean SetOption(int optcode, int value)
Set LDAP option parameter (OpenLDAp specific values)
#define PAssertNULL(ptr)
This macro is used to assert that a pointer must be non-null.
Definition: object.h:220
PDictionary< PString, PLDAPAttributeBase > attributes
Definition: pldap.h:484
The character string class.
Definition: pstring.h:108
PINDEX size
Definition: pldap.h:457
PLDAPStructBase * initialiserStack
Definition: pldap.h:486
static PString Empty()
Return an empty string.
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
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
static PMutex initialiserMutex
Definition: pldap.h:487
const char * GetName() const
Definition: pldap.h:444
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
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 SetLDAPMod(struct ldapmod &mod, Operation defaultOp)
PBoolean IsCompleted() const
Definition: pldap.h:302
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
PLDAPAttributeBase & GetAttribute(PINDEX idx) const
Definition: pldap.h:475
Operation
Definition: pldap.h:129
virtual void PrintOn(ostream &strm) const
Output the contents of the object to the stream.
unsigned protocolVersion
Definition: pldap.h:427
AuthenticationMethod
Definition: pldap.h:102
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.
PBoolean GetSearchResult(SearchContext &context, PStringToString &data)
Get the current search result entry.
int errorNumber
Definition: pldap.h:426