lib389
lib389 is a Python library that provides a convenient way to interact with and manage a 389 Directory Server instance. It simplifies common LDAP operations and offers an object-oriented interface for various directory server components.
Installation
To install lib389 along with the main 389 Directory Server do:
pip3 install lib389==3.1.2
Important Note: When you install lib389, ensure that its version matches the version of the 389 Directory Server you plan to connect to. Mismatched versions can lead to unexpected behavior or errors.
Sample Connection Code
Here's an example of how to connect to a 389 Directory Server instance using lib389, with configuration from environment variables:
from lib389 import DirSrv
from lib389.idm.user import UserAccounts
def get_ldap_config():
"""Get LDAP configuration from environment variables."""
return {
'ldap_url': 'ldap://localhost:389',
'base_dn': 'dc=example,dc=com',
'bind_dn': 'cn=Directory Manager',
'bind_password': 'Password123'
}
def get_ldap_connection():
"""Create and return a connection to the LDAP server."""
config = get_ldap_config()
ds = DirSrv(verbose=True)
try:
ds.remote_simple_allocate(
config['ldap_url'],
config['bind_dn'],
config['bind_password']
)
ds.open()
print(f"Successfully connected to {config['ldap_url']} as {config['bind_dn']}")
return ds
except Exception as e:
print(f"Failed to connect to LDAP server: {e}")
raise
def search_users_example(basedn=None):
"""Example function to search for users and return their details as JSON."""
config = get_ldap_config()
search_basedn = basedn or config['base_dn']
connection = get_ldap_connection()
if not connection:
print("Could not establish LDAP connection.")
return []
users = UserAccounts(connection, search_basedn)
for user in users.list():
print(user.display())
print("Closing LDAP connection in search_users_example.")
connection.unbind_s()
if __name__ == '__main__':
search_users_example()
For more detailed examples on managing users, groups, services, and other directory features, please refer to the documentation within the src/lib389/doc/source/ directory, such as user.rst, group.rst, etc.
Contributing
Please see our contributing guide.
License
The 389 Directory Server is subject to the terms detailed in the license agreement file called LICENSE in the main project directory.
Metadata
Release files for lib389 3.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lib389-3.3.0.tar.gz | 526.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lib389-3.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.3 MB
Release files / lib389-3.3.0.tar.gz
| Download URL | lib389-3.3.0.tar.gz |
|---|---|
| Size | 526.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8f8d72ecc18ab39d10682f4606aaee97f88b3127ca21ddcd776d6ef60f0caa29
|
|
BLAKE2b-256 checksum How to use checksums |
f00e30d4fc2f5fd43824da57e80beeb0e20507c01b78d9b75154c2dcb90827a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Release files / lib389-3.3.0-py3-none-any.whl
| Download URL | lib389-3.3.0-py3-none-any.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e283067fc7d42d63890fbd486be82dc47e0845b9d921d63110224fc31b815266
|
|
BLAKE2b-256 checksum How to use checksums |
f251ea3f0d1cee16e94499d01c62b49f5f2fb287832934096456c4d829c82837
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|