annotate man/lispref/ldap.texi @ 298:70ad99077275 r21-0b47

Import from CVS: tag r21-0b47
author cvs
date Mon, 13 Aug 2007 10:39:40 +0200
parents
children 74fd4e045ea6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
298
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
1 @c -*-texinfo-*-
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
2 @c This is part of the XEmacs Lisp Reference Manual.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
3 @c Copyright (C) 1998 Free Software Foundation, Inc.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
4 @c See the file lispref.texi for copying conditions.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
5 @setfilename ../../info/ldap.info
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
6 @node LDAP Support, Internationalization, ToolTalk Support, top
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
7 @chapter LDAP Support
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
8 @cindex LDAP
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
9
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
10 XEmacs can be linked with a LDAP client library to provide Elisp primitives
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
11 to access directory servers using the Lightweight Directory Access Protocol.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
12
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
13 @menu
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
14 * Building XEmacs with LDAP support:: How to add LDAP support to XEmacs
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
15 * XEmacs LDAP API:: Lisp access to LDAP functions
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
16 * Syntax of Search Filters:: A brief summary of RFC 1558
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
17 @end menu
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
18
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
19 @node Building XEmacs with LDAP support, XEmacs LDAP API, LDAP Support, LDAP Support
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
20 @comment node-name, next, previous, up
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
21 @section Building XEmacs with LDAP support
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
22
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
23 LDAP support must be added to XEmacs at build time since it requires
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
24 linking to an external LDAP client library. As of 21.0, XEmacs has been
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
25 successfully built and tested with
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
26
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
27 @itemize @bullet
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
28 @item University of Michigan's LDAP 3.3 (@url{http://www.umich.edu/~dirsvcs/ldap/})
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
29 @item LDAP SDK 1.0 from Netscape Corp. (@url{http://developer.netscape.com/})
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
30 @end itemize
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
31
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
32 Other libraries conforming to RFC 1823 will probably work also but may
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
33 require some minor tweaking at C level.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
34
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
35 The standard XEmacs configure script autodetects an installed LDAP
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
36 library provided the library itself and the corresponding header files
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
37 can be found in the library and include paths. A successful detection
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
38 will be signalled in the final output of the configure script.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
39
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
40
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
41
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
42 @node XEmacs LDAP API, Syntax of Search Filters, Building XEmacs with LDAP support, LDAP Support
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
43 @comment node-name, next, previous, up
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
44 @section XEmacs LDAP API
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
45
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
46 XEmacs LDAP API consists of two layers: a low-level layer which tries
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
47 to stay as close as possible to the C API (where practical) and a
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
48 higher-level layer which provides more convenient primitives to
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
49 effectively use LDAP.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
50
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
51 As of XEmacs 21.0, only interfaces to basic LDAP search functions are
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
52 provided, broader support is planned in future versions.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
53
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
54 @menu
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
55 * LDAP Variables:: Lisp variables related to LDAP
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
56 * The High-Level LDAP API:: High-level LDAP lisp functions
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
57 * The Low-Level LDAP API:: Low-level LDAP lisp primitives
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
58 @end menu
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
59
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
60
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
61 @node LDAP Variables, The High-Level LDAP API, XEmacs LDAP API, XEmacs LDAP API
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
62 @comment node-name, next, previous, up
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
63 @subsection LDAP Variables
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
64
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
65 @defvar ldap-default-host
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
66 The default LDAP server
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
67 @end defvar
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
68
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
69 @defvar ldap-default-port
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
70 Default TCP port for LDAP connections.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
71 Initialized from the LDAP library. Default value is 389.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
72 @end defvar
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
73
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
74 @defvar ldap-default-base
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
75 Default base for LDAP searches.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
76 This is a string using the syntax of RFC 1779.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
77 For instance, "o¬ME, cÿ" limits the search to the
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
78 Acme organization in the United States.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
79 @end defvar
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
80
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
81 @defvar ldap-host-parameters-alist
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
82 An alist of per host options for LDAP transactions.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
83 The list elements look like @code{(HOST PROP1 VAL1 PROP2 VAL2 ...)}
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
84 @var{host} is the name of an LDAP server. @var{propn} and @var{valn} are
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
85 property/value pairs describing parameters for the server. Valid
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
86 properties:
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
87 @table @code
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
88 @item binddn
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
89 The distinguished name of the user to bind as. This may look like
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
90 @samp{cÿ, o¬me, cnÿnny Bugs}, see RFC 1779 for details.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
91 @item passwd
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
92 The password to use for authentication.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
93 @item auth
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
94 The authentication method to use, possible values depend on the LDAP
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
95 library XEmacs was compiled with, they may include @code{simple},
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
96 @code{krbv41} and @code{krbv42}.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
97 @item base
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
98 The base for the search. This may look like @samp{cÿ, o¬me}, see
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
99 RFC 1779 for syntax details.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
100 @item scope
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
101 One of the symbols @code{base}, @code{onelevel} or @code{subtree}
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
102 indicating the scope of the search limited to a base
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
103 object, to a single level or to the whole subtree.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
104 @item deref
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
105 The dereference policy is one of the symbols @code{never},
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
106 @code{always}, @code{search} or @code{find} and defines how aliases are
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
107 dereferenced.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
108 @table @code
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
109 @item never
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
110 Aliases are never dereferenced
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
111 @item always
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
112 Aliases are always dereferenced
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
113 @item search
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
114 Aliases are dereferenced when searching
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
115 @item find
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
116 Aliases are dereferenced when locating the base object for the search
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
117 @end table
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
118 @item timelimit
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
119 The timeout limit for the connection in seconds.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
120 @item sizelimit
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
121 The maximum number of matches to return for searches performed on this connection.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
122 @end table
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
123 @end defvar
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
124
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
125
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
126
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
127 @node The High-Level LDAP API, The Low-Level LDAP API, LDAP Variables, XEmacs LDAP API
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
128 @comment node-name, next, previous, up
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
129 @subsection The High-Level LDAP API
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
130
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
131 As of this writing the high-level Lisp LDAP API only provides for LDAP
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
132 searches. Further support is planned in the future.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
133
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
134 The @code{ldap-search} function provides the most convenient interface
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
135 to perform LDAP searches. It opens a connection to a host, performs the
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
136 query and cleanly closes the connection thus insulating the user from
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
137 all the details of the low-level interface such as LDAP Lisp objects
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
138 @pxref{The Low-Level LDAP API}
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
139
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
140 @defun ldap-search filter &optional host attributes attrsonly
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
141 Perform an LDAP search.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
142 @var{filter} is the search filter @pxref{Syntax of Search Filters}
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
143 @var{host} is the LDAP host on which to perform the search
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
144 @var{attributes} is the specific attributes to retrieve, @code{nil} means
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
145 retrieve all
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
146 @var{attrsonly} if non-@code{nil} retrieves the attributes only without
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
147 their associated values.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
148 Additional search parameters can be specified through
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
149 @code{ldap-host-parameters-alist}.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
150 @end defun
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
151
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
152 @node The Low-Level LDAP API, , The High-Level LDAP API, XEmacs LDAP API
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
153 @comment node-name, next, previous, up
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
154 @subsection The Low-Level LDAP API
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
155
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
156 @menu
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
157 * The LDAP Lisp Object::
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
158 * Opening and Closing a LDAP Connection::
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
159 * Searching on a LDAP Server (Low-level)::
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
160 @end menu
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
161
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
162 @node The LDAP Lisp Object, Opening and Closing a LDAP Connection, The Low-Level LDAP API, The Low-Level LDAP API
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
163 @comment node-name, next, previous, up
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
164 @subsubsection The LDAP Lisp Object
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
165
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
166 An internal built-in @code{ldap} lisp object represents a LDAP
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
167 connection.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
168
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
169 @defun ldapp object
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
170 This function returns non-@code{nil} if @var{object} is a @code{ldap} object.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
171 @end defun
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
172
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
173 @defun ldap-host ldap
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
174 Return the server host of the connection represented by @var{ldap}
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
175 @end defun
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
176
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
177 @defun ldap-live-p ldap
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
178 Return non-@code{nil} if @var{ldap} is an active LDAP connection
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
179 @end defun
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
180
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
181
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
182 @node Opening and Closing a LDAP Connection, Searching on a LDAP Server (Low-level), The LDAP Lisp Object, The Low-Level LDAP API
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
183 @comment node-name, next, previous, up
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
184 @subsubsection Opening and Closing a LDAP Connection
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
185
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
186 @defun ldap-open host &optional plist
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
187 Open a LDAP connection to @var{host}.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
188 @var{plist} is a property list containing additional parameters for the connection.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
189 Valid keys in that list are:
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
190 @table @code
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
191 @item port
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
192 The TCP port to use for the connection if different from
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
193 @code{ldap-default-port} or the library builtin value
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
194 @item auth
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
195 The authentication method to use, possible values depend on the LDAP
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
196 library XEmacs was compiled with, they may include @code{simple},
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
197 @code{krbv41} and @code{krbv42}.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
198 @item binddn
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
199 The distinguished name of the user to bind as. This may look like
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
200 @samp{cÿ, o¬me, cnÿnny Bugs}, see RFC 1779 for details.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
201 @item passwd
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
202 The password to use for authentication.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
203 @item deref
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
204 The dereference policy is one of the symbols @code{never},
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
205 @code{always}, @code{search} or @code{find} and defines how aliases are
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
206 dereferenced.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
207 @table @code
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
208 @item never
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
209 Aliases are never dereferenced
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
210 @item always
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
211 Aliases are always dereferenced
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
212 @item search
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
213 Aliases are dereferenced when searching
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
214 @item find
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
215 Aliases are dereferenced when locating the base object for the search
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
216 @end table
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
217 The default is @code{never}.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
218 @item timelimit
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
219 The timeout limit for the connection in seconds.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
220 @item sizelimit
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
221 The maximum number of matches to return for searches performed on this connection.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
222 @end table
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
223 @end defun
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
224
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
225 @defun ldap-close ldap
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
226 Close the connection represented by @var{ldap}
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
227 @end defun
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
228
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
229
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
230 @node Searching on a LDAP Server (Low-level), , Opening and Closing a LDAP Connection, The Low-Level LDAP API
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
231 @comment node-name, next, previous, up
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
232 @subsubsection Searching on a LDAP Server (Low-level)
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
233
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
234 @code{ldap-search-internal} is the low-level primitive to perform a
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
235 search on a LDAP server. It works directly on an open LDAP connection
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
236 thus requiring a preliminary call to @code{ldap-open}. Multiple
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
237 searches can be made on the same connection, then the session must be
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
238 closed with @code{ldap-close}.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
239
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
240
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
241 @defun ldap-search-internal ldap filter base scope attrs attrsonly
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
242 Perform a search on an open connection @var{ldap} created with @code{ldap-open}.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
243 @var{filter} is a filter string for the search @pxref{Syntax of Search Filters}
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
244 @var{base} is the distinguished name at which to start the search.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
245 @var{scope} is one of the symbols @code{base}, @code{onelevel} or
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
246 @code{subtree} indicating the scope of the search limited to a base
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
247 object, to a single level or to the whole subtree. The default is
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
248 @code{subtree}.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
249 @code{attrs} is a list of strings indicating which attributes to retrieve
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
250 for each matching entry. If @code{nil} all available attributes are returned.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
251 If @code{attrsonly} is non-@code{nil} then only the attributes are retrieved, not
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
252 their associated values
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
253 The function returns a list of matching entries. Each entry being itself
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
254 an alist of attribute/values.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
255 @end defun
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
256
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
257
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
258
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
259
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
260
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
261 @node Syntax of Search Filters, , XEmacs LDAP API, LDAP Support
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
262 @comment node-name, next, previous, up
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
263 @section Syntax of Search Filters
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
264
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
265 LDAP search functions use RFC1558 syntax to describe the search filter.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
266 In that syntax simple filters have the form:
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
267
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
268 @example
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
269 (<attr> <filtertype> <value>)
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
270 @end example
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
271
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
272 @code{<attr>} is an attribute name such as @code{cn} for Common Name,
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
273 @code{o} for Organization, etc...
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
274
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
275 @code{<value>} is the corresponding value. This is generally an exact
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
276 string but may also contain @code{*} characters as wildcards
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
277
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
278 @code{filtertype} is one @code{=} @code{~=}, @code{<=}, @code{>=} which
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
279 respectively describe equality, approximate equality, inferiority and
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
280 superiority.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
281
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
282 Thus @code{(cn=John Smith)} matches all records having a canonical name
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
283 equal to John Smith.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
284
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
285 A special case is the presence filter @code{(<attr>=*} which matches
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
286 records containing a particular attribute. For instance @code{(mail=*)}
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
287 matches all records containing a @code{mail} attribute.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
288
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
289 Simple filters can be connected together with the logical operators
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
290 @code{&}, @code{|} and @code{!} which stand for the usual and, or and
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
291 not operators.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
292
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
293 @code{(&(objectClass=Person)(mail=*)(|(sn=Smith)(givenname=John)))}
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
294 matches records of class @code{Person} containing a @code{mail}
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
295 attribute and corresponding to people whose last name is @code{Smith} or
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
296 whose first name is @code{John}.
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
297
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
298
70ad99077275 Import from CVS: tag r21-0b47
cvs
parents:
diff changeset
299