Socket
Socket
Sign inDemoInstall

ad-promise

Package Overview
Dependencies
4
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.5.2 to 1.5.3

5

lib/activedirectory.js

@@ -104,7 +104,2 @@ const events = require('events');

// Enable connection pooling
// TODO: To be disabled / removed in future release of ldapjs > 0.7.1
if (typeof (this.opts.maxConnections) === 'undefined') {
this.opts.maxConnections = 20;
}
events.EventEmitter.call(this);

@@ -111,0 +106,0 @@ }

5

lib/configs/config.defaultClientOpts.js
module.exports = {
reconnect : true
reconnect : true,
maxConnections : 20,
maxIdleTime : 120000,
checkInterval : 30000
}

7

lib/configs/config.maxPromiseGroup.js
module.exports = {
chunks : null,
maxSearchesAtOnce: 2000,
chunksItems : null,
maxSearchesAtOnce: 6000,
members : null,
searchTimeoutAndReject : {

@@ -9,3 +10,3 @@ // Timeout : {

// retryAttempts: 1,
// timeoutMillis: 2000
// timeoutMillis: 30000
// },

@@ -12,0 +13,0 @@ Reject : {

@@ -44,3 +44,3 @@

})
}, [members], null, "members", {
}, [members], maxPromiseConfig.chunksItems, "members", {
Reject : {

@@ -47,0 +47,0 @@ rejectBehaviour : "retry",

@@ -11,15 +11,14 @@ const pendingRangeRetrievals = require('./service.search.pendingRangeRetrievals');

* @param {Array} results The search results
* @param {Function} callback The Callback of the search
* @param {Function} resolve resolve the search
* @param {Function} reject reject the search
*/
function onSearchEnd(client, baseDN, opts, results, callback, resolve, reject) {
function onSearchEnd(client, baseDN, opts, results, resolve, reject) {
if ((!pendingRangeRetrievals.get()) && (pendingReferrals.get().length <= 0)) {
client.unbind();
log.info('Active directory search (%s) for "%s" returned %d entries.',
baseDN, truncateLogOutput(opts.filter),
(results || []).length);
if (callback) callback(null, results);
if (resolve) resolve(results);
return;
if(client.connected){
client.unbind( () => {
return resolve(results);
});
} else {
return resolve(results);
}
}

@@ -26,0 +25,0 @@ }

@@ -8,10 +8,15 @@ const log = require('../service.log');

* @param {String} baseDN
* @param {Object} opts Options
* @param {Function} resolve Resolve the search request
* @param {Function} reject reject the search request
* @param {Object} res The optional server response.
*
* @returns {void}
*/
function onClientError(err, client, searchStarted, baseDN, opts, callback, resolve, reject, SentBy) {
let ignoreError = false;
function onClientError(err, client, searchStarted, baseDN, opts, results, resolve, reject) {
// let ignoreError = false;
if ((err || {}).name === 'SizeLimitExceededError') {
onSearchEnd(resolve, reject);
onSearchEnd(client, baseDN, opts, results, resolve, reject);
return;

@@ -25,19 +30,17 @@ }

if((err || {}).errno ==='ECONNRESET'){
ignoreError = true;
// ignoreError = true;
}
client.unbind();
log.error(err, '[%s] An error occurred performing the requested LDAP search on %s (%j)',
(err || {}).errno || 'UNKNOWN', baseDN, opts);
if(ignoreError){
if (callback){
callback(err);
}
if(reject){
reject(err);
}
}
return;
if(client.connected) {
client.unbind(() => {
// log.error(err, '[%s] An error occurred performing the requested LDAP search on %s (%j)',
// (err || {}).errno || 'UNKNOWN', baseDN, opts);
return reject(err);
});
} else {
return reject(err);
}
}
module.exports = onClientError;

@@ -18,3 +18,3 @@ const limitpromises = require('limitpromises');

*/
function onReferralChase(self, ref, opts, controls, results, resolve, reject) {
function onReferralChase(self, client, baseDN, ref, opts, controls, results, resolve, reject) {
var index = 0;

@@ -55,6 +55,6 @@ var referralUrl;

res.on('searchEntry', entry => {
onSearchEntry(entry, self, opts, isDone, results, resolve, reject);
onSearchEntry(entry, client, baseDN, self, opts, isDone, results, resolve, reject);
});
res.on('searchReference', ref => {
onReferralChase(self, ref, opts, controls, results, resolve, reject);
onReferralChase(self, client, baseDN, ref, opts, controls, results, resolve, reject);
});

@@ -61,0 +61,0 @@ res.on('error', onReferralError);

const parseRangeAttributes = require('../service.parseRangeAttributes');
const pendingRangeRetrievals = require('./service.search.pendingRangeRetrievals');
const log = require('../service.log');
const onSearchEnd = require('./service.onSearchEnd');

@@ -13,3 +14,3 @@ /**

*/
function onSearchEntry(entry, self, opts, isDone, results, resolve, reject) {
function onSearchEntry(entry, client, baseDN, self, opts, isDone, results, resolve, reject) {
/**

@@ -38,3 +39,3 @@ * The default entry parser to use. Does not modifications.

if ((!pendingRangeRetrievals.get()) && (isDone)) {
onSearchEnd(client, baseDN, opts, results, isDone, callback, resolve, reject);
onSearchEnd(client, baseDN, opts, results, resolve, reject);
}

@@ -41,0 +42,0 @@ });

@@ -9,3 +9,3 @@ const pendingReferrals = require('./service.search.pendingReferrals');

function removeReferral(client) {
if (!client) return;
if (!client || !client.connected) return;

@@ -12,0 +12,0 @@ client.unbind();

@@ -18,3 +18,3 @@ const _ = require('underscore');

'queueDisable', 'bindDN', 'bindCredentials',
'maxConnections', 'reconnect'
'maxConnections', 'reconnect', 'checkInterval', 'maxIdleTime'
));

@@ -21,0 +21,0 @@

@@ -46,7 +46,4 @@

var client = createClient.call(self, null, opts);
client.on('error', err => {
onClientError(err, client, searchStarted, baseDN, opts, null, null, "Client")
});
var controls = opts.controls || (opts.controls = []);

@@ -74,7 +71,11 @@ // Add paging results control by default if not already added.

// We want to limit the total of the searches, we will use [true] as InputValues as we don't use it anyways in the function
limitpromises(Input => {
let s = limitpromises(Input => {
return new Promise((resolve, reject) => {
var client = createClient.call(self, null, opts);
client.on('error', err => {
onClientError(err, client, searchStarted, baseDN, opts, results, resolve, reject)
});
client.search(baseDN, getLdapOpts(opts), controls, function onSearch(err, res) {
if (err) {
if (callback) callback(err);
reject(err);

@@ -84,13 +85,13 @@ }

res.on('searchEntry', entry => {
onSearchEntry(entry, self, opts, isDone, results, resolve, reject);
onSearchEntry(entry, client, baseDN, self, opts, isDone, results, resolve, reject);
});
res.on('searchReference', ref => {
onReferralChase(self, ref, opts, controls, results, resolve, reject);
onReferralChase(self, client, ref, opts, controls, results, resolve, reject);
});
res.on('error', function (err) {
onClientError(err, client, searchStarted, baseDN, opts, callback, resolve, reject, "Search");
onClientError(err, client, searchStarted, baseDN, opts, results, resolve, reject);
});
res.on('end', function (result) {
isDone = true; // Flag that the primary query is complete
onSearchEnd(client, baseDN, opts, results, callback, resolve, reject);
onSearchEnd(client, baseDN, opts, results, resolve, reject);
});

@@ -101,4 +102,13 @@

}, [true], self.opts.maxSearchesAtOnce || maxPromiseConfig.maxSearchesAtOnce, "searches", maxPromiseConfig.searchTimeoutAndReject);
Promise.all(s.map(r => {return r.result})).then(results => {
for(index in results){
callback(null, results[index]);
}
}, err => {
callback(err);
});
}
module.exports = search;

@@ -45,3 +45,3 @@ var _ = require('underscore');

});
}, [groupName], null, "members", {
}, [groupName], maxPromiseConfig.members, "members", {
Reject: {

@@ -48,0 +48,0 @@ rejectBehaviour: "retry",

{
"author": "Relief Melone (relief.melone@gmail.com)",
"name": "ad-promise",
"version": "1.5.2",
"version": "1.5.3",
"description": "This is a fork of the gheeres node-activedirectory. It fixes some issues with timeouts with very large AD-Groups as well as returning also promises so you won't have to use callbacks",

@@ -25,3 +25,3 @@ "main": "index.js",

"underscore": ">= 1.4.3",
"limitpromises": ">=1.5.2"
"limitpromises": ">=1.5.3"
},

@@ -28,0 +28,0 @@ "repository": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc