Libdomain is an open source library that can create queries to various implementations of directory services such as Microsoft AD, Samba AD, OpenLDAP, FreeIPA. The library API provides generic programming interface allowing user to work with any of such implementations in a uniform way. We have implemented OpenLDAP support so far and we plan to get Microsoft AD and Samba AD support by the end of 2023.

   You don't have to write an API for every directory service - just use the libdomain library. The libdomain should allow user manage any kind of domain based on LDAP protocol and users can create utilities that can help them migrate from one type domain to another.

    How does it work? The client application sends query to the library API. The library processes it and transforms it into a suitable request for each specific directory service. Library has specific module for detection of current directory type and set of strategies to work with specific implementation of directory service it teracts with. The directory service receives the request and responds to it. The library handle the request and returns a unified response to client application. 

    The client does not need to know the message format for a particular directory service. The library will get it right.   

    The library supports the most popular directory services with various schema files. A examples that show how to interface libdomain core API with frameworks such as QT and .Net were implemented. The library is a binding around libOpenLDAP. 

    Libdomain library provides user with ability to manipulate LDAP entries. Earlier versions of ADMC application use built-in adldap module to display the LDAP entries and manipulate domain service. In adldap LDAP entries were supposed to have predetermine set of attributes.  

    Now module that works with LDAP has been moved from the ADMC application to the libdomain library. So all requests from the ADMC are directed to the libdomain API, and it in turn redirects them to either the libldap or libldb library.