CHANGELOG ========= 0.8.0 (2022-05-21) ------------------ * Properly handle and reap child processes in the LDAP server. * Handle POSIX signals sent to the LDAP server / child processes to properly shutdown existing clients. * Allow a PSR-3 compatible logging instance to be set on the LDAP server for info / error events. 0.7.0 (2022-01-22) ------------------ * Add the ability to run the LDAP server / client over a UNIX socket. * Add the ability to run the LDAP server over an SSL / TLS only socket. * Add the ability for the server to handle client paging requests via a handler. * Add a helper factory method for creating a proxy LDAP server. * The LDAP server handlers can now be set as a class instance in addition to the class FQCN string. * When setting the options on the LdapClient you can now choose to force a disconnect at the same time. * The criticality for paging can now be set using the "isCritical" method. * Add integration tests for the LDAP server / proxy. 0.6.1 (2021-12-11) ------------------ * Support PHP 8.0 / 8.1. * Updated PHPDocs for return types / exceptions / etc (@HenkPoley) 0.6.0 (2019-12-14) ------------------ * Add initial SASL support with a limited set of mechanisms (DIGEST-MD5, CRAM-MD5, PLAIN, ANONYMOUS). * The Server RequestHandler interface now requires type-hints for all methods. * Server request handlers can now return their own RootDSE if they choose to. * Added an isValid() method to the Dn class. * Added a firstValue() and lastValue() method for attributes. * The client and server protocol handlers have been completely refactored. * Implemented PHPStan and made fixes necessary to bump it to the max level. * Introduced code coverage to CI runs. * Moved CI runs into Github Actions. * Use PSR-12 coding standards via ECS. 0.5.0 (2019-03-11) ------------------ * Vastly improved memory efficiency and performance in general (especially on large search results). * Add a DirSync helper class for Active Directory. * Add Active Directory specific controls: ExpectedEntryCount, SetOwner, ADPolicyHints, ShowDeleted, ShowRecycled * Add a range retrieval helper class to make it easier to work with ranged results from Active Directory. * Add a "rename()" convenience method to the LdapClient. * Add a "move()" convenience method to the LdapClient. * Add a "getDescription()" method to the Attribute class to retrieve the attribute with all options. * Add a "getOptions()" method the the Attribute class to iterate through options for an attribute. * Add a "fromArray" method to make constructing entry objects from arrays sound more natural. * Calling the LdapClient "read()" method with no arguments will now return the RootDSE by default. * Fix an OpenLDAP specific bug in the paging helper class. OpenLDAP does not return a control when aborting paging. * Fix an issue with the Socket class not recognizing the certificate authority cert specified in the options. * Implement OpenLDAP / Active Directory test servers with test data during CI runs for integration tests via PHPUnit. * Moved the Socket classes to their own library so it can be used in other projects. * Add more complete documentation for working with Entry objects. 0.4.0 (2018-04-20) ------------------ * Moved ASN.1 to its own library. * Add a create convenience method to the LdapClient to create a single LDAP entry. * Add a read convenience method to the LdapClient to return a single LDAP entry. * Add an update convenience method to the LdapClient to update a single LDAP entry. * Add a delete convenience method to the LdapClient to delete a single LDAP entry. * Rename searchRead() and searchList() operation methods to read() and list(). * Throw an exception on referrals by default. Do not allow ignoring them, only following them. 0.3.0 (2018-02-12) ------------------ * Implement referral handling options. * Add an LDAP URL parser / object based on RFC 4516. * Honor the timeout_read setting in the LDAP client. * Better handle remote disconnects / failed reads in the client to prevent hanging under some circumstances. * Add magic methods to Entry objects for attribute access. * Add an idle_timeout setting to the LDAP server. Default to 600 seconds. 0.2.0 (2017-12-08) ------------------ * Renamed to FreeDSx to avoid naming confusion with the phpds extension. * Implement very limited LDAP server functionality. * Added a string filter parser based on RFC 4515. Allows creating filter objects from arbitrary string filters. * Added a toString() method on filters for displaying their string filter representation. * Add a compare() operation method helper to the LdapClient. * Corrected the ASN1 encoding of the 'not' filter. * Corrected BER encoding indefinite length partial PDU detection. * Be more defensive on RDN creation when parsing the string. * LDAP clients now throw an OperationException instead of a ProtocolException. * Added documentation for the client and server. 0.1.0 (2017-10-22) ------------------ * Tagging initial release. Still under heavy development.