All Projects → twisted → Ldaptor

twisted / Ldaptor

Licence: mit
LDAP server, client and utilities, using Twisted Python

Programming Languages

python
139335 projects - #7 most used programming language

Ldaptor

.. image:: https://img.shields.io/codecov/c/github/twisted/ldaptor?label=codecov&logo=codecov :alt: Codecov :target: https://codecov.io/gh/twisted/ldaptor .. image:: https://img.shields.io/readthedocs/ldaptor?logo=read-the-docs :alt: Read the Docs :target: https://ldaptor.readthedocs.io/en/latest/ .. image:: https://img.shields.io/github/workflow/status/twisted/ldaptor/CI?label=GitHub%20Actions&logo=github :alt: GitHub Actions :target: https://github.com/twisted/ldaptor .. image:: https://img.shields.io/pypi/v/ldaptor?logo=pypi :alt: PyPI :target: https://pypi.org/project/ldaptor/ .. image:: https://img.shields.io/badge/code%20style-black-black :alt: Black :target: https://github.com/psf/black

Ldaptor is a pure-Python library that implements:

  • LDAP client logic
  • separately-accessible LDAP and BER protocol message generation/parsing
  • ASCII-format LDAP filter generation and parsing
  • LDIF format data generation
  • Samba password changing logic

Also included is a set of LDAP utilities for use from the command line.

Verbose documentation can be found on ReadTheDocs <https://ldaptor.readthedocs.org>_.

Quick Usage Example

.. code-block:: python

from twisted.internet import reactor, defer
from ldaptor.protocols.ldap import ldapclient, ldapsyntax, ldapconnector

@defer.inlineCallbacks
def example():
    # The following arguments may be also specified as unicode strings
    # but it is recommended to use byte strings for ldaptor objects
    serverip = b'192.168.128.21'
    basedn = b'dc=example,dc=com'
    binddn = b'[email protected]'
    bindpw = b'secret'
    query = b'(cn=Babs*)'
    c = ldapconnector.LDAPClientCreator(reactor, ldapclient.LDAPClient)
    overrides = {basedn: (serverip, 389)}
    client = yield c.connect(basedn, overrides=overrides)
    yield client.bind(binddn, bindpw)
    o = ldapsyntax.LDAPEntry(client, basedn)
    results = yield o.search(filterText=query)
    for entry in results:
        print(entry.getLDIF())

if __name__ == '__main__':
    df = example()
    df.addErrback(lambda err: err.printTraceback())
    df.addCallback(lambda _: reactor.stop())
    reactor.run()

Installation

Ldaptor can be installed using the standard command line method::

python setup.py install

or using pip from PyPI::

pip install ldaptor

Linux distributions may also have ready packaged versions of Ldaptor and Twisted. Debian and Ubuntu have quality Ldaptor packages that can be installed e.g., by::

apt-get install python-ldaptor

To run the LDAP server (bind port 38942) from a repo checkout with the project installed::

twistd -n --pidfile=ldapserver.pid --logfile=ldapserver.log \
    -y test-ldapserver.tac

Dependencies:

  • Twisted[tls] <https://pypi.python.org/pypi/Twisted/>_
  • pyparsing <https://pypi.python.org/pypi/pyparsing/>_
  • passlib <https://pypi.python.org/pypi/passlib/>_ for Samba passwords
  • six <https://pypi.python.org/pypi/six/>_ for simultaneous Python 2 and 3 compatability
  • zope.interface <https://pypi.python.org/pypi/zope.interface/>_ to register implementers of Twisted interfaces
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].