See also open issues tracked for mile-stone web2ldap-1.6

# 1.6.28

Release Date: 2022-01-08

- Avoid to decode the whole entry of all search results when building list of mail addresses for Cc: and Bcc: links. This fixes UnicodeDecodeError in case some of the attributes are not Unicode (UTF-8) (fixes #41).

# 1.6.27

Release Date: 2021-12-24

- Added new global config parameter web2ldapcnf.url_path for specifying the base URL path accepted to access the application (implements #26).

# 1.6.26

Release Date: 2021-12-23

- Plugin class for attribute mail in aeUser entries now uses base class RFC822Address for displaying attribute value.
- More flexible regex-based implementation to extract hints about invalid or required attributes from the diagnostic message and highlight the affected input field. (implements #25).

# 1.6.25

Release Date: 2021-12-23

- Removed untested support for Get Effective Rights extended control.
- If allowedAttributesEffective and allowedAttributes are available input fields are only disabled attributes determined as read-only (fixes #8 and #24).

# 1.6.24

Release Date: 2021-12-22

- Security fix:
  Removed debug `print()` statement which leaked new passwords to stdout changed with a normal modify operation on userPassword or unicodePwd attribute. This is the default mode for MS AD.
  Changing the password with Password Modify extended operation was not affected. This is the default mode e.g. for OpenLDAP or any other LDAP server supporting this ext. op.
  This bug was probably introduced in release 1.5.94.
- Added link types to pagination links of search results.

# 1.6.23

Release Date: 2021-12-17

- Added HTML template for object class OpenLDAProotDSE (implements #19).
- Fixed iterating over DIT structure rules when listing LDIF templates (fixes #20).
- Added aeOwner to search_attrs in preset config for Æ-DIR (fixes #23).
- Fixed handling of RDN input values when adding new entries (fixes #21).
- Select plugin classes for Æ-DIR now use rootDSE attribute aeRoot as search base (fixes #22).

# 1.6.22

Release Date: 2021-12-15

- When adding a new entry fails because of missing RDN attribute an intra-document link is displayed pointing to the highlighted input field.
- Do not display [+] aside the input field if the user is not allowed to change the value (fixes #7).

# 1.6.21

Release Date: 2021-12-11

- web2ldap.web.forms.Select() now has new key-word argument auto_add_option. If set to True default values are automatically added to select options if not present yet.
- The argument auto_add_option is set when initializing Select field instances for choosing attribute types (fixes #1).
- Display separate success and error counts for modify and modrdn bulk operations (implements #2).

# 1.6.20

Release Date: 2021-12-09

- Added COEP/COOP/CORP headers.
- Added more project meta data to setup-tools code.

# 1.6.19

Release Date: 2021-11-29

- Fixed filter default when recursively deleting entries.

# 1.6.18

Release Date: 2021-11-26

- Added new empty LDIF template for empty aeSudoRule entries.
- Added fields for attribute sudoOrder in HTML templates for Æ-DIR.

# 1.6.17

Release Date: 2021-11-16

- All sources are now marked as `# -*- coding: ascii -*-` to prevent Trojan Source.
- Fixed interop issues with MS AD:
  - Fixed str/bytes regression when generating old password value during changing unicodePwd in own user entry in MS AD.
  - Catch and ignore ldap0.NO_SUCH_OPERATION when calling LDAPObject.abandon() because MS AD returns this result code.

# 1.6.16

Release Date: 2021-10-25

- Fixed some deprecation warnings when running on Python 3.10 (found with `PYTHONWARNINGS=error`).

# 1.6.15

Release Date: 2021-10-07

- Replaced expired CA cert DST_Root_CA_X3.pem by ISRG_Root_X1.pem.

# 1.6.14

Release Date: 2021-10-07

- Reordered search input fields for attribute reqType in search form for OpenLDAP's accesslog database.
- Updated attribute value lists of plug-in classes for domainControllerFunctionality, domainFunctionality and forestFunctionality.

# 1.6.13

Release Date: 2021-09-08

- Added HTML templates to display olmSyncReplInstance entries in cn=monitor of OpenLDAP 2.5.

# 1.6.12

Release Date: 2021-09-03

- Fixed building Debian packages with stdeb.

# 1.6.11

Release Date: 2021-08-31

- Fixed deleting entries by searching with LDAP filter.

# 1.6.10

Release Date: 2021-08-23

- Exception ldap0.INVALID_SYNTAX is now ignored when searching for existing POSIX entries during ID assignment and an empty form value is returned instead.
- Tolerate missing objectClass attribute in submitted entry input.
- Removed all obsolete u-string occurences not needed for pure Python 3 anymore (pylint check redundant-u-string-prefix).
- Re-factored exception declarations and error handling for wrong username input.
- Re-factored generating vCard output.

# 1.6.9

Release Date: 2021-08-07

- Just log a warning if `platform.platform()` fails with PermissionError and continue. The information is only written to the debug log message but might be not available due to overly strict AppArmor or SELinux rules.

# 1.6.8

Release Date: 2021-08-05

- Fixed str/bytes regression in plugin class for univentionLDAPACLData, and extended it to work like plugins for pre-formatted multi-line text.
- New UCS plugin class for attribute entryDN of univentionPolicy entries displays links for searching referencing entries.
- Registered attribute type krb5ExtendedAttributes with LDAP syntax class OctetString.
- Added `require-trusted-types-for 'script'` to HTTP header Content-Security-Policy.

# 1.6.7

Release Date: 2021-07-24

- Fixed regex pattern used in UCS plugin class for attribute univentionObjectType.
- Registered UCS attribute umcPolicyGrantedOperationSet with plugin class DistinguishedName.
- Fixed non-matching input field count when changing object class in modify form.

# 1.6.6

Release Date: 2021-07-08

- Added UCS plugin class for attribute univentionObjectType which implements simple regex-checking.
- Registered UCS attribute univentionMailMember with plugin class RFC822Address.
- Log a warning in case the number of attribute type and value fields differ in submitted entry input.

# 1.6.5

Release Date: 2021-06-09

- Once again try to determine ETC_DIR correctly on BSD platforms.
- Added some UCS plugin registrations.

# 1.6.4

Release Date: 2021-05-25

As a work-around binary attributes (e.g. jpegPhoto) are skipped when passing former input as hidden input fields to the browser.

# 1.6.3

Release Date: 2021-05-22

- Added syntax checking for attribute with schema definitions:
  - RFC 4512 - Directory Schema
  - OpenLDAP's cn=schema,cn=config
- OpenLDAP-specific info messages are extracted when handling ldap0.INVALID_SYNTAX for giving better user feedback about wrong attribute values.
- Fixed logging in plugin class AEUserUid.
- Fixed plugin class for entryDN in aeHost entries:
  - Now generates correct search filter for finding sibling services/hosts in all possible service groups.
  - Limit search for services running on same host to object class aeService.
- Simplified plugin classes for dynamic select lists.
- Fixed syntax-checking in Æ-DIR plugin class for attribute member in aeGroup entries.

# 1.6.2

Release Date: 2021-05-17

- Plugin class for uid in aeUser entries now logs generated value and number of collisions for tried values.
- Cleaned up obsolete class attributes in Æ-DIR plugin module.

# 1.6.1

Release Date: 2021-05-15

Fixed invalid syntax checking in plugin class DerefDynamicDNSelectList when adding new entries. This affects various Æ-DIR plugin classes.

# 1.6.0

Release Date: 2021-05-15

## Installation and configuration changes

- `import` statements / variable names in web2ldapcnf/ have changed. You have to adapt your customized config modules.
- Requires update of module ldap0.

## New features/enhancements

- Improved performance displaying larger aeGroup entries in Æ-DIR.

## Bug fixes

- Fixed str/bytes regression in plugin class for euVATId.
- Fixed modify input form to lock RDN attributes against modification.
- Fixed plugin class for attribute member in aeGroup entries.
- Fixed str/bytes regression in error handling when adding new entry in case the parent entry does not exist.
- Fixed error handling when user changes own password in case pwdReset is set to TRUE.

## Code-cleaning

- Massive changes for PEP-8 compliance.
- Re-factored modules imports especially to get rid of cyclic imports.
- PEP-8 compliant renaming also requires changes in custom plugin modules based on class LDAPSyntax:
  - class attributes
  - methods
  - method arguments