Make LDAP connection thread safe
Add open() and close() methods to LDAP Client.
This commit is contained in:
parent
da40fc6c20
commit
72b91d123e
|
@ -21,10 +21,10 @@ Create a new virtualenv and run `pip install .` inside of it.
|
||||||
>>>
|
>>>
|
||||||
>>> from phi.ldap.client import Client
|
>>> from phi.ldap.client import Client
|
||||||
>>> ldap_client = Client(**ldap_config)
|
>>> ldap_client = Client(**ldap_config)
|
||||||
>>>
|
>>> ldap_client.open()
|
||||||
>>> from phi.ldap.connection import open_connection
|
|
||||||
>>> open_connection(ldap_client.connection)
|
|
||||||
>>>
|
>>>
|
||||||
>>> from phi.ldap.commands import whoami
|
>>> from phi.ldap.commands import whoami
|
||||||
>>> whoami(client)
|
>>> whoami(client)
|
||||||
|
>>>
|
||||||
|
>>> ldap_client.close()
|
||||||
```
|
```
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
from threading import Lock
|
||||||
from ldap3.utils.log import set_library_log_detail_level, PROTOCOL
|
from ldap3.utils.log import set_library_log_detail_level, PROTOCOL
|
||||||
|
|
||||||
from phi.logging import get_logger
|
from phi.logging import get_logger
|
||||||
from phi.ldap.connection import make_connection
|
from phi.ldap.connection import make_connection
|
||||||
|
from phi.ldap.connection import open_connection, close_connection
|
||||||
|
|
||||||
log = get_logger(__name__)
|
log = get_logger(__name__)
|
||||||
set_library_log_detail_level(PROTOCOL)
|
set_library_log_detail_level(PROTOCOL)
|
||||||
|
@ -21,9 +23,25 @@ class Client:
|
||||||
self.password = password
|
self.password = password
|
||||||
self.base_dn = base_dn
|
self.base_dn = base_dn
|
||||||
|
|
||||||
|
self.connection_lock = Lock()
|
||||||
self.connection = make_connection(host=self.host, port=self.port,
|
self.connection = make_connection(host=self.host, port=self.port,
|
||||||
encryption=self.encryption,
|
encryption=self.encryption,
|
||||||
ciphers=self.ciphers,
|
ciphers=self.ciphers,
|
||||||
validate=self.validate,
|
validate=self.validate,
|
||||||
username=self.username,
|
username=self.username,
|
||||||
password=self.password)
|
password=self.password)
|
||||||
|
|
||||||
|
def open(self):
|
||||||
|
self.connection_lock.acquire()
|
||||||
|
if self.connection.closed is True:
|
||||||
|
open_connection(self.connection)
|
||||||
|
else:
|
||||||
|
self.connection_lock.release()
|
||||||
|
raise Exception("Connection is already open. "
|
||||||
|
"Cannot open again.")
|
||||||
|
self.connection_lock.release()
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self.connection_lock.acquire()
|
||||||
|
close_connection(self.connection)
|
||||||
|
self.connection_lock.release()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user