annotate lisp/ldap.el @ 5043:d0c14ea98592

various frame-geometry fixes -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-02-15 Ben Wing <ben@xemacs.org> * EmacsFrame.c: * EmacsFrame.c (EmacsFrameResize): * console-msw-impl.h: * console-msw-impl.h (struct mswindows_frame): * console-msw-impl.h (FRAME_MSWINDOWS_TARGET_RECT): * device-tty.c: * device-tty.c (tty_asynch_device_change): * event-msw.c: * event-msw.c (mswindows_wnd_proc): * faces.c (Fface_list): * faces.h: * frame-gtk.c: * frame-gtk.c (gtk_set_initial_frame_size): * frame-gtk.c (gtk_set_frame_size): * frame-msw.c: * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_set_frame_size): * frame-msw.c (mswindows_size_frame_internal): * frame-msw.c (msprinter_init_frame_3): * frame.c: * frame.c (enum): * frame.c (Fmake_frame): * frame.c (adjust_frame_size): * frame.c (store_minibuf_frame_prop): * frame.c (Fframe_property): * frame.c (Fframe_properties): * frame.c (Fframe_displayable_pixel_height): * frame.c (Fframe_displayable_pixel_width): * frame.c (internal_set_frame_size): * frame.c (Fset_frame_height): * frame.c (Fset_frame_pixel_height): * frame.c (Fset_frame_displayable_pixel_height): * frame.c (Fset_frame_width): * frame.c (Fset_frame_pixel_width): * frame.c (Fset_frame_displayable_pixel_width): * frame.c (Fset_frame_size): * frame.c (Fset_frame_pixel_size): * frame.c (Fset_frame_displayable_pixel_size): * frame.c (frame_conversion_internal_1): * frame.c (get_frame_displayable_pixel_size): * frame.c (change_frame_size_1): * frame.c (change_frame_size): * frame.c (generate_title_string): * frame.h: * gtk-xemacs.c: * gtk-xemacs.c (gtk_xemacs_size_request): * gtk-xemacs.c (gtk_xemacs_size_allocate): * gtk-xemacs.c (gtk_xemacs_paint): * gutter.c: * gutter.c (update_gutter_geometry): * redisplay.c (end_hold_frame_size_changes): * redisplay.c (redisplay_frame): * toolbar.c: * toolbar.c (update_frame_toolbars_geometry): * window.c: * window.c (frame_pixsize_valid_p): * window.c (check_frame_size): Various fixes to frame geometry to make it a bit easier to understand and fix some bugs. 1. IMPORTANT: Some renamings. Will need to be applied carefully to the carbon repository, in the following order: -- pixel_to_char_size -> pixel_to_frame_unit_size -- char_to_pixel_size -> frame_unit_to_pixel_size -- pixel_to_real_char_size -> pixel_to_char_size -- char_to_real_pixel_size -> char_to_pixel_size -- Reverse second and third arguments of change_frame_size() and change_frame_size_1() to try to make functions consistent in putting width before height. -- Eliminate old round_size_to_char, because it didn't really do anything differently from round_size_to_real_char() -- round_size_to_real_char -> round_size_to_char; any places that called the old round_size_to_char should just call the new one. 2. IMPORTANT FOR CARBON: The set_frame_size() method is now passed sizes in "frame units", like all other frame-sizing functions, rather than some hacked-up combination of char-cell units and total pixel size. This only affects window systems that use "pixelated geometry", and I'm not sure if Carbon is one of them. MS Windows is pixelated, X and GTK are not. For pixelated-geometry systems, the size in set_frame_size() is in displayable pixels rather than total pixels and needs to be converted appropriately; take a look at the changes made to mswindows_set_frame_size() method if necessary. 3. Add a big long comment in frame.c describing how frame geometry works. 4. Remove MS Windows-specific character height and width fields, duplicative and unused. 5. frame-displayable-pixel-* and set-frame-displayable-pixel-* didn't use to work on MS Windows, but they do now. 6. In general, clean up the handling of "pixelated geometry" so that fewer functions have to worry about this. This is really an abomination that should be removed entirely but that will have to happen later. Fix some buggy code in frame_conversion_internal() that happened to "work" because it was countered by oppositely buggy code in change_frame_size(). 7. Clean up some frame-size code in toolbar.c and use functions already provided in frame.c instead of rolling its own. 8. Fix check_frame_size() in window.c, which formerly didn't take pixelated geometry into account.
author Ben Wing <ben@xemacs.org>
date Mon, 15 Feb 2010 22:14:11 -0600
parents e29fcfd8df5f
children f00192e1cd49 91b3aa59f49b
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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 ;; XEmacs is free software; you can redistribute it and/or modify it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 ;; under the terms of the GNU General Public License as published by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 ;; any later version.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 ;; XEmacs is distributed in the hope that it will be useful, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 ;; General Public License for more details.
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
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
24 ;; along with XEmacs; see the file COPYING. If not, write to
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 ;; Boston, MA 02111-1307, USA.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 ;;; Commentary:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 ;; 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
30 ;; servers using the LDAP protocol (RFC 1777).
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 ;;; Installation:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 ;; LDAP support must have been built into XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 ;;; Code:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37
502
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 468
diff changeset
38 (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
39 ldap-delete))
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 468
diff changeset
40
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
41 (eval-when '(load)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
42 (if (not (fboundp 'ldap-open))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
43 (error "No LDAP support compiled in this XEmacs")))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
44
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 (defgroup ldap nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 "Lightweight Directory Access Protocol"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 :group 'comm)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 (defcustom ldap-default-host nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 "*Default LDAP server hostname.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
51 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
52 a separator."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 :type '(choice (string :tag "Host name")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 (const :tag "Use library default" nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 (defcustom ldap-default-port nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 "*Default TCP port for LDAP connections.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 Initialized from the LDAP library at build time. Default value is 389."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 :type '(choice (const :tag "Use library default" nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 (integer :tag "Port number"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 (defcustom ldap-default-base nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 "*Default base for LDAP searches.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 This is a string using the syntax of RFC 1779.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 For instance, \"o=ACME, c=US\" limits the search to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 Acme organization in the United States."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 :type '(choice (const :tag "Use library default" nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 (string :tag "Search base"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 (defcustom ldap-host-parameters-alist nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 "*Alist of host-specific options for LDAP transactions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 The format of each list element is:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 \(HOST PROP1 VAL1 PROP2 VAL2 ...)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 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
79 appended to it using a colon as a separator).
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 PROPn and VALn are property/value pairs describing parameters for the server.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 Valid properties include:
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
82 `binddn' is the distinguished name of the user to bind as
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 (in RFC 1779 syntax).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 `passwd' is the password to use for simple authentication.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
85 `auth' is the authentication method to use.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 Possible values are: `simple', `krbv41' and `krbv42'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 `base' is the base for the search as described in RFC 1779.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 `scope' is one of the three symbols `subtree', `base' or `onelevel'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 `deref' is one of the symbols `never', `always', `search' or `find'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 `timelimit' is the timeout limit for the connection in seconds.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 `sizelimit' is the maximum number of matches to return."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 :type '(repeat :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 (list :menu-tag "Host parameters"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 :tag "Host parameters"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 :value nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 (string :tag "Host name")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 (checklist :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 :greedy t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 (list
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
101 :tag "Search Base"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 (const :tag "Search Base" base)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 :tag "Binding DN"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 (const :tag "Binding DN" binddn)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 :tag "Password"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 (const :tag "Password" passwd)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 :tag "Authentication Method"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 (const :tag "Authentication Method" auth)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 (choice
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 (const :menu-tag "None" :tag "None" nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 (const :menu-tag "Simple" :tag "Simple" simple)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 (const :menu-tag "Kerberos 4.1" :tag "Kerberos 4.1" krbv41)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 (const :menu-tag "Kerberos 4.2" :tag "Kerberos 4.2" krbv42)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 (list
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
125 :tag "Search Scope"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 (const :tag "Search Scope" scope)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 (choice
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 (const :menu-tag "Default" :tag "Default" nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 (const :menu-tag "Subtree" :tag "Subtree" subtree)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 (const :menu-tag "Base" :tag "Base" base)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 (const :menu-tag "One Level" :tag "One Level" onelevel)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 :tag "Dereferencing"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 (const :tag "Dereferencing" deref)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 (choice
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 (const :menu-tag "Default" :tag "Default" nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 (const :menu-tag "Never" :tag "Never" never)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 (const :menu-tag "Always" :tag "Always" always)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 (const :menu-tag "When searching" :tag "When searching" search)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 (const :menu-tag "When locating base" :tag "When locating base" find)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 :tag "Time Limit"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 (const :tag "Time Limit" timelimit)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 (integer :tag "(in seconds)"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 (list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 :tag "Size Limit"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 :inline t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 (const :tag "Size Limit" sizelimit)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 (integer :tag "(number of records)")))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
155 (defcustom ldap-verbose nil
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
156 "*If non-nil, LDAP operations echo progress messages."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
157 :type 'boolean
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
158 :group 'ldap)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
159
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 (defcustom ldap-ignore-attribute-codings nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 "*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
162 :type 'boolean
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 (defcustom ldap-default-attribute-decoder nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 "*Decoder function to use for attributes whose syntax is unknown."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 :type 'symbol
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 (defcustom ldap-coding-system nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 "*Coding system of LDAP string values.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
172 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
173 Mule support is needed for this."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 :type 'symbol
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 :group 'ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 (defvar ldap-attribute-syntax-encoders
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
178 [nil ; 1 ACI Item N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
179 nil ; 2 Access Point Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
180 nil ; 3 Attribute Type Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
181 nil ; 4 Audio N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
182 nil ; 5 Binary N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
183 nil ; 6 Bit String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
184 ldap-encode-boolean ; 7 Boolean Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
185 nil ; 8 Certificate N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
186 nil ; 9 Certificate List N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
187 nil ; 10 Certificate Pair N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
188 ldap-encode-country-string ; 11 Country String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
189 ldap-encode-string ; 12 DN Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
190 nil ; 13 Data Quality Syntax Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
191 nil ; 14 Delivery Method Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
192 ldap-encode-string ; 15 Directory String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
193 nil ; 16 DIT Content Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
194 nil ; 17 DIT Structure Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
195 nil ; 18 DL Submit Permission Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
196 nil ; 19 DSA Quality Syntax Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
197 nil ; 20 DSE Type Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
198 nil ; 21 Enhanced Guide Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
199 nil ; 22 Facsimile Telephone Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
200 nil ; 23 Fax N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
201 nil ; 24 Generalized Time Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
202 nil ; 25 Guide Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
203 nil ; 26 IA5 String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
204 number-to-string ; 27 INTEGER Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
205 nil ; 28 JPEG N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
206 nil ; 29 Master And Shadow Access Points Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
207 nil ; 30 Matching Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
208 nil ; 31 Matching Rule Use Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
209 nil ; 32 Mail Preference Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
210 nil ; 33 MHS OR Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
211 nil ; 34 Name And Optional UID Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
212 nil ; 35 Name Form Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
213 nil ; 36 Numeric String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
214 nil ; 37 Object Class Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
215 nil ; 38 OID Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
216 nil ; 39 Other Mailbox Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
217 nil ; 40 Octet String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
218 ldap-encode-address ; 41 Postal Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
219 nil ; 42 Protocol Information Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
220 nil ; 43 Presentation Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
221 ldap-encode-string ; 44 Printable String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
222 nil ; 45 Subtree Specification Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
223 nil ; 46 Supplier Information Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
224 nil ; 47 Supplier Or Consumer Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
225 nil ; 48 Supplier And Consumer Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
226 nil ; 49 Supported Algorithm N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
227 nil ; 50 Telephone Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
228 nil ; 51 Teletex Terminal Identifier Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
229 nil ; 52 Telex Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
230 nil ; 53 UTC Time Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
231 nil ; 54 LDAP Syntax Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
232 nil ; 55 Modify Rights Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
233 nil ; 56 LDAP Schema Definition Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
234 nil ; 57 LDAP Schema Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
235 nil ; 58 Substring Assertion Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
236 ]
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 "A vector of functions used to encode LDAP attribute values.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 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
239 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
240 RFC2252 section 4.3.2")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 (defvar ldap-attribute-syntax-decoders
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
243 [nil ; 1 ACI Item N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
244 nil ; 2 Access Point Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
245 nil ; 3 Attribute Type Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
246 nil ; 4 Audio N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
247 nil ; 5 Binary N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
248 nil ; 6 Bit String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
249 ldap-decode-boolean ; 7 Boolean Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
250 nil ; 8 Certificate N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
251 nil ; 9 Certificate List N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
252 nil ; 10 Certificate Pair N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
253 ldap-decode-string ; 11 Country String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
254 ldap-decode-string ; 12 DN Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
255 nil ; 13 Data Quality Syntax Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
256 nil ; 14 Delivery Method Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
257 ldap-decode-string ; 15 Directory String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
258 nil ; 16 DIT Content Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
259 nil ; 17 DIT Structure Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
260 nil ; 18 DL Submit Permission Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
261 nil ; 19 DSA Quality Syntax Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
262 nil ; 20 DSE Type Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
263 nil ; 21 Enhanced Guide Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
264 nil ; 22 Facsimile Telephone Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
265 nil ; 23 Fax N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
266 nil ; 24 Generalized Time Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
267 nil ; 25 Guide Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
268 nil ; 26 IA5 String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
269 string-to-number ; 27 INTEGER Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
270 nil ; 28 JPEG N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
271 nil ; 29 Master And Shadow Access Points Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
272 nil ; 30 Matching Rule Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
273 nil ; 31 Matching Rule Use Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
274 nil ; 32 Mail Preference Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
275 nil ; 33 MHS OR Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
276 nil ; 34 Name And Optional UID Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
277 nil ; 35 Name Form Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
278 nil ; 36 Numeric String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
279 nil ; 37 Object Class Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
280 nil ; 38 OID Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
281 nil ; 39 Other Mailbox Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
282 nil ; 40 Octet String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
283 ldap-decode-address ; 41 Postal Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
284 nil ; 42 Protocol Information Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
285 nil ; 43 Presentation Address Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
286 ldap-decode-string ; 44 Printable String Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
287 nil ; 45 Subtree Specification Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
288 nil ; 46 Supplier Information Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
289 nil ; 47 Supplier Or Consumer Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
290 nil ; 48 Supplier And Consumer Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
291 nil ; 49 Supported Algorithm N
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
292 nil ; 50 Telephone Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
293 nil ; 51 Teletex Terminal Identifier Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
294 nil ; 52 Telex Number Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
295 nil ; 53 UTC Time Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
296 nil ; 54 LDAP Syntax Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
297 nil ; 55 Modify Rights Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
298 nil ; 56 LDAP Schema Definition Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
299 nil ; 57 LDAP Schema Description Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
300 nil ; 58 Substring Assertion Y
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
301 ]
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 "A vector of functions used to decode LDAP attribute values.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 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
304 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
305 RFC2252 section 4.3.2")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
308 (defvar ldap-attribute-syntaxes-alist
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 '((createtimestamp . 24)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310 (modifytimestamp . 24)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 (creatorsname . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312 (modifiersname . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313 (subschemasubentry . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 (attributetypes . 3)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315 (objectclasses . 37)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316 (matchingrules . 30)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 (matchingruleuse . 31)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318 (namingcontexts . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 (altserver . 26)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
320 (supportedextension . 38)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321 (supportedcontrol . 38)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 (supportedsaslmechanisms . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 (supportedldapversion . 27)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324 (ldapsyntaxes . 16)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 (ditstructurerules . 17)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 (nameforms . 35)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327 (ditcontentrules . 16)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328 (objectclass . 38)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 (aliasedobjectname . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330 (cn . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 (sn . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 (serialnumber . 44)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 (c . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334 (l . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 (st . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 (street . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 (o . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338 (ou . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 (title . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 (description . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 (searchguide . 25)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 (businesscategory . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 (postaladdress . 41)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344 (postalcode . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 (postofficebox . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 (physicaldeliveryofficename . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 (telephonenumber . 50)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 (telexnumber . 52)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349 (telexterminalidentifier . 51)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 (facsimiletelephonenumber . 22)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 (x121address . 36)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 (internationalisdnnumber . 36)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 (registeredaddress . 41)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 (destinationindicator . 44)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 (preferreddeliverymethod . 14)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 (presentationaddress . 43)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 (supportedapplicationcontext . 38)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358 (member . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359 (owner . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 (roleoccupant . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361 (seealso . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362 (userpassword . 40)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 (usercertificate . 8)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364 (cacertificate . 8)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 (authorityrevocationlist . 9)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 (certificaterevocationlist . 9)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 (crosscertificatepair . 10)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 (name . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369 (givenname . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 (initials . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371 (generationqualifier . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 (x500uniqueidentifier . 6)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 (dnqualifier . 44)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 (enhancedsearchguide . 21)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 (protocolinformation . 42)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 (distinguishedname . 12)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 (uniquemember . 34)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378 (houseidentifier . 15)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379 (supportedalgorithms . 49)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 (deltarevocationlist . 9)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381 (dmdname . 15))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
382 "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
383 This table is built from RFC2252 Section 5 and RFC2256 Section 5")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
384
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 ;; Coding/decoding functions
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388 (defun ldap-encode-boolean (bool)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 (if bool
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390 "TRUE"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
391 "FALSE"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393 (defun ldap-decode-boolean (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394 (cond
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
395 ((string-equal str "TRUE")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
396 t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397 ((string-equal str "FALSE")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398 nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
399 (t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
400 (error "Wrong LDAP boolean string: %s" str))))
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
401
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
402 (defun ldap-encode-country-string (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403 ;; We should do something useful here...
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404 (if (not (= 2 (length str)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405 (error "Invalid country string: %s" str)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 (defun ldap-decode-string (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408 (if (fboundp 'decode-coding-string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409 (decode-coding-string str ldap-coding-system)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
411 (defun ldap-encode-string (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
412 (if (fboundp 'encode-coding-string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
413 (encode-coding-string str ldap-coding-system)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415 (defun ldap-decode-address (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416 (mapconcat 'ldap-decode-string
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417 (split-string str "\\$")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
418 "\n"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
419
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420 (defun ldap-encode-address (str)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421 (mapconcat 'ldap-encode-string
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422 (split-string str "\n")
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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
425
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 ;; LDAP protocol functions
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
427
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428 (defun ldap-get-host-parameter (host parameter)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
429 "Get the value of PARAMETER for HOST in `ldap-host-parameters-alist'."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
430 (plist-get (cdr (assoc host ldap-host-parameters-alist))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
431 parameter))
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
432
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
433 (defun ldap-decode-attribute (attr)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
434 "Decode the attribute/value pair ATTR according to LDAP rules.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
435 The attribute name is looked up in `ldap-attribute-syntaxes-alist'
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
436 and the corresponding decoder is then retrieved from
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437 `ldap-attribute-syntax-decoders' and applied on the value(s)."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
438 (let* ((name (car attr))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
439 (values (cdr attr))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
440 (syntax-id (cdr (assq (intern (downcase name))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
441 ldap-attribute-syntaxes-alist)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
442 decoder)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
443 (if syntax-id
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
444 (setq decoder (aref ldap-attribute-syntax-decoders
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
445 (1- syntax-id)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
446 (setq decoder ldap-default-attribute-decoder))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
447 (if decoder
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
448 (cons name (mapcar decoder values))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
449 attr)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
450
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
451 (defun ldap-decode-entry (entry)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
452 "Decode the attributes of ENTRY according to LDAP rules."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
453 (let (dn decoded)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
454 (setq dn (car entry))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
455 (if (stringp dn)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
456 (setq entry (cdr entry))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
457 (setq dn nil))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
458 (setq decoded (mapcar 'ldap-decode-attribute entry))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
459 (if dn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
460 (cons dn decoded)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
461 decoded)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
462
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
463 (defun ldap-search (arg1 &rest args)
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
464 "Perform an LDAP search."
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
465 (apply (if (ldapp arg1)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
466 'ldap-search-basic
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
467 'ldap-search-entries) arg1 args))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
468
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
469 (make-obsolete 'ldap-search
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
470 "Use `ldap-search-entries' instead or
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
471 `ldap-search-basic' for the low-level search API.")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
472
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
473 (defun ldap-search-entries (filter &optional host attributes attrsonly withdn)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
474 "Perform an LDAP search.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
475 FILTER is the search filter in RFC1558 syntax, i.e., something that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
476 looks like \"(cn=John Smith)\".
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
477 HOST is the LDAP host on which to perform the search.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
478 ATTRIBUTES is a list of attributes to retrieve; nil means retrieve all.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
479 If ATTRSONLY is non nil, the attributes will be retrieved without
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
480 the associated values.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
481 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
482 its distinguished name DN.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
483 Additional search parameters can be specified through
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
484 `ldap-host-parameters-alist' which see.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
485 The function returns a list of matching entries. Each entry is itself
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
486 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
487 entry according to the value of WITHDN."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
488 (interactive "sFilter:")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
489 (or host
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
490 (setq host ldap-default-host)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
491 (error "No LDAP host specified"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
492 (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
493 ldap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
494 result)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
495 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
496 (message "Opening LDAP connection to %s..." host))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
497 (setq ldap (ldap-open host host-plist))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
498 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
499 (message "Searching with LDAP on %s..." host))
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
500 (setq result (ldap-search ldap filter
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
501 (plist-get host-plist 'base)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
502 (plist-get host-plist 'scope)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
503 attributes attrsonly withdn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
504 ldap-verbose))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
505 (ldap-close ldap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
506 (if ldap-ignore-attribute-codings
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
507 result
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
508 (mapcar 'ldap-decode-entry result))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
509
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
510 (defun ldap-add-entries (entries &optional host binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
511 "Add entries to an LDAP directory.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
512 ENTRIES is a list of entry specifications of
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
513 the form (DN (ATTR . VALUE) (ATTR . VALUE) ...) where
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
514 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
515 are cons cells containing attribute/value string pairs.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
516 HOST is the LDAP host, defaulting to `ldap-default-host'.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
517 BINDDN is the DN to bind as to the server.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
518 PASSWD is the corresponding password."
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
519 (or host
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
520 (setq host ldap-default-host)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
521 (error "No LDAP host specified"))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
522 (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
523 ldap
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
524 (i 1))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
525 (if (or binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
526 (setq host-plist (copy-seq host-plist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
527 (if binddn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
528 (setq host-plist (plist-put host-plist 'binddn binddn)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
529 (if passwd
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
530 (setq host-plist (plist-put host-plist 'passwd passwd)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
531 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
532 (message "Opening LDAP connection to %s..." host))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
533 (setq ldap (ldap-open host host-plist))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
534 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
535 (message "Adding LDAP entries..."))
4783
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
536 (mapc (function
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
537 (lambda (thisentry)
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
538 (ldap-add ldap (car thisentry) (cdr thisentry))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
539 (if ldap-verbose
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
540 (message "%d added" i))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
541 (setq i (1+ i))))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
542 entries)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
543 (ldap-close ldap)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
544
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
545
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
546 (defun ldap-modify-entries (entry-mods &optional host binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
547 "Modify entries of an LDAP directory.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
548 ENTRY_MODS is a list of entry modifications of the form
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
549 (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
550 the entry to modify, the following are modification specifications.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
551 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
552 \(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
553 VALUEs are optional depending on MOD-OP.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
554 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
555 or `replace'. ATTR is the LDAP attribute type to modify.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
556 HOST is the LDAP host, defaulting to `ldap-default-host'.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
557 BINDDN is the DN to bind as to the server.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
558 PASSWD is the corresponding password."
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
559 (or host
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
560 (setq host ldap-default-host)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
561 (error "No LDAP host specified"))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
562 (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
563 ldap
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
564 (i 1))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
565 (if (or binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
566 (setq host-plist (copy-seq host-plist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
567 (if binddn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
568 (setq host-plist (plist-put host-plist 'binddn binddn)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
569 (if passwd
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
570 (setq host-plist (plist-put host-plist 'passwd passwd)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
571 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
572 (message "Opening LDAP connection to %s..." host))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
573 (setq ldap (ldap-open host host-plist))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
574 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
575 (message "Modifying LDAP entries..."))
4783
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
576 (mapc (function
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
577 (lambda (thisentry)
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
578 (ldap-modify ldap (car thisentry) (cdr thisentry))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
579 (if ldap-verbose
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
580 (message "%d modified" i))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
581 (setq i (1+ i))))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
582 entry-mods)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
583 (ldap-close ldap)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
584
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
585
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
586 (defun ldap-delete-entries (dn &optional host binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
587 "Delete an entry from an LDAP directory.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
588 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
589 a list of those.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
590 HOST is the LDAP host, defaulting to `ldap-default-host'.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
591 BINDDN is the DN to bind as to the server.
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
592 PASSWD is the corresponding password."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
593 (or host
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
594 (setq host ldap-default-host)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
595 (error "No LDAP host specified"))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
596 (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
597 ldap)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
598 (if (or binddn passwd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
599 (setq host-plist (copy-seq host-plist)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
600 (if binddn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
601 (setq host-plist (plist-put host-plist 'binddn binddn)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
602 (if passwd
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
603 (setq host-plist (plist-put host-plist 'passwd passwd)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
604 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
605 (message "Opening LDAP connection to %s..." host))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
606 (setq ldap (ldap-open host host-plist))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
607 (if (consp dn)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
608 (let ((i 1))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
609 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
610 (message "Deleting LDAP entries..."))
4783
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
611 (mapc (function
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
612 (lambda (thisdn)
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
613 (ldap-delete ldap thisdn)
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
614 (if ldap-verbose
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
615 (message "%d deleted" i))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
616 (setq i (1+ i))))
e29fcfd8df5f Eliminate most core code byte-compile warnings.
Aidan Kehoe <kehoea@parhasard.net>
parents: 502
diff changeset
617 dn))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
618 (if ldap-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
619 (message "Deleting LDAP entry..."))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
620 (ldap-delete ldap dn))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
621 (ldap-close ldap)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
622
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
623
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
624 (provide 'ldap)
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
625
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
626 ;;; ldap.el ends here