annotate lisp/ldap.el @ 5753:dbd8305e13cb

Warn about non-string non-integer ARG to #'gensym, bytecomp.el. lisp/ChangeLog addition: 2013-08-21 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el: * bytecomp.el (gensym): * bytecomp.el (byte-compile-gensym): New. Warn that gensym called in a for-effect context is unlikely to be useful. Warn about non-string non-integer ARGs, this is incorrect. Am not changing the function to error with same, most code that makes the mistake is has no problems, which is why it has survived so long. * window-xemacs.el (save-window-excursion/mapping): * window.el (save-window-excursion): Call #'gensym with a string, not a symbol.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 21 Aug 2013 19:02:59 +0100
parents ac37a5f7e5be
children bbe4146603db
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 ;;; ldap.el --- LDAP support for Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 ;; Copyright (C) 1997 Free Software Foundation, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 ;; Author: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 ;; Maintainer: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 ;; Created: Jan 1998
502
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 468
diff changeset
8 ;; Version: $Revision: 1.12 $
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 ;; Keywords: help comm
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 ;; This file is part of XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12
5404
91b3aa59f49b Convert lisp/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents: 4783
diff changeset
13 ;; XEmacs is free software: you can redistribute it and/or modify it
91b3aa59f49b Convert lisp/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents: 4783
diff changeset
14 ;; under the terms of the GNU General Public License as published by the
91b3aa59f49b Convert lisp/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents: 4783
diff changeset
15 ;; Free Software Foundation, either version 3 of the License, or (at your
91b3aa59f49b Convert lisp/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents: 4783
diff changeset
16 ;; option) any later version.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17
5404
91b3aa59f49b Convert lisp/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents: 4783
diff changeset
18 ;; XEmacs is distributed in the hope that it will be useful, but WITHOUT
91b3aa59f49b Convert lisp/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents: 4783
diff changeset
19 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
91b3aa59f49b Convert lisp/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents: 4783
diff changeset
20 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
91b3aa59f49b Convert lisp/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents: 4783
diff changeset
21 ;; for more details.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
5404
91b3aa59f49b Convert lisp/ to GPLv3.
Mike Sperber <sperber@deinprogramm.de>
parents: 4783
diff changeset
24 ;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 ;;; Commentary:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 ;; This file provides mid-level and user-level functions to access directory
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
28 ;; servers using the LDAP protocol (RFC 1777).
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 ;;; Installation:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 ;; LDAP support must have been built into XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 ;;; Code:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35
502
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 468
diff changeset
36 (globally-declare-fboundp '(ldapp ldap-open ldap-close ldap-add ldap-modify
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 468
diff changeset
37 ldap-delete))
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 468
diff changeset
38
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
39 (eval-when '(load)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
40 (if (not (fboundp 'ldap-open))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
41 (error "No LDAP support compiled in this XEmacs")))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
42
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 (defgroup ldap nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 "Lightweight Directory Access Protocol"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 :group 'comm)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 (defcustom ldap-default-host nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 "*Default LDAP server hostname.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
49 A TCP port number can be appended to that name using a colon as
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 a separator."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 :type '(choice (string :tag "Host name")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 (const :tag "Use library default" nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 (defcustom ldap-default-port nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 "*Default TCP port for LDAP connections.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 Initialized from the LDAP library at build time. Default value is 389."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 :type '(choice (const :tag "Use library default" nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 (integer :tag "Port number"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 (defcustom ldap-default-base nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 "*Default base for LDAP searches.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 This is a string using the syntax of RFC 1779.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 For instance, \"o=ACME, c=US\" limits the search to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 Acme organization in the United States."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 :type '(choice (const :tag "Use library default" nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 (string :tag "Search base"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 (defcustom ldap-host-parameters-alist nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 "*Alist of host-specific options for LDAP transactions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 The format of each list element is:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 \(HOST PROP1 VAL1 PROP2 VAL2 ...)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 HOST is the hostname of an LDAP server (with an optional TCP port number
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
77 appended to it using a colon as a separator).
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 PROPn and VALn are property/value pairs describing parameters for the server.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 Valid properties include:
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
80 `binddn' is the distinguished name of the user to bind as
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 (in RFC 1779 syntax).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 `passwd' is the password to use for simple authentication.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
83 `auth' is the authentication method to use.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 Possible values are: `simple', `krbv41' and `krbv42'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 `base' is the base for the search as described in RFC 1779.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 `scope' is one of the three symbols `subtree', `base' or `onelevel'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 `deref' is one of the symbols `never', `always', `search' or `find'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 `timelimit' is the timeout limit for the connection in seconds.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 `sizelimit' is the maximum number of matches to return."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 :type '(repeat :menu-tag "Host parameters"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 :tag "Host parameters"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 (list :menu-tag "Host parameters"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 :tag "Host parameters"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 :value nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 (string :tag "Host name")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 (checklist :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 :greedy t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 (list
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
99 :tag "Search Base"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 (const :tag "Search Base" base)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 :tag "Binding DN"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 (const :tag "Binding DN" binddn)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 :tag "Password"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 (const :tag "Password" passwd)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 :tag "Authentication Method"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 (const :tag "Authentication Method" auth)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 (choice
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 (const :menu-tag "None" :tag "None" nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 (const :menu-tag "Simple" :tag "Simple" simple)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 (const :menu-tag "Kerberos 4.1" :tag "Kerberos 4.1" krbv41)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 (const :menu-tag "Kerberos 4.2" :tag "Kerberos 4.2" krbv42)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 (list
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
123 :tag "Search Scope"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 (const :tag "Search Scope" scope)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 (choice
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 (const :menu-tag "Default" :tag "Default" nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 (const :menu-tag "Subtree" :tag "Subtree" subtree)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 (const :menu-tag "Base" :tag "Base" base)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 (const :menu-tag "One Level" :tag "One Level" onelevel)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 :tag "Dereferencing"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 (const :tag "Dereferencing" deref)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 (choice
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 (const :menu-tag "Default" :tag "Default" nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 (const :menu-tag "Never" :tag "Never" never)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 (const :menu-tag "Always" :tag "Always" always)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 (const :menu-tag "When searching" :tag "When searching" search)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 (const :menu-tag "When locating base" :tag "When locating base" find)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 :tag "Time Limit"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 (const :tag "Time Limit" timelimit)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 (integer :tag "(in seconds)"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 :tag "Size Limit"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 (const :tag "Size Limit" sizelimit)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 (integer :tag "(number of records)")))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
153 (defcustom ldap-verbose nil
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
154 "*If non-nil, LDAP operations echo progress messages."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
155 :type 'boolean
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
156 :group 'ldap)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
157
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 (defcustom ldap-ignore-attribute-codings nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 "*If non-nil, do not perform any encoding/decoding on LDAP attribute values."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 :type 'boolean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 (defcustom ldap-default-attribute-decoder nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 "*Decoder function to use for attributes whose syntax is unknown."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 :type 'symbol
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 (defcustom ldap-coding-system nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 "*Coding system of LDAP string values.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
170 LDAP v3 specifies the coding system of strings to be UTF-8.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 Mule support is needed for this."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 :type 'symbol
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 (defvar ldap-attribute-syntax-encoders
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
176 [nil ; 1 ACI Item N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
177 nil ; 2 Access Point Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
178 nil ; 3 Attribute Type Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
179 nil ; 4 Audio N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
180 nil ; 5 Binary N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
181 nil ; 6 Bit String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
182 ldap-encode-boolean ; 7 Boolean Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
183 nil ; 8 Certificate N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
184 nil ; 9 Certificate List N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
185 nil ; 10 Certificate Pair N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
186 ldap-encode-country-string ; 11 Country String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
187 ldap-encode-string ; 12 DN Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
188 nil ; 13 Data Quality Syntax Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
189 nil ; 14 Delivery Method Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
190 ldap-encode-string ; 15 Directory String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
191 nil ; 16 DIT Content Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
192 nil ; 17 DIT Structure Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
193 nil ; 18 DL Submit Permission Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
194 nil ; 19 DSA Quality Syntax Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
195 nil ; 20 DSE Type Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
196 nil ; 21 Enhanced Guide Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
197 nil ; 22 Facsimile Telephone Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
198 nil ; 23 Fax N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
199 nil ; 24 Generalized Time Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
200 nil ; 25 Guide Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
201 nil ; 26 IA5 String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
202 number-to-string ; 27 INTEGER Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
203 nil ; 28 JPEG N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
204 nil ; 29 Master And Shadow Access Points Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
205 nil ; 30 Matching Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
206 nil ; 31 Matching Rule Use Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
207 nil ; 32 Mail Preference Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
208 nil ; 33 MHS OR Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
209 nil ; 34 Name And Optional UID Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
210 nil ; 35 Name Form Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
211 nil ; 36 Numeric String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
212 nil ; 37 Object Class Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
213 nil ; 38 OID Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
214 nil ; 39 Other Mailbox Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
215 nil ; 40 Octet String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
216 ldap-encode-address ; 41 Postal Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
217 nil ; 42 Protocol Information Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
218 nil ; 43 Presentation Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
219 ldap-encode-string ; 44 Printable String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
220 nil ; 45 Subtree Specification Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
221 nil ; 46 Supplier Information Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
222 nil ; 47 Supplier Or Consumer Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
223 nil ; 48 Supplier And Consumer Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
224 nil ; 49 Supported Algorithm N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
225 nil ; 50 Telephone Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
226 nil ; 51 Teletex Terminal Identifier Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
227 nil ; 52 Telex Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
228 nil ; 53 UTC Time Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
229 nil ; 54 LDAP Syntax Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
230 nil ; 55 Modify Rights Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
231 nil ; 56 LDAP Schema Definition Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
232 nil ; 57 LDAP Schema Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
233 nil ; 58 Substring Assertion Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
234 ]
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 "A vector of functions used to encode LDAP attribute values.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 The sequence of functions corresponds to the sequence of LDAP attribute syntax
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
237 object identifiers of the form 1.3.6.1.4.1.1466.1115.121.1.* as defined in
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 RFC2252 section 4.3.2")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 (defvar ldap-attribute-syntax-decoders
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
241 [nil ; 1 ACI Item N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
242 nil ; 2 Access Point Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
243 nil ; 3 Attribute Type Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
244 nil ; 4 Audio N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
245 nil ; 5 Binary N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
246 nil ; 6 Bit String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
247 ldap-decode-boolean ; 7 Boolean Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
248 nil ; 8 Certificate N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
249 nil ; 9 Certificate List N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
250 nil ; 10 Certificate Pair N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
251 ldap-decode-string ; 11 Country String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
252 ldap-decode-string ; 12 DN Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
253 nil ; 13 Data Quality Syntax Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
254 nil ; 14 Delivery Method Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
255 ldap-decode-string ; 15 Directory String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
256 nil ; 16 DIT Content Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
257 nil ; 17 DIT Structure Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
258 nil ; 18 DL Submit Permission Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
259 nil ; 19 DSA Quality Syntax Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
260 nil ; 20 DSE Type Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
261 nil ; 21 Enhanced Guide Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
262 nil ; 22 Facsimile Telephone Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
263 nil ; 23 Fax N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
264 nil ; 24 Generalized Time Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
265 nil ; 25 Guide Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
266 nil ; 26 IA5 String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
267 string-to-number ; 27 INTEGER Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
268 nil ; 28 JPEG N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
269 nil ; 29 Master And Shadow Access Points Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
270 nil ; 30 Matching Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
271 nil ; 31 Matching Rule Use Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
272 nil ; 32 Mail Preference Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
273 nil ; 33 MHS OR Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
274 nil ; 34 Name And Optional UID Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
275 nil ; 35 Name Form Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
276 nil ; 36 Numeric String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
277 nil ; 37 Object Class Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
278 nil ; 38 OID Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
279 nil ; 39 Other Mailbox Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
280 nil ; 40 Octet String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
281 ldap-decode-address ; 41 Postal Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
282 nil ; 42 Protocol Information Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
283 nil ; 43 Presentation Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
284 ldap-decode-string ; 44 Printable String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
285 nil ; 45 Subtree Specification Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
286 nil ; 46 Supplier Information Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
287 nil ; 47 Supplier Or Consumer Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
288 nil ; 48 Supplier And Consumer Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
289 nil ; 49 Supported Algorithm N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
290 nil ; 50 Telephone Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
291 nil ; 51 Teletex Terminal Identifier Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
292 nil ; 52 Telex Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
293 nil ; 53 UTC Time Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
294 nil ; 54 LDAP Syntax Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
295 nil ; 55 Modify Rights Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
296 nil ; 56 LDAP Schema Definition Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
297 nil ; 57 LDAP Schema Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
298 nil ; 58 Substring Assertion Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
299 ]
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 "A vector of functions used to decode LDAP attribute values.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 The sequence of functions corresponds to the sequence of LDAP attribute syntax
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
302 object identifiers of the form 1.3.6.1.4.1.1466.1115.121.1.* as defined in
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 RFC2252 section 4.3.2")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 (defvar ldap-attribute-syntaxes-alist
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307 '((createtimestamp . 24)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
308 (modifytimestamp . 24)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 (creatorsname . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310 (modifiersname . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 (subschemasubentry . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312 (attributetypes . 3)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313 (objectclasses . 37)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 (matchingrules . 30)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315 (matchingruleuse . 31)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316 (namingcontexts . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 (altserver . 26)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318 (supportedextension . 38)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 (supportedcontrol . 38)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
320 (supportedsaslmechanisms . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321 (supportedldapversion . 27)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 (ldapsyntaxes . 16)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 (ditstructurerules . 17)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324 (nameforms . 35)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 (ditcontentrules . 16)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 (objectclass . 38)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327 (aliasedobjectname . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328 (cn . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 (sn . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330 (serialnumber . 44)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 (c . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 (l . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 (st . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334 (street . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 (o . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 (ou . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 (title . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338 (description . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 (searchguide . 25)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 (businesscategory . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 (postaladdress . 41)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 (postalcode . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 (postofficebox . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344 (physicaldeliveryofficename . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 (telephonenumber . 50)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 (telexnumber . 52)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 (telexterminalidentifier . 51)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 (facsimiletelephonenumber . 22)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349 (x121address . 36)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 (internationalisdnnumber . 36)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 (registeredaddress . 41)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 (destinationindicator . 44)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 (preferreddeliverymethod . 14)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 (presentationaddress . 43)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 (supportedapplicationcontext . 38)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 (member . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 (owner . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358 (roleoccupant . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359 (seealso . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 (userpassword . 40)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361 (usercertificate . 8)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362 (cacertificate . 8)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 (authorityrevocationlist . 9)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364 (certificaterevocationlist . 9)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 (crosscertificatepair . 10)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 (name . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 (givenname . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 (initials . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369 (generationqualifier . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 (x500uniqueidentifier . 6)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371 (dnqualifier . 44)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 (enhancedsearchguide . 21)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 (protocolinformation . 42)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 (distinguishedname . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 (uniquemember . 34)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 (houseidentifier . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 (supportedalgorithms . 49)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378 (deltarevocationlist . 9)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379 (dmdname . 15))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 "A map of LDAP attribute names to their type object id minor number.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381 This table is built from RFC2252 Section 5 and RFC2256 Section 5")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
382
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
383
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
384 ;; Coding/decoding functions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386 (defun ldap-encode-boolean (bool)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387 (if bool
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388 "TRUE"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 "FALSE"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
391 (defun ldap-decode-boolean (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392 (cond
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393 ((string-equal str "TRUE")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394 t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
395 ((string-equal str "FALSE")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
396 nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397 (t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398 (error "Wrong LDAP boolean string: %s" str))))
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
399
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
400 (defun ldap-encode-country-string (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
401 ;; We should do something useful here...
5366
f00192e1cd49 Examining the result of #'length: `eql', not `=', it's better style & cheaper
Aidan Kehoe <kehoea@parhasard.net>
parents: 4783
diff changeset
402 (if (not (eql 2 (length str)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403 (error "Invalid country string: %s" str)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405 (defun ldap-decode-string (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406 (if (fboundp 'decode-coding-string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 (decode-coding-string str ldap-coding-system)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409 (defun ldap-encode-string (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410 (if (fboundp 'encode-coding-string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
411 (encode-coding-string str ldap-coding-system)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
412
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
413 (defun ldap-decode-address (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414 (mapconcat 'ldap-decode-string
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415 (split-string str "\\$")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416 "\n"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
418 (defun ldap-encode-address (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
419 (mapconcat 'ldap-encode-string
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420 (split-string str "\n")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421 "$"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
423
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
424 ;; LDAP protocol functions
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
425
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 (defun ldap-get-host-parameter (host parameter)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
427 "Get the value of PARAMETER for HOST in `ldap-host-parameters-alist'."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428 (plist-get (cdr (assoc host ldap-host-parameters-alist))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
429 parameter))
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
430
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
431 (defun ldap-decode-attribute (attr)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
432 "Decode the attribute/value pair ATTR according to LDAP rules.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
433 The attribute name is looked up in `ldap-attribute-syntaxes-alist'
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
434 and the corresponding decoder is then retrieved from
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
435 `ldap-attribute-syntax-decoders' and applied on the value(s)."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
436 (let* ((name (car attr))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437 (values (cdr attr))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
438 (syntax-id (cdr (assq (intern (downcase name))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
439 ldap-attribute-syntaxes-alist)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
440 decoder)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
441 (if syntax-id
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
442 (setq decoder (aref ldap-attribute-syntax-decoders
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
443 (1- syntax-id)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
444 (setq decoder ldap-default-attribute-decoder))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
445 (if decoder
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
446 (cons name (mapcar decoder values))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
447 attr)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
448
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
449 (defun ldap-decode-entry (entry)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
450 "Decode the attributes of ENTRY according to LDAP rules."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
451 (let (dn decoded)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
452 (setq dn (car entry))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
453 (if (stringp dn)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
454 (setq entry (cdr entry))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
455 (setq dn nil))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
456 (setq decoded (mapcar 'ldap-decode-attribute entry))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
457 (if dn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
458 (cons dn decoded)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
459 decoded)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
460
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
461 (defun ldap-search (arg1 &rest args)
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
462 "Perform an LDAP search."
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
463 (apply (if (ldapp arg1)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
464 'ldap-search-basic
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
465 'ldap-search-entries) arg1 args))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
466
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
467 (make-obsolete 'ldap-search
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
468 "Use `ldap-search-entries' instead or
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
469 `ldap-search-basic' for the low-level search API.")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
470
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
471 (defun ldap-search-entries (filter &optional host attributes attrsonly withdn)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
472 "Perform an LDAP search.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
473 FILTER is the search filter in RFC1558 syntax, i.e., something that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
474 looks like \"(cn=John Smith)\".
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
475 HOST is the LDAP host on which to perform the search.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
476 ATTRIBUTES is a list of attributes to retrieve; nil means retrieve all.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
477 If ATTRSONLY is non nil, the attributes will be retrieved without
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
478 the associated values.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
479 If WITHDN is non-nil each entry in the result will be prepennded with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
480 its distinguished name DN.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
481 Additional search parameters can be specified through
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
482 `ldap-host-parameters-alist' which see.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
483 The function returns a list of matching entries. Each entry is itself
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
484 an alist of attribute/value pairs optionally preceded by the DN of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
485 entry according to the value of WITHDN."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
486 (interactive "sFilter:")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
487 (or host
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
488 (setq host ldap-default-host)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
489 (error "No LDAP host specified"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
490 (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
491 ldap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
492 result)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
493 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
494 (message "Opening LDAP connection to %s..." host))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
495 (setq ldap (ldap-open host host-plist))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
496 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
497 (message "Searching with LDAP on %s..." host))
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
498 (setq result (ldap-search ldap filter
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
499 (plist-get host-plist 'base)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
500 (plist-get host-plist 'scope)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
501 attributes attrsonly withdn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
502 ldap-verbose))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
503 (ldap-close ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
504 (if ldap-ignore-attribute-codings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
505 result
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
506 (mapcar 'ldap-decode-entry result))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
507
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
508 (defun ldap-add-entries (entries &optional host binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
509 "Add entries to an LDAP directory.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
510 ENTRIES is a list of entry specifications of
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
511 the form (DN (ATTR . VALUE) (ATTR . VALUE) ...) where
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
512 DN is the distinguished name of an entry to add, the following
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
513 are cons cells containing attribute/value string pairs.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
514 HOST is the LDAP host, defaulting to `ldap-default-host'.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
515 BINDDN is the DN to bind as to the server.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
516 PASSWD is the corresponding password."
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
517 (or host
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
518 (setq host ldap-default-host)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
519 (error "No LDAP host specified"))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
520 (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
521 ldap
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
522 (i 1))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
523 (if (or binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
524 (setq host-plist (copy-seq host-plist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
525 (if binddn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
526 (setq host-plist (plist-put host-plist 'binddn binddn)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
527 (if passwd
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
528 (setq host-plist (plist-put host-plist 'passwd passwd)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
529 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
530 (message "Opening LDAP connection to %s..." host))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
531 (setq ldap (ldap-open host host-plist))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
532 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
533 (message "Adding LDAP entries..."))
4783
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
534 (mapc (function
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
535 (lambda (thisentry)
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
536 (ldap-add ldap (car thisentry) (cdr thisentry))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
537 (if ldap-verbose
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
538 (message "%d added" i))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
539 (setq i (1+ i))))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
540 entries)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
541 (ldap-close ldap)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
542
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
543
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
544 (defun ldap-modify-entries (entry-mods &optional host binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
545 "Modify entries of an LDAP directory.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
546 ENTRY_MODS is a list of entry modifications of the form
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
547 (DN MOD-SPEC1 MOD-SPEC2 ...) where DN is the distinguished name of
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
548 the entry to modify, the following are modification specifications.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
549 A modification specification is itself a list of the form
4783
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
550 \(MOD-OP ATTR VALUE1 VALUE2 ...) MOD-OP and ATTR are mandatory,
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
551 VALUEs are optional depending on MOD-OP.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
552 MOD-OP is the type of modification, one of the symbols `add', `delete'
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
553 or `replace'. ATTR is the LDAP attribute type to modify.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
554 HOST is the LDAP host, defaulting to `ldap-default-host'.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
555 BINDDN is the DN to bind as to the server.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
556 PASSWD is the corresponding password."
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
557 (or host
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
558 (setq host ldap-default-host)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
559 (error "No LDAP host specified"))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
560 (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
561 ldap
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
562 (i 1))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
563 (if (or binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
564 (setq host-plist (copy-seq host-plist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
565 (if binddn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
566 (setq host-plist (plist-put host-plist 'binddn binddn)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
567 (if passwd
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
568 (setq host-plist (plist-put host-plist 'passwd passwd)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
569 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
570 (message "Opening LDAP connection to %s..." host))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
571 (setq ldap (ldap-open host host-plist))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
572 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
573 (message "Modifying LDAP entries..."))
4783
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
574 (mapc (function
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
575 (lambda (thisentry)
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
576 (ldap-modify ldap (car thisentry) (cdr thisentry))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
577 (if ldap-verbose
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
578 (message "%d modified" i))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
579 (setq i (1+ i))))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
580 entry-mods)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
581 (ldap-close ldap)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
582
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
583
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
584 (defun ldap-delete-entries (dn &optional host binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
585 "Delete an entry from an LDAP directory.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
586 DN is the distinguished name of an entry to delete or
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
587 a list of those.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
588 HOST is the LDAP host, defaulting to `ldap-default-host'.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
589 BINDDN is the DN to bind as to the server.
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
590 PASSWD is the corresponding password."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
591 (or host
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
592 (setq host ldap-default-host)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
593 (error "No LDAP host specified"))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
594 (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
595 ldap)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
596 (if (or binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
597 (setq host-plist (copy-seq host-plist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
598 (if binddn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
599 (setq host-plist (plist-put host-plist 'binddn binddn)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
600 (if passwd
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
601 (setq host-plist (plist-put host-plist 'passwd passwd)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
602 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
603 (message "Opening LDAP connection to %s..." host))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
604 (setq ldap (ldap-open host host-plist))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
605 (if (consp dn)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
606 (let ((i 1))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
607 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
608 (message "Deleting LDAP entries..."))
4783
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
609 (mapc (function
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
610 (lambda (thisdn)
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
611 (ldap-delete ldap thisdn)
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
612 (if ldap-verbose
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
613 (message "%d deleted" i))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
614 (setq i (1+ i))))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
615 dn))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
616 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
617 (message "Deleting LDAP entry..."))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
618 (ldap-delete ldap dn))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
619 (ldap-close ldap)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
620
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
621
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
622 (provide 'ldap)
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
623
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
624 ;;; ldap.el ends here