PTLib  Version 2.14.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
pils.h
Go to the documentation of this file.
1 /*
2  * pils.h
3  *
4  * Microsoft Internet Location Server Protocol interface class.
5  *
6  * Portable Windows Library
7  *
8  * Copyright (c) 1993-2003 Equivalence Pty. Ltd.
9  *
10  * The contents of this file are subject to the Mozilla Public License
11  * Version 1.0 (the "License"); you may not use this file except in
12  * compliance with the License. You may obtain a copy of the License at
13  * http://www.mozilla.org/MPL/
14  *
15  * Software distributed under the License is distributed on an "AS IS"
16  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17  * the License for the specific language governing rights and limitations
18  * under the License.
19  *
20  * The Original Code is Portable Windows Library.
21  *
22  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
23  *
24  * Contributor(s): ______________________________________.
25  *
26  * $Revision: 21788 $
27  * $Author: rjongbloed $
28  * $Date: 2008-12-12 16:42:13 +1100 (Fri, 12 Dec 2008) $
29  */
30 
31 #ifndef PTLIB_PILS_H
32 #define PTLIB_PILS_H
33 
34 #ifdef P_USE_PRAGMA
35 #pragma interface
36 #endif
37 
38 #if P_LDAP
39 
40 #include <ptlib/sockets.h>
41 #include <ptclib/pldap.h>
42 
43 
46 class PILSSession : public PLDAPSession
47 {
49  public:
52  PILSSession();
53 
64  {
65  public:
66  MSIPAddress(DWORD a = 0) : Address(a) { }
68  MSIPAddress(const PString & dotNotation) : Address(dotNotation) { }
69  MSIPAddress(PINDEX len, const BYTE * bytes) : Address(len, bytes) { }
70 
71  MSIPAddress & operator=(DWORD a) { Address::operator=(a); return *this; }
72  MSIPAddress & operator=(const PIPSocket::Address & a) { Address::operator=(a); return *this; }
73  MSIPAddress & operator=(const PString & dotNotation) { Address::operator=(dotNotation); return *this; }
74 
75  friend istream & operator>>(istream & s, MSIPAddress & a);
76  friend ostream & operator<<(ostream & s, MSIPAddress & a);
77  };
78 
79  PLDAP_STRUCT_BEGIN(RTPerson)
80  PLDAP_ATTR_SIMP(RTPerson, PString, cn); // Must be non-empty
81  PLDAP_ATTR_SIMP(RTPerson, PString, c);
82  PLDAP_ATTR_SIMP(RTPerson, PString, o);
83  PLDAP_ATTR_SIMP(RTPerson, PString, surname);
84  PLDAP_ATTR_SIMP(RTPerson, PString, givenName);
85  PLDAP_ATTR_SIMP(RTPerson, PString, rfc822Mailbox); // Must be non-empty
86  PLDAP_ATTR_SIMP(RTPerson, PString, location);
87  PLDAP_ATTR_SIMP(RTPerson, PString, comment);
88  PLDAP_ATTR_SIMP(RTPerson, MSIPAddress, sipAddress);
89  PLDAP_ATTR_SIMP(RTPerson, PWORDArray, sport);
90  PLDAP_ATTR_INIT(RTPerson, unsigned, sflags, 0);
91  PLDAP_ATTR_INIT(RTPerson, unsigned, ssecurity, 0);
92  PLDAP_ATTR_INIT(RTPerson, unsigned, smodop, 0);
93  PLDAP_ATTR_INIT(RTPerson, unsigned, sttl, 3600);
94  PLDAP_ATTR_SIMP(RTPerson, PStringList, sprotid);
95  PLDAP_ATTR_SIMP(RTPerson, PStringList, sprotmimetype);
96  PLDAP_ATTR_INIT(RTPerson, PString, sappid, PProcess::Current().GetName()); // Must be non-empty
97  PLDAP_ATTR_INIT(RTPerson, PString, sappguid, "none"); // Must be non-empty
98  PLDAP_ATTR_SIMP(RTPerson, PStringList, smimetype);
99  PLDAP_ATTR_INIT(RTPerson, PBoolean, ilsa32833566, 0); // 1=audio capable
100  PLDAP_ATTR_INIT(RTPerson, PBoolean, ilsa32964638, 0); // 1=video capable
101  PLDAP_ATTR_INIT(RTPerson, PBoolean, ilsa26214430, 0); // 1=in a call
102  PLDAP_ATTR_INIT(RTPerson, unsigned, ilsa26279966, 0); // unknown
103  PLDAP_ATTR_INIT(RTPerson, unsigned, ilsa39321630, 0); // 1 personal; 2 business user; 4 adults-only
104  PLDAP_ATTR_INIT(RTPerson, time_t, timestamp, PTime().GetTimeInSeconds());
105 
106  public:
107  PString GetDN() const;
108 
110 
111  PBoolean AddPerson(
112  const RTPerson & person
113  );
114 
115  PBoolean ModifyPerson(
116  const RTPerson & person
117  );
118 
119  PBoolean DeletePerson(
120  const RTPerson & person
121  );
122 
123  PBoolean SearchPerson(
124  const PString & canonicalName,
125  RTPerson & person
126  );
127 
128  PList<RTPerson> SearchPeople(
129  const PString & filter
130  );
131 };
132 
133 #endif // P_LDAP
134 
135 #endif // PTLIB_PILS_H
136 
137 
138 // End of file ////////////////////////////////////////////////////////////////