Skip to main content

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.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lib389 3.1.3
File Size Uploaded
lib389-3.1.3.tar.gz 510.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lib389 3.1.3
File Interpreter ABI Platform
lib389-3.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 2.2 MB

Release files / lib389-3.1.3.tar.gz

Download URL lib389-3.1.3.tar.gz
Size 510.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2c5bf0137edfa015f8283a4b86a244f2815de80a9c3e2d04bb64548461979861
BLAKE2b-256 checksum
How to use checksums
34c32e4ab3a3cb71d17d2ba02dd55d515d049b23cca0ba3a6036c040b0bed401
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.9

Release files / lib389-3.1.3-py3-none-any.whl

Download URL lib389-3.1.3-py3-none-any.whl
Size 1.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
800b8beddbee442970c0ec760890c6d046580a96fdb3a774faabfcec8ffe33a9
BLAKE2b-256 checksum
How to use checksums
77c8340eae5349cc78e7aa7ab13676ea06b55199e3e02fb25a2fb2fd5319a9b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.9

Release history Release notifications | RSS feed

3.3.0

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.4

2 release files

This release

3.1.3 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page