node-ldapjs/examples/pooled_client.js

61 lines
1.4 KiB
JavaScript

var Logger = require('bunyan');
var ldap = require('../lib/index');
///
// Run the "inmemory.js" server in the same directory
///
function ifError(err) {
if (err) {
console.error(err.stack);
process.exit(1);
}
}
var LOG = new Logger({
name: 'ldapjs',
stream: process.stderr,
level: (process.env.LOG_LEVEL || 'info'),
serializers: Logger.stdSerializers
});
var MAX_CONNS = process.env.LDAP_MAX_CONNS || 10;
var client = ldap.createClient({
url: 'ldap://localhost:1389',
maxConnections: MAX_CONNS,
log: LOG
});
client.bind('cn=root', 'secret', function (err) {
ifError(err);
client.add('o=smartdc', {o: 'smartdc'}, function (err) {
ifError(err);
var finished = 0;
for (var i = 0; i < MAX_CONNS; i++) {
client.search('o=smartdc', function (err, res) {
ifError(err);
res.on('end', function () {
if (++finished === (MAX_CONNS - 1)) {
console.error('Go kill the LDAP server and restart it')
setTimeout(function () {
console.log('readding suffix');
client.add('o=smartdc', {o: 'smartdc'}, function (err) {
ifError(err);
client.unbind(function () {
console.log('All done');
process.exit(0);
});
});
}, 15000);
}
});
});
}
});
});