ruby-ldap 0.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ldap.c ADDED
@@ -0,0 +1,577 @@
1
+ /* -*- C -*-
2
+ *
3
+ * ldap.c
4
+ * $Id: ldap.c,v 1.14 2005/03/15 10:07:48 ianmacd Exp $
5
+ */
6
+
7
+ #include "ruby.h"
8
+ #include "rbldap.h"
9
+
10
+ VALUE rb_mLDAP;
11
+ VALUE rb_eLDAP_Error;
12
+ VALUE rb_eLDAP_ResultError;
13
+ VALUE rb_eLDAP_InvalidDataError;
14
+ VALUE rb_eLDAP_InvalidEntryError;
15
+
16
+ VALUE
17
+ rb_ldap_class_new (int argc, VALUE argv[], VALUE klass)
18
+ {
19
+ VALUE obj;
20
+
21
+ obj = rb_funcall (klass, rb_intern ("allocate"), 0);
22
+ rb_obj_call_init (obj, argc, argv);
23
+
24
+ return obj;
25
+ }
26
+
27
+ VALUE
28
+ rb_ldap_dummy_method (int argc, VALUE argv[], VALUE self)
29
+ {
30
+ /* do nothing */
31
+ return Qnil;
32
+ }
33
+
34
+ /*
35
+ * call-seq:
36
+ * LDAP.err2string(err) => String
37
+ *
38
+ * Return the text string associated with the LDAP error, +err+.
39
+ */
40
+ VALUE
41
+ rb_ldap_err2string (VALUE self, VALUE err)
42
+ {
43
+ char *cmsg;
44
+ VALUE msg;
45
+
46
+ cmsg = ldap_err2string (NUM2INT (err));
47
+ msg = rb_tainted_str_new2 (cmsg);
48
+
49
+ return msg;
50
+ }
51
+
52
+ /*
53
+ * call-seq:
54
+ * LDAP.dn2ufn(dn) => String or nil
55
+ *
56
+ * Translate the DN, +dn+, to a more User-Friendly Name (UFN).
57
+ *
58
+ * For example:
59
+ *
60
+ * <code>LDAP.dn2ufn('uid=ianmacd,ou=People,dc=google,dc=com')</code>
61
+ *
62
+ * produces:
63
+ *
64
+ * ianmacd, People, google.com
65
+ *
66
+ * The UFN format is described in
67
+ * RFC1781[http://www.faqs.org/rfcs/rfc1781.html].
68
+ */
69
+ VALUE
70
+ rb_ldap_dn2ufn (VALUE self, VALUE dn)
71
+ {
72
+ char *c_dn;
73
+ char *c_ufn;
74
+
75
+ if (dn == Qnil)
76
+ {
77
+ return Qnil;
78
+ }
79
+
80
+ c_dn = StringValueCStr (dn);
81
+ if ((c_ufn = ldap_dn2ufn (c_dn)))
82
+ {
83
+ return rb_tainted_str_new2 (c_ufn);
84
+ }
85
+ else
86
+ {
87
+ return Qnil;
88
+ }
89
+ }
90
+
91
+ /*
92
+ * call-seq:
93
+ * LDAP.mod(mod_type, attr, vals) => LDAP::Mod
94
+ *
95
+ * Create a new LDAP::Mod object of type, +mod_type+. This is most commonly
96
+ * *LDAP_MOD_ADD*, *LDAP_MOD_REPLACE* or *LDAP_MOD_DELETE*, although some LDAP
97
+ * servers may offer extension types.
98
+ *
99
+ * +attr+ should be the name of the attribute on which to operate, whilst
100
+ * +vals+ is an array of values pertaining to +attr+. If +vals+ contains
101
+ * binary data, +mod_type+ should be logically OR'ed (|) with
102
+ * *LDAP_MOD_BVALUES*.
103
+ *
104
+ * LDAP::Mod objects can be passed to methods in the LDAP::Conn class, such as
105
+ * Conn#add, Conn#add_ext, Conn#modify and Conn#modify_ext.
106
+ */
107
+ static VALUE
108
+ rb_ldap_mod_s_new (int argc, VALUE argv[], VALUE klass)
109
+ {
110
+ return rb_ldap_class_new (argc, argv, rb_cLDAP_Mod);
111
+ }
112
+
113
+ static VALUE
114
+ rb_ldap_hash2mods_i (VALUE type_vals, VALUE tmp)
115
+ {
116
+ VALUE type, vals, op, result;
117
+ VALUE args[3];
118
+
119
+ op = rb_ary_entry (tmp, 0);
120
+ result = rb_ary_entry (tmp, 1);
121
+
122
+ type = rb_ary_entry (type_vals, 0);
123
+ vals = rb_ary_entry (type_vals, 1);
124
+
125
+ args[0] = op, args[1] = type, args[2] = vals;
126
+ rb_ary_push (result, rb_ldap_mod_s_new (3, args, rb_cLDAP_Mod));
127
+ return Qnil;
128
+ }
129
+
130
+ /*
131
+ * call-seq:
132
+ * LDAP.hash2mods(mod_type, hash) => Array of LDAP::Mod
133
+ *
134
+ * Convert a hash into an array of LDAP::Mod objects. +mod_type+ should
135
+ * contain the mod type, which is most commonly *LDAP_MOD_ADD*,
136
+ * *LDAP_MOD_REPLACE* or *LDAP_MOD_DELETE*, although some LDAP servers may
137
+ * offer extension types.
138
+ */
139
+ VALUE
140
+ rb_ldap_hash2mods (VALUE self, VALUE op, VALUE hash)
141
+ {
142
+ VALUE tmp;
143
+
144
+ tmp = rb_assoc_new (op, rb_ary_new ());
145
+ rb_iterate (rb_each, hash, rb_ldap_hash2mods_i, tmp);
146
+
147
+ return rb_ary_entry (tmp, 1);
148
+ }
149
+
150
+ /*
151
+ * call-seq:
152
+ * LDAP.entry2hash(entry) => Hash
153
+ *
154
+ * Convert the entry, +entry+, to a hash.
155
+ */
156
+ VALUE
157
+ rb_ldap_entry2hash (VALUE self, VALUE entry)
158
+ {
159
+ return rb_ldap_entry_to_hash (entry);
160
+ }
161
+
162
+
163
+
164
+ extern void Init_ldap_entry ();
165
+ extern void Init_ldap_conn ();
166
+ extern void Init_ldap_sslconn ();
167
+ extern void Init_ldap_saslconn ();
168
+ extern void Init_ldap_mod ();
169
+ extern void Init_ldap_misc ();
170
+
171
+ /* Document-class: LDAP
172
+ *
173
+ * Container module for LDAP-related classes.
174
+ */
175
+ void
176
+ Init_ldap ()
177
+ {
178
+ rb_mLDAP = rb_define_module ("LDAP");
179
+
180
+ rb_define_const (rb_mLDAP, "LDAP_VERSION", INT2NUM (LDAP_VERSION));
181
+
182
+ #ifdef LDAP_VERSION1
183
+ rb_define_const (rb_mLDAP, "LDAP_VERSION1", INT2NUM (LDAP_VERSION1));
184
+ #endif
185
+
186
+ #ifdef LDAP_VERSION2
187
+ rb_define_const (rb_mLDAP, "LDAP_VERSION2", INT2NUM (LDAP_VERSION2));
188
+ #endif
189
+
190
+ #ifdef LDAP_VERSION3
191
+ rb_define_const (rb_mLDAP, "LDAP_VERSION3", INT2NUM (LDAP_VERSION3));
192
+ #endif
193
+
194
+ #ifdef LDAP_VERSION_MAX
195
+ rb_define_const (rb_mLDAP, "LDAP_VERSION_MAX", INT2NUM (LDAP_VERSION_MAX));
196
+ #else
197
+ rb_define_const (rb_mLDAP, "LDAP_VERSION_MAX", INT2NUM (LDAP_VERSION));
198
+ #endif
199
+
200
+ rb_define_const (rb_mLDAP, "VERSION",
201
+ rb_tainted_str_new2 (RB_LDAP_VERSION));
202
+ rb_define_const (rb_mLDAP, "MAJOR_VERSION",
203
+ INT2NUM (RB_LDAP_MAJOR_VERSION));
204
+ rb_define_const (rb_mLDAP, "MINOR_VERSION",
205
+ INT2NUM (RB_LDAP_MINOR_VERSION));
206
+ rb_define_const (rb_mLDAP, "PATCH_VERSION",
207
+ INT2NUM (RB_LDAP_PATCH_VERSION));
208
+
209
+ #ifdef LDAP_API_INFO_VERSION
210
+ rb_define_const (rb_mLDAP, "LDAP_API_INFO_VERSION",
211
+ INT2NUM (LDAP_API_INFO_VERSION));
212
+ #else
213
+ rb_define_const (rb_mLDAP, "LDAP_API_INFO_VERSION", Qnil);
214
+ #endif
215
+
216
+ #ifdef LDAP_VENDOR_VERSION
217
+ rb_define_const (rb_mLDAP, "LDAP_VENDOR_VERSION",
218
+ INT2NUM (LDAP_VENDOR_VERSION));
219
+ #else
220
+ rb_define_const (rb_mLDAP, "LDAP_VENDOR_VERSION", Qnil);
221
+ #endif
222
+ #ifdef LDAP_VENDOR_NAME
223
+ rb_define_const (rb_mLDAP, "LDAP_VENDOR_NAME",
224
+ rb_tainted_str_new2 (LDAP_VENDOR_NAME));
225
+ #else
226
+ rb_define_const (rb_mLDAP, "LDAP_VENDOR_NAME", Qnil);
227
+ #endif
228
+
229
+ #ifdef LDAP_API_VERSION
230
+ rb_define_const (rb_mLDAP, "LDAP_API_VERSION", INT2NUM (LDAP_API_VERSION));
231
+ #else
232
+ rb_define_const (rb_mLDAP, "LDAP_API_VERSION", Qnil);
233
+ #endif
234
+
235
+ rb_define_const (rb_mLDAP, "LDAP_PORT", INT2NUM (389));
236
+ rb_define_const (rb_mLDAP, "LDAPS_PORT", INT2NUM (636));
237
+ rb_eLDAP_Error =
238
+ rb_define_class_under (rb_mLDAP, "Error", rb_eStandardError);
239
+ rb_eLDAP_ResultError =
240
+ rb_define_class_under (rb_mLDAP, "ResultError", rb_eLDAP_Error);
241
+ rb_eLDAP_InvalidDataError =
242
+ rb_define_class_under (rb_mLDAP, "InvalidDataError", rb_eLDAP_Error);
243
+ rb_eLDAP_InvalidEntryError =
244
+ rb_define_class_under (rb_mLDAP, "InvalidEntryError",
245
+ rb_eLDAP_InvalidDataError);
246
+
247
+
248
+ rb_define_module_function (rb_mLDAP, "err2string", rb_ldap_err2string, 1);
249
+ rb_define_module_function (rb_mLDAP, "dn2ufn", rb_ldap_dn2ufn, 1);
250
+ rb_define_module_function (rb_mLDAP, "mod", rb_ldap_mod_s_new, -1);
251
+ rb_define_module_function (rb_mLDAP, "hash2mods", rb_ldap_hash2mods, 2);
252
+ rb_define_module_function (rb_mLDAP, "entry2hash", rb_ldap_entry2hash, 1);
253
+
254
+ /* the following error code must be defined in ldap.h */
255
+ #define rb_ldap_define_err_code(code) rb_define_const(rb_mLDAP,#code,INT2NUM(code))
256
+ rb_ldap_define_err_code (LDAP_SUCCESS);
257
+ rb_ldap_define_err_code (LDAP_OPERATIONS_ERROR);
258
+ rb_ldap_define_err_code (LDAP_PROTOCOL_ERROR);
259
+ rb_ldap_define_err_code (LDAP_TIMELIMIT_EXCEEDED);
260
+ rb_ldap_define_err_code (LDAP_SIZELIMIT_EXCEEDED);
261
+ rb_ldap_define_err_code (LDAP_COMPARE_FALSE);
262
+ rb_ldap_define_err_code (LDAP_COMPARE_TRUE);
263
+ #ifdef LDAP_STRONG_AUTH_NOT_SUPPORTED
264
+ rb_ldap_define_err_code (LDAP_STRONG_AUTH_NOT_SUPPORTED);
265
+ #endif
266
+ #ifdef LDAP_AUTH_METHOD_NOT_SUPPORTED
267
+ rb_ldap_define_err_code (LDAP_AUTH_METHOD_NOT_SUPPORTED);
268
+ #endif
269
+ rb_ldap_define_err_code (LDAP_STRONG_AUTH_REQUIRED);
270
+ #ifdef LDAP_REFERRAL
271
+ rb_ldap_define_err_code (LDAP_REFERRAL);
272
+ #endif
273
+ #ifdef LDAP_ADMINLIMIT_EXCEEDED
274
+ rb_ldap_define_err_code (LDAP_ADMINLIMIT_EXCEEDED);
275
+ #endif
276
+ #ifdef LDAP_UNAVAILABLE_CRITICAL_EXTENSION
277
+ rb_ldap_define_err_code (LDAP_UNAVAILABLE_CRITICAL_EXTENSION);
278
+ #endif
279
+ #ifdef LDAP_CONFIDENTIALITY_REQUIRED
280
+ rb_ldap_define_err_code (LDAP_CONFIDENTIALITY_REQUIRED);
281
+ #endif
282
+ #ifdef LDAP_SASL_BIND_IN_PROGRESS
283
+ rb_ldap_define_err_code (LDAP_SASL_BIND_IN_PROGRESS);
284
+ #endif
285
+ #ifdef LDAP_PARTIAL_RESULTS
286
+ rb_ldap_define_err_code (LDAP_PARTIAL_RESULTS);
287
+ #endif
288
+ rb_ldap_define_err_code (LDAP_NO_SUCH_ATTRIBUTE);
289
+ rb_ldap_define_err_code (LDAP_UNDEFINED_TYPE);
290
+ rb_ldap_define_err_code (LDAP_INAPPROPRIATE_MATCHING);
291
+ rb_ldap_define_err_code (LDAP_CONSTRAINT_VIOLATION);
292
+ rb_ldap_define_err_code (LDAP_TYPE_OR_VALUE_EXISTS);
293
+ rb_ldap_define_err_code (LDAP_INVALID_SYNTAX);
294
+ rb_ldap_define_err_code (LDAP_NO_SUCH_OBJECT);
295
+ rb_ldap_define_err_code (LDAP_ALIAS_PROBLEM);
296
+ rb_ldap_define_err_code (LDAP_INVALID_DN_SYNTAX);
297
+ rb_ldap_define_err_code (LDAP_IS_LEAF);
298
+ rb_ldap_define_err_code (LDAP_ALIAS_DEREF_PROBLEM);
299
+ rb_ldap_define_err_code (LDAP_INAPPROPRIATE_AUTH);
300
+ rb_ldap_define_err_code (LDAP_INVALID_CREDENTIALS);
301
+ rb_ldap_define_err_code (LDAP_INSUFFICIENT_ACCESS);
302
+ rb_ldap_define_err_code (LDAP_BUSY);
303
+ rb_ldap_define_err_code (LDAP_UNAVAILABLE);
304
+ rb_ldap_define_err_code (LDAP_UNWILLING_TO_PERFORM);
305
+ rb_ldap_define_err_code (LDAP_LOOP_DETECT);
306
+ rb_ldap_define_err_code (LDAP_NAMING_VIOLATION);
307
+ rb_ldap_define_err_code (LDAP_OBJECT_CLASS_VIOLATION);
308
+ rb_ldap_define_err_code (LDAP_NOT_ALLOWED_ON_NONLEAF);
309
+ rb_ldap_define_err_code (LDAP_NOT_ALLOWED_ON_RDN);
310
+ rb_ldap_define_err_code (LDAP_ALREADY_EXISTS);
311
+ rb_ldap_define_err_code (LDAP_NO_OBJECT_CLASS_MODS);
312
+ rb_ldap_define_err_code (LDAP_RESULTS_TOO_LARGE);
313
+ rb_ldap_define_err_code (LDAP_OTHER);
314
+ rb_ldap_define_err_code (LDAP_SERVER_DOWN);
315
+ rb_ldap_define_err_code (LDAP_LOCAL_ERROR);
316
+ rb_ldap_define_err_code (LDAP_ENCODING_ERROR);
317
+ rb_ldap_define_err_code (LDAP_DECODING_ERROR);
318
+ rb_ldap_define_err_code (LDAP_TIMEOUT);
319
+ rb_ldap_define_err_code (LDAP_AUTH_UNKNOWN);
320
+ rb_ldap_define_err_code (LDAP_FILTER_ERROR);
321
+ rb_ldap_define_err_code (LDAP_USER_CANCELLED);
322
+ rb_ldap_define_err_code (LDAP_PARAM_ERROR);
323
+ rb_ldap_define_err_code (LDAP_NO_MEMORY);
324
+ /* rb_ldap_define_err_code(LDAP_CONNECT_ERROR); */
325
+ #undef rb_ldap_define_err_code
326
+
327
+ #define rb_ldap_define_opt(code) rb_define_const(rb_mLDAP,#code,INT2NUM((int)code))
328
+ #ifdef LDAP_OPT_ON
329
+ rb_ldap_define_opt (LDAP_OPT_ON);
330
+ #endif
331
+ #ifdef LDAP_OPT_OFF
332
+ rb_ldap_define_opt (LDAP_OPT_OFF);
333
+ #endif
334
+ #ifdef LDAP_OPT_DESC
335
+ rb_ldap_define_opt (LDAP_OPT_DESC);
336
+ #endif
337
+ #ifdef LDAP_OPT_DEREF
338
+ rb_ldap_define_opt (LDAP_OPT_DEREF);
339
+ #endif
340
+ #ifdef LDAP_OPT_SIZELIMIT
341
+ rb_ldap_define_opt (LDAP_OPT_SIZELIMIT);
342
+ #endif
343
+ #ifdef LDAP_OPT_TIMELIMIT
344
+ rb_ldap_define_opt (LDAP_OPT_TIMELIMIT);
345
+ #endif
346
+ #ifdef LDAP_OPT_THREAD_FN_PTRS
347
+ rb_ldap_define_opt (LDAP_OPT_THREAD_FN_PTRS);
348
+ #endif
349
+ #ifdef LDAP_OPT_REBIND_FN
350
+ rb_ldap_define_opt (LDAP_OPT_REBIND_FN);
351
+ #endif
352
+ #ifdef LDAP_OPT_REBIND_ARG
353
+ rb_ldap_define_opt (LDAP_OPT_REBIND_ARG);
354
+ #endif
355
+ #ifdef LDAP_OPT_REFERRALS
356
+ rb_ldap_define_opt (LDAP_OPT_REFERRALS);
357
+ #endif
358
+ #ifdef LDAP_OPT_RESTART
359
+ rb_ldap_define_opt (LDAP_OPT_RESTART);
360
+ #endif
361
+ #ifdef LDAP_OPT_SSL
362
+ rb_ldap_define_opt (LDAP_OPT_SSL);
363
+ #endif
364
+ #ifdef LDAP_OPT_IO_FN_PTRS
365
+ rb_ldap_define_opt (LDAP_OPT_IO_FN_PTRS);
366
+ #endif
367
+ #ifdef LDAP_OPT_CACHE_FN_PTRS
368
+ rb_ldap_define_opt (LDAP_OPT_CACHE_FN_PTRS);
369
+ #endif
370
+ #ifdef LDAP_OPT_CACHE_STRATEGY
371
+ rb_ldap_define_opt (LDAP_OPT_CACHE_STRATEGY);
372
+ #endif
373
+ #ifdef LDAP_OPT_CACHE_ENABLE
374
+ rb_ldap_define_opt (LDAP_OPT_CACHE_ENABLE);
375
+ #endif
376
+ #ifdef LDAP_OPT_REFERRAL_HOP_LIMIT
377
+ rb_ldap_define_opt (LDAP_OPT_REFERRAL_HOP_LIMIT);
378
+ #endif
379
+ #ifdef LDAP_OPT_PROTOCOL_VERSION
380
+ rb_ldap_define_opt (LDAP_OPT_PROTOCOL_VERSION);
381
+ #endif
382
+ #ifdef LDAP_OPT_SERVER_CONTROLS
383
+ rb_ldap_define_opt (LDAP_OPT_SERVER_CONTROLS);
384
+ #endif
385
+ #ifdef LDAP_OPT_CLIENT_CONTROLS
386
+ rb_ldap_define_opt (LDAP_OPT_CLIENT_CONTROLS);
387
+ #endif
388
+ #ifdef LDAP_OPT_PREFERRED_LANGUAGE
389
+ rb_ldap_define_opt (LDAP_OPT_PREFERRED_LANGUAGE);
390
+ #endif
391
+ #ifdef LDAP_OPT_API_INFO
392
+ rb_ldap_define_opt (LDAP_OPT_API_INFO);
393
+ #endif
394
+ #ifdef LDAP_OPT_API_FEATURE_INFO
395
+ rb_ldap_define_opt (LDAP_OPT_API_FEATURE_INFO);
396
+ #endif
397
+ #ifdef LDAP_OPT_HOST_NAME
398
+ rb_ldap_define_opt (LDAP_OPT_HOST_NAME);
399
+ #endif
400
+
401
+ #ifdef USE_OPENLDAP2 /* OpenLDAP TLS,SASL options */
402
+ #ifdef LDAP_OPT_X_TLS_CACERTFILE
403
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_CACERTFILE);
404
+ #endif
405
+ #ifdef LDAP_OPT_X_TLS_CACERTDIR
406
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_CACERTDIR);
407
+ #endif
408
+ #ifdef LDAP_OPT_X_TLS_CERT
409
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_CERT);
410
+ #endif
411
+ #ifdef LDAP_OPT_X_TLS_CERTFILE
412
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_CERTFILE);
413
+ #endif
414
+ #ifdef LDAP_OPT_X_TLS_KEYFILE
415
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_KEYFILE);
416
+ #endif
417
+ #ifdef LDAP_OPT_X_TLS_REQUIRE_CERT
418
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_REQUIRE_CERT);
419
+ #endif
420
+ #ifdef LDAP_OPT_X_TLS
421
+ rb_ldap_define_opt (LDAP_OPT_X_TLS);
422
+ #endif
423
+ #ifdef LDAP_OPT_X_TLS_PROTOCOL_MIN
424
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_PROTOCOL_MIN);
425
+ #endif
426
+ #ifdef LDAP_OPT_X_TLS_CIPHER_SUITE
427
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_CIPHER_SUITE);
428
+ #endif
429
+ #ifdef LDAP_OPT_X_TLS_RANDOM_FILE
430
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_RANDOM_FILE);
431
+ #endif
432
+ #ifdef LDAP_OPT_X_TLS_NEVER
433
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_NEVER);
434
+ #endif
435
+ #ifdef LDAP_OPT_X_TLS_HARD
436
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_HARD);
437
+ #endif
438
+ #ifdef LDAP_OPT_X_TLS_DEMAND
439
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_DEMAND);
440
+ #endif
441
+ #ifdef LDAP_OPT_X_TLS_ALLOW
442
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_ALLOW);
443
+ #endif
444
+ #ifdef LDAP_OPT_X_TLS_TRY
445
+ rb_ldap_define_opt (LDAP_OPT_X_TLS_TRY);
446
+ #endif
447
+ #ifdef LDAP_OPT_X_SASL_MECH
448
+ rb_ldap_define_opt (LDAP_OPT_X_SASL_MECH);
449
+ #endif
450
+ #ifdef LDAP_OPT_X_SASL_REALM
451
+ rb_ldap_define_opt (LDAP_OPT_X_SASL_REALM);
452
+ #endif
453
+ #ifdef LDAP_OPT_X_SASL_AUTHCID
454
+ rb_ldap_define_opt (LDAP_OPT_X_SASL_AUTHCID);
455
+ #endif
456
+ #ifdef LDAP_OPT_X_SASL_AUTHZID
457
+ rb_ldap_define_opt (LDAP_OPT_X_SASL_AUTHZID);
458
+ #endif
459
+ #ifdef LDAP_OPT_X_SASL_SSF
460
+ rb_ldap_define_opt (LDAP_OPT_X_SASL_SSF);
461
+ #endif
462
+ #ifdef LDAP_OPT_X_SASL_SSF_EXTERNAL
463
+ rb_ldap_define_opt (LDAP_OPT_X_SASL_SSF_EXTERNAL);
464
+ #endif
465
+ #ifdef LDAP_OPT_X_SASL_SECPROPS
466
+ rb_ldap_define_opt (LDAP_OPT_X_SASL_SECPROPS);
467
+ #endif
468
+ #ifdef LDAP_OPT_X_SASL_SSF_MIN
469
+ rb_ldap_define_opt (LDAP_OPT_X_SASL_SSF_MIN);
470
+ #endif
471
+ #ifdef LDAP_OPT_X_SASL_SSF_MAX
472
+ rb_ldap_define_opt (LDAP_OPT_X_SASL_SSF_MAX);
473
+ #endif
474
+ #ifdef LDAP_OPT_X_SASL_MAXBUFSIZE
475
+ rb_ldap_define_opt (LDAP_OPT_X_SASL_MAXBUFSIZE);
476
+ #endif
477
+ #endif /* USE_OPENLDAP2 */
478
+
479
+
480
+ #undef rb_ldap_define_opt
481
+
482
+ /* these constants indicate search scopes */
483
+ #define rb_ldap_define_scope(scope) rb_define_const(rb_mLDAP,#scope,INT2NUM(scope))
484
+ rb_ldap_define_scope (LDAP_SCOPE_BASE);
485
+ rb_ldap_define_scope (LDAP_SCOPE_SUBTREE);
486
+ rb_ldap_define_scope (LDAP_SCOPE_ONELEVEL);
487
+ #undef rb_ldap_define_scope
488
+
489
+ #define rb_ldap_define_deref(x) rb_define_const(rb_mLDAP,#x,INT2NUM(x))
490
+ #ifdef LDAP_DEREF_NEVER
491
+ rb_ldap_define_deref (LDAP_DEREF_NEVER);
492
+ #endif
493
+ #ifdef LDAP_DEREF_SEARCHING
494
+ rb_ldap_define_deref (LDAP_DEREF_SEARCHING);
495
+ #endif
496
+ #ifdef LDAP_DEREF_FINDING
497
+ rb_ldap_define_deref (LDAP_DEREF_FINDING);
498
+ #endif
499
+ #ifdef LDAP_DEREF_ALWAYS
500
+ rb_ldap_define_deref (LDAP_DEREF_ALWAYS);
501
+ #endif
502
+ #undef rb_ldap_define_deref
503
+
504
+ #define rb_ldap_define_sasl_mech(c) \
505
+ (c ? rb_define_const(rb_mLDAP,#c,rb_str_new2(c)) : rb_define_const(rb_mLDAP,#c,Qnil))
506
+ #ifdef LDAP_SASL_SIMPLE
507
+ rb_ldap_define_sasl_mech (LDAP_SASL_SIMPLE);
508
+ #endif
509
+ #undef rb_ldap_define_sasl_mech
510
+
511
+ #define rb_ldap_define_auth_method(c) rb_define_const(rb_mLDAP,#c,INT2NUM(c))
512
+ rb_ldap_define_auth_method (LDAP_AUTH_NONE);
513
+ rb_ldap_define_auth_method (LDAP_AUTH_SIMPLE);
514
+ #ifdef LDAP_AUTH_KRBV41
515
+ rb_ldap_define_auth_method (LDAP_AUTH_KRBV41);
516
+ #endif
517
+ #ifdef LDAP_AUTH_KRBV42
518
+ rb_ldap_define_auth_method (LDAP_AUTH_KRBV42);
519
+ #endif
520
+ #ifdef LDAP_AUTH_SASL
521
+ rb_ldap_define_auth_method (LDAP_AUTH_SASL);
522
+ #endif
523
+ #ifdef LDAP_KRBV4
524
+ rb_ldap_define_auth_method (LDAP_KRBV4);
525
+ #endif
526
+ /* wldap32.h */
527
+ #ifdef LDAP_AUTH_OTHERKIND
528
+ rb_ldap_define_auth_method (LDAP_AUTH_OTHERKIND);
529
+ #endif
530
+ #ifdef LDAP_AUTH_DPA
531
+ rb_ldap_define_auth_method (LDAP_AUTH_DPA);
532
+ #endif
533
+ #ifdef LDAP_AUTH_MSN
534
+ rb_ldap_define_auth_method (LDAP_AUTH_MSN);
535
+ #endif
536
+ #ifdef LDAP_AUTH_NEGOTIATE
537
+ rb_ldap_define_auth_method (LDAP_AUTH_NEGOTIATE);
538
+ #endif
539
+ #ifdef LDAP_AUTH_NTLM
540
+ rb_ldap_define_auth_method (LDAP_AUTH_NTLM);
541
+ #endif
542
+ #ifdef LDAP_AUTH_SICILY
543
+ rb_ldap_define_auth_method (LDAP_AUTH_SICILY);
544
+ #endif
545
+ #ifdef LDAP_AUTH_SSPI
546
+ rb_ldap_define_auth_method (LDAP_AUTH_SSPI);
547
+ #endif
548
+ #undef rb_ldap_define_auth_method
549
+
550
+ #ifdef LDAP_CONTROL_PAGEDRESULTS
551
+ rb_define_const (rb_mLDAP, "LDAP_CONTROL_PAGEDRESULTS",
552
+ rb_str_new2 (LDAP_CONTROL_PAGEDRESULTS));
553
+ #endif
554
+
555
+ #define rb_ldap_define_const(c) rb_define_const(rb_mLDAP,#c,INT2NUM(c))
556
+ rb_ldap_define_const (LDAP_MOD_ADD);
557
+ rb_ldap_define_const (LDAP_MOD_DELETE);
558
+ rb_ldap_define_const (LDAP_MOD_REPLACE);
559
+ rb_ldap_define_const (LDAP_MOD_BVALUES);
560
+ #ifdef LDAP_MOD_INCREMENT
561
+ /*
562
+ * See http://www.ietf.org/internet-drafts/draft-zeilenga-ldap-incr-00.txt
563
+ */
564
+ rb_ldap_define_const (LDAP_MOD_INCREMENT);
565
+ #endif
566
+ #ifdef LDAP_MOD_OP
567
+ rb_ldap_define_const (LDAP_MOD_OP);
568
+ #endif
569
+ #undef rb_ldap_define_const
570
+
571
+ Init_ldap_conn ();
572
+ Init_ldap_sslconn ();
573
+ Init_ldap_saslconn ();
574
+ Init_ldap_entry ();
575
+ Init_ldap_mod ();
576
+ Init_ldap_misc ();
577
+ }