node-expose-sspi-strict
Version:
Expose the Microsoft Windows SSPI interface in order to do NTLM and Kerberos authentication.
40 lines (36 loc) • 953 B
text/typescript
import { adsi } from '..';
import dbg from 'debug';
const debug = dbg('node-expose-sspi:adConnection');
const adConnection = {
counter: 0,
};
/**
* Open an Active Directory connection only if no connection is already open.
*
* @export
*/
export function openADConnection(): void {
if (adConnection.counter < 0) {
adConnection.counter = 0;
}
if (adConnection.counter === 0) {
adsi.CoInitializeEx(['COINIT_MULTITHREADED']);
}
adConnection.counter++;
debug('openADConnection: counter: ', adConnection.counter);
}
/**
* Close an Active Directory connection only if nobodyelse still use a connection.
*
* @export
*/
export function closeADConnection(): void {
adConnection.counter--;
if (adConnection.counter === 0) {
adsi.CoUninitialize();
}
if (adConnection.counter < 0) {
adConnection.counter = 0;
}
debug('closeADConnection: counter: ', adConnection.counter);
}