forked from jeremycx/node-LDAP
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLDAP.js
More file actions
85 lines (71 loc) · 2.25 KB
/
Copy pathLDAP.js
File metadata and controls
85 lines (71 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
var ldapbinding = require("./build/default/LDAP");
var Connection = function() {
var callbacks = {};
var binding = new ldapbinding.LDAPConnection();
var self = this;
var querytimeout = 5000;
var totalqueries = 0;
self.BASE = 0;
self.ONELEVEL = 1;
self.SUBTREE = 2;
self.SUBORDINATE = 3;
self.DEFAULT = -1;
self.SetCallback = function(msgid, CB) {
if (msgid > 0) {
totalqueries++;
if (typeof(CB) == 'function') {
callbacks[msgid] = CB;
callbacks[msgid].tm = setTimeout(function() {
CB(msgid, -2);
delete callbacks[msgid];
}, querytimeout);
}
}
return msgid;
}
self.Open = function(uri, version) {
if (arguments.length < 2) {
return binding.Open(uri, 3);
}
return binding.Open(uri, version);
}
self.Search = function(base, scope, filter, attrs, CB) {
var msgid = binding.Search(base, scope, filter, attrs);
return self.SetCallback(msgid, CB);
}
self.SimpleBind = function(binddn, password, CB) {
var msgid;
if (arguments.length == 0) {
msgid = binding.SimpleBind();
} else {
msgid = binding.SimpleBind(binddn, password);
}
return self.SetCallback(msgid, CB);
}
self.Add = function(dn, data, CB) {
var msgid = binding.Add(dn, data);
return self.SetCallback(msgid, CB);
}
self.Modify = function(dn, data, CB) {
var msgid = binding.Modify(dn, data);
return self.SetCallback(msgid, CB);
}
self.addListener = function(event, CB) {
binding.addListener(event, CB);
}
binding.addListener("searchresult", function(msgid, result, data) {
if (callbacks[msgid]) {
clearTimeout(callbacks[msgid].tm);
callbacks[msgid](msgid, result, data);
delete(callbacks[msgid]);
}
});
binding.addListener("result", function(msgid, result) {
if (callbacks[msgid]) {
clearTimeout(callbacks[msgid].tm);
callbacks[msgid](msgid, result);
delete(callbacks[msgid]);
}
});
}
exports.Connection = Connection;