]> gitweb.factorcode.org Git - factor.git/blob - unmaintained/ldap/libldap/libldap.factor
use radix literals
[factor.git] / unmaintained / ldap / libldap / libldap.factor
1 ! Copyright (C) 2007 Elie CHAFTARI
2 ! See http://factorcode.org/license.txt for BSD license.
3 !
4 ! Tested with OpenLDAP 2.2.7.0.21 on Mac OS X 10.4.9 PowerPC
5 !
6 ! export LD_LIBRARY_PATH=/opt/local/lib
7
8 USING: alien alien.syntax combinators kernel system ;
9
10 IN: ldap.libldap
11
12 << "libldap" {
13     { [ win32? ]  [ "libldap.dll" stdcall ] }
14     { [ macosx? ] [ "libldap.dylib" cdecl ] }
15     { [ unix? ]   [ "libldap.so" cdecl ] }
16 } cond add-library >>
17  
18 : LDAP_VERSION1     1 ; inline
19 : LDAP_VERSION2     2 ; inline 
20 : LDAP_VERSION3     3 ; inline
21
22 : LDAP_VERSION_MIN  LDAP_VERSION2 ; inline  
23 : LDAP_VERSION      LDAP_VERSION2 ; inline
24 : LDAP_VERSION_MAX  LDAP_VERSION3 ; inline
25
26 : LDAP_PORT         389 ; inline ! ldap:///   default LDAP port
27 : LDAPS_PORT        636 ; inline ! ldaps:///  default LDAP over TLS port
28
29 : LDAP_SCOPE_BASE         0x0000              ; inline
30 : LDAP_SCOPE_BASEOBJECT   LDAP_SCOPE_BASE        ; inline
31 : LDAP_SCOPE_ONELEVEL     0x0001              ; inline
32 : LDAP_SCOPE_ONE          LDAP_SCOPE_ONELEVEL    ; inline
33 : LDAP_SCOPE_SUBTREE      0x0002              ; inline
34 : LDAP_SCOPE_SUB          LDAP_SCOPE_SUBTREE     ; inline
35 : LDAP_SCOPE_SUBORDINATE  0x0003              ; inline ! OpenLDAP extension
36 : LDAP_SCOPE_CHILDREN     LDAP_SCOPE_SUBORDINATE ; inline
37 : LDAP_SCOPE_DEFAULT      -1                     ; inline ! OpenLDAP extension
38
39 : LDAP_RES_ANY            -1 ; inline
40 : LDAP_RES_UNSOLICITED     0 ; inline
41
42 ! how many messages to retrieve results for
43 : LDAP_MSG_ONE             0x00 ; inline
44 : LDAP_MSG_ALL             0x01 ; inline
45 : LDAP_MSG_RECEIVED        0x02 ; inline
46
47 ! the possible result types returned
48 : LDAP_RES_BIND             0x61 ; inline
49 : LDAP_RES_SEARCH_ENTRY     0x64 ; inline
50 : LDAP_RES_SEARCH_REFERENCE 0x73 ; inline
51 : LDAP_RES_SEARCH_RESULT    0x65 ; inline
52 : LDAP_RES_MODIFY           0x67 ; inline
53 : LDAP_RES_ADD              0x69 ; inline
54 : LDAP_RES_DELETE           0x6b ; inline
55 : LDAP_RES_MODDN            0x6d ; inline
56 : LDAP_RES_COMPARE          0x6f ; inline
57 : LDAP_RES_EXTENDED         0x78 ; inline
58 : LDAP_RES_EXTENDED_PARTIAL 0x79 ; inline
59
60 : result-types ( -- seq ) {
61     { 0x61  "LDAP_RES_BIND" }
62     { 0x64  "LDAP_RES_SEARCH_ENTRY" }
63     { 0x73  "LDAP_RES_SEARCH_REFERENCE" }
64     { 0x65  "LDAP_RES_SEARCH_RESULT" }
65     { 0x67  "LDAP_RES_MODIFY" }
66     { 0x69  "LDAP_RES_ADD" }
67     { 0x6b  "LDAP_RES_DELETE" }
68     { 0x6d  "LDAP_RES_MODDN" }
69     { 0x6f  "LDAP_RES_COMPARE" }
70     { 0x78  "LDAP_RES_EXTENDED" }
71     { 0x79  "LDAP_RES_EXTENDED_PARTIAL" }
72 } ;
73
74 : LDAP_OPT_PROTOCOL_VERSION 0x0011 ; inline
75
76 C-STRUCT: ldap 
77     { "char" "ld_lberoptions" }
78     { "int" "ld_deref" }
79     { "int" "ld_timelimit" }
80     { "int" "ld_sizelimit" }
81     { "int" "ld_errno" }
82     { "char*" "ld_error" }
83     { "char*" "ld_matched" }
84     { "int" "ld_refhoplimit" }
85     { "ulong" "ld_options" } ;
86
87 LIBRARY: libldap
88
89 ! ===============================================
90 ! ldap.h
91 ! ===============================================
92
93 ! Will be depreciated in a later release (ldap_init() is preferred)
94 FUNCTION: void* ldap_open ( char* host, int port ) ;
95
96 FUNCTION: void* ldap_init ( char* host, int port ) ;
97
98 FUNCTION: int ldap_initialize ( ldap* ld, char* url ) ;
99
100 FUNCTION: int ldap_get_option ( void* ld, int option, void* outvalue ) ;
101
102 FUNCTION: int ldap_set_option ( void* ld, int option, void* invalue ) ;
103
104 FUNCTION: int ldap_simple_bind ( void* ld, char* who, char* passwd ) ;
105
106 FUNCTION: int ldap_simple_bind_s ( void* ld, char* who, char* passwd ) ;
107
108 FUNCTION: int ldap_unbind_s ( void* ld ) ;
109
110 FUNCTION: int ldap_result2error ( void* ld, void* res, int freeit ) ;
111
112 FUNCTION: char* ldap_err2string ( int err ) ;
113
114 FUNCTION: int ldap_search ( void* ld, char* base, int scope, char* filter, 
115                            char* attrs, int attrsonly ) ;
116
117 FUNCTION: int ldap_search_s ( void* ld, char* base, int scope, char* filter,
118                              char* attrs, int attrsonly, void* res ) ;
119
120 FUNCTION: int ldap_result ( void* ld, int msgid, int all, void* timeout,
121                             void* result ) ;
122
123 FUNCTION: int ldap_parse_result ( void* ld, void* result, int* errcodep,
124                                  char* matcheddnp, char* errmsgp, 
125                                  char* referralsp, void* serverctrlsp, 
126                                  int freeit ) ;
127
128 FUNCTION: int ldap_count_messages ( void* ld, void* result ) ;
129
130 FUNCTION: void* ldap_first_message ( void* ld, void* result ) ;
131
132 FUNCTION: void* ldap_next_message ( void* ld, void* message ) ;
133
134 FUNCTION: int ldap_msgtype ( void* msg ) ;
135
136 FUNCTION: int ldap_msgid ( void* msg ) ;
137
138 FUNCTION: int ldap_count_entries ( void* ld, void* result ) ;
139
140 FUNCTION: void* ldap_first_entry ( void* ld, void* result ) ;
141
142 FUNCTION: void* ldap_next_entry ( void* ld, void* entry ) ;
143
144 FUNCTION: char* ldap_first_attribute ( void* ld, void* entry, void* berptr ) ;
145
146 FUNCTION: char* ldap_next_attribute ( void* ld, void* entry, void* ber ) ;
147
148 FUNCTION: char** ldap_get_values ( void* ld, void* entry, char* attr ) ;
149
150 FUNCTION: char* ldap_get_dn ( void* ld, void* entry ) ;