# 0.8.3

Release Date: 2001-01-28

- Added input field for search root in connect input form.
- Check if user tries to do ModRDN on empty DN.
- Try to locate a LDAP host for a DN or DNS domain with various methods (see draft-ietf-ldapext-ldap-taxonomy).
- New parameter dir_listing_allowed for HTTP server (stand-alone mode).

# 0.8.2

Release Date: 2001-01-18

- Code cleaning:
  - More clean-ups of exception handling in w2lhandler.py.
  - Do a separate DNS lookup of LDAP host name which leads to a cleaner exception handling and error message being more meaningful to user.
  - Fixed displaying the DN of deleted entries. The parent DN was displayed instead of the entry's DN.
  - Solely use the new string methods of Python 2.0 and abandoned importing string module wherever possible.
  - Fixed displaying cRLDistributionPoints.distributionPoint.fullName as proper URL link when displaying HTML.
- Bug fixes:
  - Display empty DN as - World - in status line.
  - Fixed building modify list when LDAP server is handling attribute types case-respecting.
  - Function ldapbase.SearchTree() properly returns list of Unicode objects now. Affects recursive deletes.
  - Fixed missing parameter when raising cgiforms.formContentLengthException.
  - Somewhat fixed handling of creating modlist's with binary attributes involved.

# 0.8.1

Release Date: 2000-12-20

- Bug fixes:
  - Wrong regex pattern for select lists in cgiforms.py fixed.
  - Some select fields did not use the right charset.
  - Fixed displaying displayName attribute.
  - Fixed ldapbase.SplitRDN() (affected modrdn command).
  - Default of modrdn input field was displayed as HTML.
  - Proper handling of UTF-8 characters in namingContexts attribute of RootDSE.
  - Handling of form data more robust.
  - Corrected handling of RDNs when DN has only one component.
  - Avoid any LDAP operations before first bind.

# 0.8.0

Release Date: 2000-12-02

- Nice displaying of certificate and CRL attributes including certificate extensions if at least sub-module asn1 of Pisces is installed on the system (automatically detected). Credits go to Jeremy Hylton for his work on the ASN.1 parser and helping me understanding it.
- New parameter web2ldapcnf.hosts.ldap_def['timeout'] for specifying a timeout (seconds) for search operations.
- Login not longer mandantory at beginning of session. User can explicitly bind after connecting to server.
- Avoid making a LDAP connection when not necessary (e.g. when displaying add form).
- Displayed LDAP URLs are all URL-quoted now and handling of LDAP URLs stored in attribute is more robust and smarter.
- Some efforts were done to browse global directories in a reasonable manner.
- Simple support for direct use of LDAP URLs (short hack):
  `[web2ldap URL]/ldapurl?[LDAP URL]`
  will display the entry or do a search.
- Gracefully handling of exceptions which make a re-login of a user necessary: ldap.INSUFFICIENT_ACCESS, ldap.INVALID_CREDENTIALS, ldap.INAPPROPRIATE_AUTH etc. User can re-login and retry command.
- Smarter handling of LDAPv3 referrals: Instead of relying on the referral handling of the underlying lib the referral exceptions are caught and the user is prompted for new bind DN / password for connecting to the referred host and repeat the action before the referral was received.
  Credits go to Konstantin Chuguev for patching python-ldap to do correct error handling when result() method is called.
- Compatibility issues:
  - web2ldap now makes use of the new Unicode features introduced in recent Python versions because the handling of different character encoding is faster and cleaner.
    => You have to upgrade your Python installation at least to version 2.0.
  - For cleaner exception handling python-ldap prior to 1.8 is not longer supported since the ldap.LDAPError exception base class is used now. This affects mainly the Windows platform since I do not know of pre-compiled python-ldap version later than 1.5. Feel free to contribute!
  - Moved parameters web2ldapcnf.misc.search_attrsonly and web2ldapcnf.misc.search_attrs to web2ldapcnf.hosts.ldap_def. You have to adjust your local configuration files!
- Code cleaning:
  - All LDAP-related strings are internally handled as Unicode string types.
  - Handle more input field stuff with the fine cgiforms module.
  - LDAP session objects. First step towards session handling with pickeable session objects.
  - Simplified many function calls into module w2lcore.
  - All exception handling of LDAP errors is done in module w2lhandler except exceptions which needs special handling in a specific context.
- Bug fixes:
  - Correct handling of DNs with quoted comma.
  - Some code was too case-sensitive with handling attribute type names.
  - Fixed some compatibility issues with Python 1.6+.
  - Fixed some vCard issues. Still not perfect but usable most times.
  - Correct handling of special characters when putting together LDAP filter string (RFC 2254).
  - Fixed typo in main exception handling.