1 ! Copyright (C) 2007 Elie CHAFTARI
2 ! See http://factorcode.org/license.txt for BSD license.
4 ! Tested with OpenLDAP 2.2.7.0.21 on Mac OS X 10.4.9 PowerPC
6 USING: alien alien.c-types assocs continuations hashtables io kernel
7 ldap.libldap math namespaces sequences ;
14 ! =========================================================
15 ! Error interpretation routines
16 ! =========================================================
18 : result-to-error ( ld res freeit -- num )
21 : err-to-string ( err -- str )
24 : check-result ( result -- )
29 : result-type ( result -- )
30 result-types >hashtable at print ;
32 ! =========================================================
33 ! Initialization routines
34 ! =========================================================
36 ! deprecated in favor of ldap_initialize
37 : open ( host port -- ld )
40 ! deprecated in favor of ldap_initialize
41 : init ( host port -- ld )
44 : initialize ( ld url -- )
45 dupd ldap_initialize swap *void* ldp set check-result ;
47 : get-option ( ld option outvalue -- )
48 ldap_get_option check-result ;
50 : set-option ( ld option invalue -- )
51 ldap_set_option check-result ;
53 ! =========================================================
55 ! =========================================================
57 : simple-bind ( ld who passwd -- id )
60 : simple-bind-s ( ld who passwd -- )
61 ldap_simple_bind_s check-result ;
64 ldap_unbind_s check-result ;
66 : with-bind ( ld who passwd quot -- )
67 -roll [ simple-bind-s [ ldp get unbind-s ] [ ] cleanup ] with-scope ; inline
69 ! =========================================================
71 ! =========================================================
73 : search ( ld base scope filter attrs attrsonly -- id )
76 : search-s ( ld base scope filter attrs attrsonly res -- )
77 ldap_search_s check-result ;
79 ! =========================================================
80 ! Return results of asynchronous operation routines
81 ! =========================================================
83 : result ( ld msgid all timeout result -- )
84 [ ldap_result ] keep *void* message set result-type ;
86 : parse-result ( ld result errcodep matcheddnp errmsgp referralsp serverctrlsp freeit -- )
87 ldap_parse_result check-result ;
89 : count-messages ( ld result -- count )
92 : first-message ( ld result -- message )
95 : next-message ( ld message -- message )
98 : msgtype ( msg -- num )
101 : msgid ( msg -- num )
104 : count-entries ( ld result -- count )
107 : first-entry ( ld result -- entry )
110 : next-entry ( ld entry -- entry )
113 : first-attribute ( ld entry berptr -- str )
114 ldap_first_attribute ;
116 : next-attribute ( ld entry ber -- str )
117 ldap_next_attribute ;
119 : get-values ( ld entry attr -- values )
122 : get-dn ( ld entry -- str )
125 ! =========================================================
127 ! =========================================================
129 : get-message ( -- message )