ldaptor (0.0.43+debian1-7.2) unstable; urgency=medium

  * Replace previous NMU with a new source-only upload.

 -- Kenneth J. Pronovici <pronovic@debian.org>  Thu, 08 Aug 2019 02:35:31 +0000

ldaptor (0.0.43+debian1-7.1) unstable; urgency=medium

  * Non-maintainer upload.
  * Eliminate dependency on epydoc, which will be removed (closes: #933613)
    - Add patch remove-epydoc so API documentation is no longer built
    - Update debian/control to remove Build-Depends: python-epydoc
    - Update debian/ldaptor-doc.docs to remove doc/api directory
    - Remove debian/ldaptor-doc.doc-base.api

 -- Kenneth J. Pronovici <pronovic@debian.org>  Fri, 02 Aug 2019 14:39:19 +0000

ldaptor (0.0.43+debian1-7) unstable; urgency=low

  * Fix "FTBFS if built twice in a row: unrepresentable changes to source"
    remove build directory in debian/rules clean (Closes: #671527)
  * Bump-Standards-Version to 3.9.3 (no changes)
  * use symlinks to avoid duplicate files in ldaptor-doc, add
    debian/ldaptor-doc.links

 -- Jan Dittberner <jandd@debian.org>  Tue, 15 May 2012 11:31:51 +0200

ldaptor (0.0.43+debian1-6) unstable; urgency=low

  * debian/control:
    - remove unneeded Breaks: ${python:Breaks}
    - bump Standards-Version to 3.9.2 (no changes needed)
  * remove deprecated webui test in debian/rules (dh_override_auto_clean)
    (Closes: #653869)

 -- Jan Dittberner <jandd@debian.org>  Sat, 31 Dec 2011 20:49:34 +0100

ldaptor (0.0.43+debian1-4) unstable; urgency=low

  * remove broken binary package ldaptor-webui
    - change debian/control and debian/rules
    - add patch debian/patches/remove-webui.patch to stop building of
      ldaptor-webui documentation
    - remove debian/ldaptor-webui.*
  * remove build dependencies python-twisted-web, python-nevow, python-
    webut only required for ldaptor-webui
  * switch from python-support to dh_python2
    - add --with python2 to debian/rules
    - remove python-support build dependency
    - bump python dependency to 2.6.5~
    - change XS-Python-Version to X-Python-Version
    - add Breaks: ${python:Breaks} for Python binary packages
  * bump Standards-Version to 3.9.1
  * don't compress api-objects.txt in debian/rules

 -- Jan Dittberner <jandd@debian.org>  Sun, 13 Feb 2011 17:58:57 +0100

ldaptor (0.0.43+debian1-3) unstable; urgency=low

  [ Jakub Wilk ]
  * Don't hardcode ‘site-packages’ in debian/*.install, debian/rules
    (Closes: #586884). Thanks to Angel Abad for the bug report and the initial
    patch.

  [ Jan Dittberner ]
  * add debian/ldaptor-doc.doc-base.api,
    debian/ldaptor-doc.doc-base.ldap-intro, and
    debian/ldaptor-doc.doc-base.addressbook-slides to register
    documentation with doc-base

 -- Jan Dittberner <jandd@debian.org>  Wed, 23 Jun 2010 20:23:03 +0200

ldaptor (0.0.43+debian1-2) unstable; urgency=low

  * add debian/patches/04_replace_string_exceptions_585240_585298_.patch
    to replace string exceptions by real Exception instances (Closes:
    #585240, #585298)
  * debian/control:
    - bump Standards-Version to 3.8.4 (no changes needed)
    - remove unnecessary Build-Depends python-all-dev
    - add python (>= 2.5.4-1~) to Build-Depends

 -- Jan Dittberner <jandd@debian.org>  Sat, 12 Jun 2010 01:59:44 +0200

ldaptor (0.0.43+debian1-1) unstable; urgency=low

  * repack tarball to remove upstream debian directory (fix lintian warnings
    regarding lacking debhelper tokens in maintainer scripts)
    - remove workarounds from debian/rules
  * switch to source format 3.0 (quilt):
    - debian/control: remove explicit quilt dependency
    - add debian/source/format
    - debian/rules: remove --with quilt
    - change debian/README.source

 -- Jan Dittberner <jandd@debian.org>  Sun, 06 Dec 2009 11:27:37 +0100

ldaptor (0.0.43-4) unstable; urgency=low

  [ Jan Dittberner ]
  * switch from cdbs to debhelper
  * switch from dpatch to quilt
  * replaced debian/patches/00list with debian/patches/series
  * replaced debian/patches/01_restore_pristine_code.dpatch with
    debian/patches/01_restore_pristine_code.patch
  * add debian/patches/02_fix_526522.patch:
    - fixes the reason of the traceback generated by ldaptor-ldap2passwd
      --help (Closes: #526522)
  * add debian/patches/03_fix_dia_invocation_545663.patch:
    - fixes invocation of dia to generate images during doc build in
      headless environments (Closes: #545663)
  * debian/changelog:
    - fix spelling error (fixes lintian warning)
  * debian/README.source:
    - replace dpatch information with quilt information
  * debian/control:
    - change to d.o email address
    - update Standards-Version to 3.8.3 (no changes needed)
    - remove dpatch and cdbs from Build-Depends
    - add quilt to Build-Depends
    - set minimum debhelper version to 7.0.50
    - add python-docutils to Build-Depends-Indep to fix an epydoc warning
  * debian/ldaptor-ldap2passwd.1, debian/ldaptor-find-server.1,
    debian/ldaptor-ldap2dnszones.1, debian/ldaptor-ldap2pdns.1,
    debian/ldaptor-getfreenumber.1, debian/ldaptor-passwd.1,
    debian/ldaptor-namingcontexts.1, debian/ldaptor-search.1,
    debian/ldaptor-ldap2dhcpconf.1, debian/ldaptor-rename.1,
    debian/ldaptor-ldap2maradns.1, debian/ldaptor-fetchschema.1,
    debian/ldaptor-webui.1: update email address
  * debian/rules:
    - remove debian/postinst, debian/prerm and
      debian/python-ldaptor.README.Debian from upstream tarball's debian
      directory
    - use quilt instead of dpatch macros
    - use dh instead of cdbs
  * add debian/global.cfg, debian/ldaptor-doc.docs,
    debian/ldaptor-doc.examples and debian/ldaptor-webui.examples from
    removed upstream debian directory

  [ Sandro Tosi ]
  * debian/control
    - remove me from Uploaders

 -- Jan Dittberner <jandd@debian.org>  Wed, 21 Oct 2009 20:21:51 +0200

ldaptor (0.0.43-3) unstable; urgency=low

  [ Sandro Tosi ]
  * debian/{control, patches/*, README.source, rules}
    - added dpatch, to prevent direct upstream code modification
  * debian/copyright
    - clearly separated license and copyright notices
    - indented upstream author with 4 spaces
    - link to LGPL-2.1 file, instead of the generic LGPL
  * debian/control
    - reformat long descriptions, to better use items lists
    - reformat short descriptions, in particular un-capitalize them
    - bump Standards-Version to 3.8.1
  * debian/pycompat
    - removed since not needed
  * debian/{control, pyversions}
    - removed pyversions, superseded by XS-Python-Version
  * debian/prerm
    - removed since no more needed

  [ Ansgar Burchardt ]
  * debian/control:
    - `python-pyopenssl' has been renamed into `python-openssl'. Update
      dependencies accordingly. (Closes: #494904)
    - Do not duplicate Section field for binary packages.
  * debian/rules: Do not rely on python-support internals to find files,
    instead remove them earlier using the standard path (Closes: #516306).

  [ Jan Dittberner ]
  * remove unneeded debian/postinst containing only #DEBHELPER#
  * debian/control:
    - change Maintainer to DPMT
    - add Sandro Tosi and Jan Dittberner as Uploaders
    - add Vcs-Svn and Vcs-Browser
    - move dpatch to Build-Depends to fix lintian error
      clean-should-be-satisfied-by-build-depends
    - improve ldaptor-webui's long description
    - wrap long lines
  * debian/rules: remove upstream debian/postinst
  * add manual pages (Closes: #190706)
    - add debian/ldaptor-utils.manpages, debian/ldaptor-webui.manpages
    - add debian/ldaptor-fetchschema.1, debian/ldaptor-find-server.1,
      debian/ldaptor-getfreenumber.1, debian/ldaptor-ldap2dhcpconf.1,
      debian/ldaptor-ldap2dnszones.1, debian/ldaptor-ldap2maradns.1,
      debian/ldaptor-ldap2passwd.1, debian/ldaptor-ldap2pdns.1,
      debian/ldaptor-namingcontexts.1, debian/ldaptor-passwd.1,
      debian/ldaptor-rename.1, debian/ldaptor-search.1,
      debian/ldaptor-webui.1
  * debian/python-ldaptor.install: be more specific to exclude ldaptor-
    webui files

 -- Sandro Tosi <morph@debian.org>  Sat, 28 Mar 2009 16:47:21 +0100

ldaptor (0.0.43-2) unstable; urgency=low

  * QA upload.
  * Deleted /usr/doc handling in postinst (closes: #359444)
  * Added missing #DEBHELPER# tokens in maintainer scripts

 -- Peter Eisentraut <petere@debian.org>  Fri, 04 Apr 2008 17:46:27 +0200

ldaptor (0.0.43-1) unstable; urgency=low

  * QA upload.
    + Set maintainer as Debian QA Group.
  * Acknowledge NMUs.
    + Remove ldiffdiff, ldiffpatch references (Closes: #370552).
    + Remove dummy package description (Closes: #420771).
  * Make package non-native.
    + Maintainer is no longer upstream.
    + Upstream appears dormant.
  * Bump debhelper build-dep and compat to 6.
  * Add Homepage field in control.
  * Remove ldaptor-common package (Closes: #385447).
    + Leave empty ldaptor-common.install because orig.tar.gz has debian dir

 -- Barry deFreese <bddebian@comcast.net>  Tue, 22 Jan 2008 11:26:51 -0500

ldaptor (0.0.43-0.6) unstable; urgency=low

  * Non-maintainer upload.
  * Support the latest python policy. Closes: #445285.
  * Select the DEB_PYTHON_SYSTEM.
  * Build-depend on python-support and cdbs 0.4.49.
  * Lots of cleanup in the rules file.
  * setup.py: install skin-default.html. Closes: #408492.
  * interfaces.py, apps/webui/{iwebui,search}.py: use zope.interface
    instead of the deprecated twisted.python.components.
  * debian/{postinst,prerm}: removed, not necessary anymore.
  * Standards version is 3.7.3
  * Fix list formatting in the long descriptions.
  * Fix description for python-ldaptor.

 -- Josselin Mouette <joss@debian.org>  Tue, 22 Jan 2008 10:44:24 +0100

ldaptor (0.0.43-0.5) unstable; urgency=low

  * Non-maintainer upload.
  * Fix call of epydoc in doc/Makefile to avoid FTBFS (Closes: #433738)

 -- Mario Iseli <mario@debian.org>  Fri, 17 Aug 2007 10:35:21 +0200

ldaptor (0.0.43-0.4) unstable; urgency=low

  * Non-maintainer upload.
  * Change version number to glob in debian/ldaptor-webui.install (Closes: #384825)

 -- Jaakko Niemi <liiwi@debian.org>  Sun,  1 Oct 2006 10:46:28 +0300

ldaptor (0.0.43-0.3) unstable; urgency=medium

  * Non-maintainer upload.
  * Remove webui stuff from python-ldaptor (Closes: #380723).

 -- Luk Claes <luk@debian.org>  Tue,  1 Aug 2006 19:28:41 +0200

ldaptor (0.0.43-0.2) unstable; urgency=low

  * Non-maintainer upload.
  * Let python-ldaptor replace python2.3-ldaptor (Closes: #378945).

 -- Luk Claes <luk@debian.org>  Thu, 20 Jul 2006 20:00:32 +0200

ldaptor (0.0.43-0.1) unstable; urgency=medium

  * Non-maintainer upload.
  * Update package for python policy transition (Closes: #373559, #378586).
  * Get rid of the /usr/doc link in postinst (Closes: #359444).

 -- Luk Claes <luk@debian.org>  Wed, 19 Jul 2006 16:34:44 +0200

ldaptor (0.0.43) unstable; urgency=low

  * Applications changes:
    - ldaptor-ldap2dhcpconf:
      - hosts can now have bootFile attributes
      - support groups of DHCP hosts, possibly with bootFile attributes
    - webui:
      - In delete, instead of a special result page, redirect to search
        page on success. If current base DN was deleted, also go up to
        parent DN.
      - In webui edit, allow editing of entries even if they miss a 'must'
        field. The server should have never allowed that, but let's not
        break in any case.
      - Use webut.skin to make ldaptor webui skinnable. This allows
        embedding it seamlessly in a web site.
    - Add server support for
      - Adding entries.
      - Modifying entries.
      - Modifying DNs. Not deleting the old RDN is not yet supported.
      - Changing passwords with passwordModifyRequest, with general
        extendedRequest support.

  * Documentation changes:
    - Explain some abbreviations in ldap intro document.

  * API changes:
    - ldiftree.LDIFTreeEntry.children now always defers.
    - ldiftree.LDIFTreeEntry.lookup and ldiftree.get now accept strings as
      DNs.
    - Add LDIFTreeEntry.commit().
    - In ldiftree, show pure .dir entries as children too.  Requiring the
      .ldif file to be present forces simple use to have entries all the
      way up to root, e.g. "dc=com" and "dc=foo,dc=com". Still might not
      want missing .ldif files inside the valid tree.. need to get back to
      this later.
    - Make .match() *always* case-insensitive. The real solution would be
      case-insensitive if and by a method set in the attributeType syntax,
      as specified in the schema, etc. But we have no syntax support yet.
    - Add .move() to inmemory and ldiftree entries.
    - Remove LDAPModification_*. This is a non-compatible, but low-level
      API change. You probably should not have been using
      LDAPModification_* directly anyway, and the change to using delta
      should be easy. The new approach is make pureldap just handle
      sequences of sequences, and teach ldaptor.delta classes how to
      generate LDAPModifyRequests, with .asLDAP().
    - Give ReadOnlyInMemoryLDAPEntry a dummy commit method.

  * Refactorings to adapt to Twisted APIs:
    - Refactor for twisted 1.3->2.2 and nevow 0.3.0->0.6.0.

  * Bugfixes:
    - Fix ldaptor-ldap2dhcpconf, which has been totally broken since v0.0.32.
    - webui:
      - Do not leak LDAP connections in webui search.
      - Handle invalid search filters gracefully in advanced search.
      - Don't link to delete on the delete page.
      - Fix delete page header link targets.
      - In delete, do not redirect to search on error.
      - Always clear query arguments when creating a link.
      - Fix move, used to have whitespace in form action URL.
      - Fix move status message.
      - Make test tac set up a base DN. Otherwise, adding posixAccounts
        will fail because the search for uidNumbers requires a base.
      - Avoid i18nized string concatenation with plus.
      - Make webui delete success message more explicit.
    - Make LDAPFilter_substrings.substrings behave like a proper
      list. Otherwise e.match() will fail with an IndexError. Used to only
      trigger when receiving filters, that is, on the server end.
    - In BEROctetString, make sure we stringify the value before using it.
    - Improve ldiftree error reporting.
    - Fix perl invocation in makefile to work with new make backslash
      handling.

  * Cleanups:
    - Add web interface tests, using twill. The old test-webui.tac for
      demo use is now called demo-webui-fi.tac.
    - Improved unit test coverage.
    - Better code reuse between entry, inmemory and ldiftree.
    - Unused import cleanup.
    - Whitespace cleanup.

  * Packaging:
    - Depend on twisted >= 2.0 and nevow >= 0.6.0.

 -- Tommi Virtanen <tv@debian.org>  Tue,  7 Mar 2006 01:59:00 +0200

ldaptor (0.0.42) unstable; urgency=low

  * Applications changes:
    - In webui, don't change config base DN based on the DN in the URL.
      Instead, remember new ICurrentDN in context for that purpose. Allows
      guessing right next free uid numbers even when looking at a subtree
      that doesn't include (all of) the user accounts.
    - Add ldaptor-ldap2dnszones, generates bind-style DNS zones from
      LDAP ipHosts and ipNetworks.
    - Add french translation, update l10n. Closes: #301547.

  * Refactorings to adapt to Nevow APIs:
    - Kludge webui add to work with Choice in both nevow 0.3 and newer.

  * Bugfixes:
    - Apparently locateConfigurable can not return a Deferred. Handle it.
    - Make startTLS no longer hang. Thanks to Christopher Zorn
      <christopher.zorn@gmail.com>.
    - Fix and unit test ReadOnlyInMemoryLDAPEntry.search()
    - Add a dummy fetch() to ReadOnlyInMemoryLDAPEntry for API consistency.

  * Cleanups:
    - Port changes and minor bugfixes from nevow.i18n:
      + r2303: Get rid of nevow.i18n.FlatteningProxy, it isn't needed
        anymore and caused trouble with unicode etc.
      + r2290: i18n bugfix: make _("%(foo)d") % {"foo": 42} work.
      + r2251: add ungettext (pluralization) support for nevow.i18n.
      + r2250: nevow.i18n string formatting fails with %d and %f
      + r2241: guard against nonexisting localizations.
      + r2240: also look for locales without a dash-suffix.

  * Packaging:
    - doko, I find your lack of trust in API stability disturbing.  Yes,
      things work even if you upgrade. Closes: #327032.
    - Build-depend on python-epydoc not python2.3-epydoc. Closes: #320897.
    - Remove old unused packaging helpers.
    - Add package python2.4-ldaptor.

  * Administrivia:
    - No longer using bk, fix test coverage reporting.

 -- Tommi Virtanen <tv@debian.org>  Mon, 24 Oct 2005 18:19:46 +0300

ldaptor (0.0.41) unstable; urgency=low

  * Bugfixes:
    - Handle attributeTypes written with non-canonical cases better in
      webui edit and add. Stops tracebacks complaining about unknown
      attribute types, especially related to x500uniqueidentifier.
      Closes: ldaptor#25.

 -- Tommi Virtanen <tv@debian.org>  Thu, 26 May 2005 21:07:24 +0300

ldaptor (0.0.40) unstable; urgency=low

  * Bugfixes:
    - Make e.setPassword() set Samba passwords even when Samba
      objectClasses are spelled with non-canonical case.
      Closes: ldaptor#31.

 -- Tommi Virtanen <tv@debian.org>  Thu, 26 May 2005 19:47:53 +0300

ldaptor (0.0.39) unstable; urgency=low

  * Cleanups:
    - Sort results before comparison in unit tests. Avoid spurious errors
      in test_ldiftree.Tree.test_children_twoChildren. Make unit tests
      explicitly shuffle results to avoid such false negative tests in the
      future. Closes: #307101.

 -- Tommi Virtanen <tv@debian.org>  Fri,  6 May 2005 14:46:31 +0300

ldaptor (0.0.38) unstable; urgency=low

  * Bugfixes:
    - WebUI:
      - rewrite webui search DN linking to be more nevowy and not assume
        ldaptor is the root resource.

 -- Tommi Virtanen <tv@debian.org>  Fri,  4 Mar 2005 14:46:28 +0200

ldaptor (0.0.37) unstable; urgency=low

  * Bugfixes:
    - ldaptor.checkers:
      - trap LDAPUnwillingToPerform and make it just an UnauthorizedLogin
        in LDAPBindingChecker.
    - WebUI:
      - do not stringify i18n PlaceHolder, just pass it through to
        flattening.
      - Port nevow commits r1252 and r1253: handle interpolation of i18n
        strings better.
      - Make zebra tables not reverse colors on refresh, by moving state
        from resource to request.

  * Cleanups:
    - Remove dead code.
    - Use CSS in webui service password changing layout.

 -- Tommi Virtanen <tv@debian.org>  Wed, 23 Feb 2005 23:00:57 +0200

ldaptor (0.0.36) unstable; urgency=low

  * Applications changes:
    - Enforce validFrom and validUntil in ServiceBindingProxy. Closes:
      ldaptor#22.
    - I18n support in webui and translation to finnish.

  * API changes:
    - Do not parallelize password setting, abort on first error.
    - When aborting password setting, use a real exception and not a
      string as explanation.

  * Refactorings to adapt to Twisted/Nevow APIs:
    - In webui, use annotate.Choice in a way that works with nevow 0.3 and
      0.4pre.

  * Bugfixes:
    - Add ldaptor.protocols.ldap.autofill that was missed earlier.
    - Clean up and python2.4-proof LDAPAttributeTypeAndValue parsing.
    - Do not repeat the form error message for each argument in webui
      change_password.

  * Cleanups:
    - WebUI:
      - refactor to separate service password setting, for reuse
        elsewhere.
      - make zebra tables set CSS styles, not just background colors.
      - redo webui service password changing form layout.
      - avoid annotate.Password in webui password changing, it
        results in poor layout.
      - use table for nicer layout of service password controls.

  * Packaging:
    - Add missing depends on python2.3-pyopenssl, python2.3-crypto.

  * Administrivia:
    - Run unit tests after the install target, with the installed code
      base.

 -- Tommi Virtanen <tv@debian.org>  Wed, 23 Feb 2005 11:13:08 +0200

ldaptor (0.0.35) unstable; urgency=low

  * Bugfixes:
    - Fix LDAPServer to understand new e.bind() semantics from r196.

  * Packaging:
    - Bumped standards version to 3.6.1.

 -- Tommi Virtanen <tv@debian.org>  Fri, 28 Jan 2005 19:49:24 +0200

ldaptor (0.0.34) unstable; urgency=low

  * Brown paper bag time, 0.0.33 was never uploaded. Epydoc --check only
    check and generates no output, reverting back to do not complain about
    missing docstrings.

 -- Tommi Virtanen <tv@debian.org>  Sun, 23 Jan 2005 03:32:46 +0200

ldaptor (0.0.33) unstable; urgency=low

  * Conceptual changes:
    - Add our own LDAP schema file. To use in slapd, add line "include
      /etc/ldaptor/ldaptor.schema" to /etc/ldap/slapd.conf.
    - Switch service-specific password support in svcbindproxy and webui
      change_password to use new-style password entries, for nicer slapd
      ACLs. Closes: ldaptor#20.

  * API changes:
    - Add a pumpingDeferredError to test utils, for consistency.
    - Allow overriding things by subclassing LDAPConfig and setting
      attributes.
    - Allow overriding identity search filter at LDAPConfig instantiation
      time.
    - Change e.bind() semantics to defer more, and return self or raise.
    - Add LDAPEntryWithClient.bind() that sends a BindRequest to the
      server.
    - Deprecate LDAPClient.bind(dn, auth) in favor of e.bind(auth).
    - Proxy now takes an ILDAPConfig parameter to init and not just
      overrides.

  * Bugfixes:
    - Escape "=" in RDN values.
    - Remove ldaptor.protocols.ldap.__all__, it's unnecessary and had
      wrong content.

  * Cleanups:
    - Convert U32 to unix-style newlines.
    - Epydoc formatting fixes.
    - Make epydoc complain about missing docstrings.
    - Fix API doc home page URL.

  * Packaging:
    - When running unit tests from debian/rules, ensure PYTHONPATH gets an
      explicit . in it -- for the poor guy running a build as root.
      Closes: #291615.
    - Include everything needed for successful unit test run in
      Build-Depends-Indep. Closes: #290236, #291618.

 -- Tommi Virtanen <tv@debian.org>  Sun, 23 Jan 2005 02:52:56 +0200

ldaptor (0.0.32) unstable; urgency=low

  * Conceptual changes:
    - Client-side STARTTLS support. Closes: ldaptor#1.

  * Applications changes:
    - The following now use the configuration, making --base optional:
      - ldaptor-ldap2maradns
      - ldaptor-search
      - ldaptor-ldap2pdns
      - ldaptor-ldap2passwd
      - ldaptor-ldap2dhcpconf
    - ldaptor-ldap2pdns now reconnects when needed.
    - WebUI:
    - Server:

  * API changes:
    - Remove ldapclient.LDAPSearch in favor of e.search().
    - Switch from LDAPClient.queue() to one of the following. Needed to
      notify in flight operations of lost connection, and all around
      prettier.
      - d=c.send(op)
      - d=c.send_multiResponse(op, fn, ..)
      - c.send_noResponse(op)
    - Add LDAPEntryWithClient.lookup() that was accidentally left out.
    - Add BaseLDAPEntry.hasMember().

  * Refactorings to adapt to Ldaptor APIs:
    - Refactor to avoid LDAPSearch, use ldapsyntax, config and
      ldapconnector:
      - ldaptor-ldap2maradns
      - ldaptor-search
      - ldaptor-ldap2pdns
      - ldaptor-ldap2dhcpconf
      - ldaptor-ldap2passwd
      - ldaptor-rename

  * Bugfixes:
    - In ldaptor-ldap2maradns, make sure the netmask.* A record is in
      octet format (and not as number of bits).
    - Refactor LDAPClient.bind() so it acknowledges completion of the
      request, removing it from onwire message tracking.
    - Fix cut-paste code: ldaptor-ldap2passwd took attributes arguments,
      which only made it break.
    - Make LDAPConnector fail nicely on DNs with no equivalent DNS domain,
      and no override.
    - Make .commit() not break the ldapsyntax entry journal.
    - Nicer error handling in LDAPBindingChecker; now passes
      LDAPInvalidCredentials to the caller as UnauthorizedLogin.

  * Cleanups:
    - Avoid buffering results in ldaptor-ldap2maradns.
    - Extract common DNS utility functions to ldaptor.dns.

  * Administrivia:
    - Make non-script executable files have mode 0644, not 0755.
    - Clean up generated files in doc/.

 -- Tommi Virtanen <tv@debian.org>  Wed, 12 Jan 2005 00:02:56 +0200

ldaptor (0.0.31) unstable; urgency=low

  * Conceptual changes:
    - Service-specific passwords: added a mechanism that allows having
      "subpasswords" that are only used with particular services; e.g.
      let the userPassword attribute be used only for SSH logins, and use
      additional "mail" and "web" password, stored in an attribute called
      "servicePassword". The value is two whitespace-separated fields:
      service name and userPassword-style password digest. See
      ServiceBindingProxy for more.
    - LDIFTree allows LDAP server data storage an a one entry per file
      format, with nice unixy semantics.

  * Applications changes:
    - WebUI:
      - Add pretty label to search form submit button.
      - Service-specific password editing support. Closes: ldaptor#17.
    - Server:
      - New LDIFTree storage backend, storing the LDAP as a filesystem
        directory tree, with one entry per file in LDIF format.
      - Add LDAP proxy support.
      - Add ServiceBindingProxy, an LDAP proxy that handles non-anonymous
        bind requests specially. Closes: ldaptor#15.

  * API changes:
    - Get rid of MutableString:
      - Add pureber.berDecodeObject, remove pureber.ber2object.
      - Add pureber.berDecodeLength, remove pureber.berlen2int.
      - Switch LDAPClient and LDAPServer buffers to be plain strings.
      - Remove MutableString.
    - Change the BER decoding mechanism:
      - Add classmethod fromBER instead of using __init__ in two
        roles.
      - Remove old-style decode support.
    - Add pureber.berDecodeMultiple, mainly for use by subclasses of
      BERSequence.
    - Large lengths appeared to be negative, switched berlen2int to
      using longs.
    - Split LDAPServer to BaseLDAPServer, so one has a choice of
      inheriting something without any handle_* methods.
    - Make ldapsyntax.LDAPEntryWithClient.move() remove the old RDN.
    - Make ldapsyntax.LDAPEntryWithClient.move() change the entry's idea
      of its own DN.

  * Refactorings to adapt to Ldaptor APIs:
    - Use connectAnonymously in parallelsearch example.

  * Refactorings to adapt to Twisted/Nevow APIs:
    - Nevow ISerializable is deprecated.
    - ctx.{allPatterns,patternGenerator} are now called
      ctx.tag.allPatterns etc.
    - all IRequest APIs take a context.
    - switch from getDynamicChild to childFactory.
    - addSlash where appropriate.
    - return URLs instead of explicit redirects.
    - switch from renderHTTP to child_.
    - switch from locateChild to childFactory.
    - Twisted >1.3 moves SRVConnector to twisted.names.srvconnect.

  * Bugfixes:
    - Fix BER length encoding for lengths greater than 127, add unit
      tests.
    - Make many __repr__'s work even when __init__ failed.
    - Make sure every LDAP wire class takes a tag argument.
    - Make LDAPDelRequest also understand keyword argument value, as
      that is what LDAPString uses.
    - Fix and test handling of unknown match types.
    - Fix and unit test saltless non-client setPassword.
    - Fix DistinguishedName order comparison.
    - Make sure configuration does not interfere with the lmPasswords in
      the unit tests.
    - Make nevow data access to LDAP entry attributes work.
    - Add items() to LDAPEntry IContainer adapter's attributes child;
      webui search needs it.
    - Webui edit can now edit attributes that are in the RDN. Closes:
      ldaptor#5.
    - Improve handling of missing baseDN in configuration.

  * Cleanups:
    - Remove dead code.
    - Remove the hack-and-slashed RFC file that served as a TODO note.
    - Override IOPump to pass around more than one byte at a time, saves
      >10 seconds in unit tests and protocol decoding of partial messages
      is unit tested elsewhere anyway.
    - Improve ldaptor.testutil error messages, accept any true/false value
      and not just 1 and 0.
    - Clean up LDAPServer.handleUnknown.
    - Prettify LDAPMessage.__repr__
    - Prettify LDAPResult.__repr__
    - If ldapsyntax.LDAPEntryWithClient.search gets a bad response from
      the LDAP server, raise a real exception and not an assert.
    - When converting delta Modifications to LDAP, convert them to basic
      data types for easier debugging and unit testing.
    - Be consistent and use "ctx" everywhere in webui change_password.
    - Add nevow renderer that produces zebra tables.
    - Make ldapsyntax.LDAPEntryWithClient.move() accept strings etc. as
      newDN, add unit test.
    - Make epydoc happy.
    - Simplify ldap-intro document generation.

  * Packaging:
    - Depend on Nevow v0.3.0 or later.
    - Depend on Twisted v1.3.0 or later.
    - Switch to CDBS.
    - Add an ldaptor-common package to contain conffiles.
    - Run unit tests before building debs.
    - Include the unit tests in the distributed files.

  * Administrivia:
    - Add TODO notes.
    - Update ignore file lists to match currently generated files.
    - Export dia files to format png-libart, not just png. This makes the
      export reliable. Hint from Debian bug#275959.

 -- Tommi Virtanen <tv@debian.org>  Fri, 10 Dec 2004 17:39:36 +0200

ldaptor (0.0.30) unstable; urgency=low

  * Install the webui template and CSS files that were missing
    from the deb. Unit tests really don't cover everything :(

 -- Tommi Virtanen <tv@debian.org>  Tue, 17 Aug 2004 17:06:07 +0300

ldaptor (0.0.29) unstable; urgency=low

  * Brown paper bag time; 0.0.28 was never uploaded.
  * Remove nevow dependency from ILDAPConfig, it seems to work just fine
    as just a components.Interface. This is the real fix, I
    promise. Closes: #264179.

 -- Tommi Virtanen <tv@debian.org>  Tue, 17 Aug 2004 16:48:42 +0300

ldaptor (0.0.28) unstable; urgency=low

  * Applications changes:
    - Support smarter object creation plugins in webui add.
  * Cleanups:
    - Remove references to dead code.
    - Make sure LDAPAttributeTypeAndValue repr works even if
      __init__ raised an exception.
    - Make sambaSamAccount autofiller actually useful, add unit tests.
  * Packaging:
    - Make ldaptor-webui depend on python2.3-nevow. Closes: #264179.

 -- Tommi Virtanen <tv@debian.org>  Tue, 17 Aug 2004 16:32:03 +0300

ldaptor (0.0.27) unstable; urgency=low

  * Applications changes:
    - WebUI:
      - ldaptor-webui has been ported to nevow.
      - move now acts more like a shopping cart.
      - Move most of the command line options of ldaptor-webui to
        configuration file only; please switch to using a .tac file.
    - Server:
      - Support fetching the rootDSE.
      - Claim to support the extended operation for password changing.
      - Support non-anonymous bind against SSHA passwords stored in
        userPassword attributes.
      - Handle entry deletion.
    - Add configuration file support. See files
      /usr/share/doc/ldaptor-{doc,webui}/examples/global.cfg in packages
      ldaptor-doc and ldaptor-webui.
    - New-style Samba schema support, with objectClass sambaSamAccount.
    - Add support for Samba LanMan password hashes, disabled by
      default but configurable.
    - Drop python 2.2 support, using 2.3 features.
    - Allow serviceLocationOverride to have the empty DN ("") as
      key, overriding default location (DNS SRV records) for everything.

  * Documentation changes:
    - Terminate addressbook example LDIFs with empty line so they
      are actually valid LDIF.
    - Modernize addressbook example files.

  * API changes:
    - Generic:
      - Add ldapfilter.parseMaybeSubstring(), which takes attributeType and
        partial filter as arguments, and allows e.g.  easily searching one
        attributeType based on user input, without user having to understand
        LDAP filters.
      - Make DistinguishedName and RelativeDistingushedName do the right
        thing even without explicit stringValue and listOfRDN keyword
        arguments.
      - Add comparison operators to schema.ObjectClassDescription, so they
        can be sorted.
      - Make DistinguishedNames equal their canonical string
        representations and hash identically.
      - Rename ReadOnlyInmemoryLDAPEntry.putChild to .addChild, make
        it accept rdn also as a string.
      - Added setPassword support to inmemory.
      - Added ILDAPConfig.
    - Client:
      - Make LDAPClient.queue take extra arguments and pass them to the
        callback given. Minimizes need for lambdas.
      - Add ldapsyntax.LDAPEntryWithClient.addChild().
      - Remove ldapclient.LDAPAddEntry, it is now unused.
      - LDAPEntryWithClient.search() now understands attributes=None
        to mean do not return any attributes.
    - Server:
      - Allow returning None from the message handler.
      - handle_* API changed: now handlers can happily just
        raise whatever they want, and fail_* (or failDefault) are used
        to map the exception to LDAP errors.
      - Added function checkControls() that all handlers should call
        with unsupported controls. It raises error if unsupported
        controls include any critical controls.

  * Refactorings to adapt to Ldaptor APIs:
    - Make webui edit use entry.fetch() instead of
      ldapclient.LDAPSearch.

  * Refactorings to adapt to Twisted/nevow APIs:
    - Tell nevow how to serialize DistinguishedNames.
    - Tell nevow how to serialize LDAP entries.
    - Create an IContainer adaptor for LDAPEntries.
    - Switch webui to use ISession.
    - Follow Twisted DNS resolver API changes in
      ldaptor-find-server.

  * Bugfixes:
    - Fix bug where entry.undo() switched off journaling and thus
      sending any further updates to the server.
    - In server, make failing searches indicate why they failed.
    - Make sure LDAPFilter_and and LDAPFilter_or know how to decode
      filter elements.
    - Initialize BaseLDAPEntry attributes early so __repr__ works
      even when __init__ was buggy.
    - Protect against passing None to DistinguishedName.
    - Raise LDAPOther, not LDAPUnknownError; unknown errors should
      only be created by ldaperrors.get().
    - Protect against no subschemaSubentry attribute in fetchschema.
    - Make LDAPEntryWithClient repr work even in invalid state.
    - Fix wrong number of arguments in handling unknown requests in
      server. (Closes: #261837)
    - Make sure LDAPEntryWithClient.delete can handle all kinds of
      errors and not just LDAPDelResponse.
    - In webui, protect against issue74 in nevow.guard. Can only be
      triggered by adjusting the URL manually.
    - Support LDAP controls in ldapserver, but only by ignoring
      non-critical ones and triggering an error on critical ones.
      (Closes: #263210)

  * Cleanups:
    - Remove dead imports, code, TODO entries etc.
    - Improve unit test coverage:
      - Test ldapfilter parsing whitespace handling.
      - Add a simple unit test for callable serviceLocationOverride.
      - Do automated testing of webui.
      - Add unit tests for fetchschema.
      - Test that the server can provide schemas, if the data is
        right.
      - Test failing searches in ldapsyntax.
      - Test failing delete in ldapsyntax.
      - In pureldap unit tests, use pureber.ber2object() instead of
        instantiating the class directly, to simulate real use better.
      - Allow overriding the BERDecoderContext to use in pureldap unit
        tests.
      - Unit test serialize/unserialize of pureldap.LDAPMessage.
    - Prettify:
      - Use pyparsing .setName() in ldapfilter parsing for nicer
        debugging.
      - Make PasswordSetAggregateError stringify itself nicely.
      - Rename webui change_password action "Choose Password" to "Set
        Password", it describes the action better.
      - Add a more helpful assertion message.
      - Avoid periods at end of error messages, they can be added when
        doing actual outputting.
      - Show pretty error when invalid DN is given to
        --service-location= command line parameter.
      - Nicer repr for pureber.BERDecoderContext.
      - Nicer exception when pureber.ber2object sees an unknown tag.
    - Code readability and cleanliness:
      - Use constants from string module in LDAP filter parsing.
      - Use pyparsing.delimitedList in ldapfilter parsing.
      - Use "bool()" instead of "not not".
      - Clean up dn handling in BaseLDAPEntry.
      - Clean up webui delete and improve error handling.
      - Modernize ldaptor-fetchschema.
      - Modernize ldaptor-getfreenumber.
      - Make autofillers share code.
    - Developments support:
      - LDAPClient and LDAPServer can now toggle debug output
        dynamically.
    - Do Things Right:
      - Switch to relative URLs when referring to CSS stylesheets.
      - domainComponent is an attributeType, not an objectClass.
        Replace with dcObject.

  * Packaging:
    - Drop python 2.2 support.

 -- Tommi Virtanen <tv@debian.org>  Thu,  5 Aug 2004 23:05:11 +0300

ldaptor (0.0.26) unstable; urgency=low

  * Documentation changes:
    - Archive sketch of the interfaces (with no explanation :).

  * Bugfixes:
    - Override __eq__ and __ne__ in pureber.BERBase too, otherwise
      UserList's implementation of those overrode BERBase.__cmp__ and
      caused false equalities.
    - Reimplement ldapfilter, with Unit Test flavor. Use pyparsing
      to make it really handle extra data and backslash escaping.
    - When calling filt.asText() for LDAP filters, make sure to
      backslash escape special characters.

  * Cleanups:
    - Typo in docstring.
    - Add nicer repr of pureldap.LDAPMatchingRuleAssertion, to make the
      problem easier to spot.

  * Packaging:
    - Depend on pythonX.Y-pyparsing.
    - New enough dia is in unstable, so upload to unstable again.

  * Administrivia:
    - Add TODO notes.

 -- Tommi Virtanen <tv@debian.org>  Sat, 26 Jun 2004 14:34:06 +0300

ldaptor (0.0.25) experimental; urgency=low

  * Pre-generate documentation in build target, don't wait until
    install target. Makes dia work with dpkg-buildpackage
    -rfakeroot, because "debian/rules build" is run without
    fakeroot, and then dia can scribble in the home directory of
    the real user, not /root/.dia. Ungh. I'm filing a bug on dia.

 -- Tommi Virtanen <tv@debian.org>  Mon, 17 May 2004 19:51:11 +0300

ldaptor (0.0.24) experimental; urgency=low

  * Applications changes:
    - Can now generate diffs of two LDAP entries, or even two full trees,
      and use that either to modify LDAP entries at a server, or generate
      LDIF modification commands. Can also parse LDIF modification files.
      See ldaptor-ldifdiff, ldaptor-ldifpatch.

  * Documentation changes:
    - Addressbook example source:
      - Bugfixes and cleanups.
      - Rewrite addressbook examples to use nevow instead of woven
        and make them runnable via .tac files.
    - Modernize addressbook-slides:
      - Remove htmldiff hack, use meld instead. Simplify things a bit.
      - Add new addressbook-slides-server.tac that launches meld
        automatically when you load that page, useful for presentations.
      - Add CSS stylesheet.
      - New DTD version, fix to conform to DTD.
      - Split 01_repl into screen-size chunks.
    - In addressbook slides, use smaller pictures to make sure they fit on
      screen.
    - In addressbook examples, let one user have a valid password and edit
      access, so the same server can be used to demo ldaptor-webui.
    - Note in ldap-intro documentation that OpenLDAP doesn't allow
      changing objectClasses of existing objects.
    - Fix typo in doc/examples/ldif2ldif.
    - Docstring cleanup.
    - Switch from graphviz to dia for figures. (Closes: #242147)
    - In example LDIFs, rename Erkki Esim to Ample Exam, for i18n.

  * API changes:
    - First stages of LDIFTree work; initial support for storing LDIFs in a
      tree form.
    - Add inmemory data backend.
    - Start using interfaces, abstract common LDAP entry things into
      ldaptor.entry, ldaptor.attributeset.
    - Add module ldaptor.delta.
    - Add LDAPEntry.match().
    - Add IConnectedLDAPEntry.lookup().
    - The LDAP server prototype code has changed a lot, not summarizing
      here.
    - Rename ldifprotocol.LDIF.completed() to more specific
      gotEntry(), so inmemory DB loading can have .gotDatabase() or
      something, and .completed() won't look confusing there.
    - Switch ldifprotocol into producing BaseLDAPEntries.
    - Add ldaptor.entry.EditableLDAPEntry, make
      ldapsyntax.LDAPEntryWithClient inherit EditableLDAPEntry.
    - Make LDAPConnector accepts dns also as strings.
    - LDAPConnector accepts overrides that are callable, and lets them
      take control of the connecting. This is mostly meant for unit
      testing.

  * Internal refactorings:
    - Refactor to remove client-specific details from LDAPAttributeSet and
      to generalize the concept of a Modification so it can be used with
      LDIF also.
    - Refactor LDAPAttributeSet to interits Set.
    - Switch BaseLDAPEntry to a be a new-style class.

  * Bugfixes:
    - Fix webui search basedn navilinks.
    - In ldaptor-fetchschema, start logging so errors are reported to the
      user.
    - Ignore case in attributeType names.
    - LDIF parsing:
      - Support splitted lines in ldifprotocol.LDIF.
      - Fix LDIF parsing when values have no leading space.
      - Protect against "<" values (external URL) in LDIF parsing.
      - Make ldifprotocol support versioned LDIF files.
    - Make LDAPServer error handling to actually talk sane
      things on the wire.
    - Detect truncated LDIF files, raise
      ldifprotocol.LDIFTruncatedError.
    - Handle different capitalizations of 'objectClass' in
      BaseLDAPEntry.
    - Finish schema parsing.
    - Fix bug where ldapserver raises an exception on non-anonymous
      binds. It was missed in ldaperrors refactor, add unit tests so it
      will not be missed again. (Closes: #244543)
    - When LDAPServer receives unknown protocol requests, reply sanely and
      do not close the connection. Thanks to Guido Trotter.
      (Closes: #244861)
    - Notice differences in attributeType when comparing
      LDAPAttributeSets.
    - In LDAPAttributeSet, override those parts of sets.Set which
      assume class creation works without arguments (as we need the
      key always).

  * Cleanups:
    - Start gathering unit tests for the server protocol.
    - Stringify MutableStrings to simplify things. MutableStrings
      shouldn't leak out of pureber and pureldap.
    - Use the canonical way to write objectClass in
      pureldap.LDAPFilterMatchAll; especially needed as the server code is
      currently case-dependent.
    - Nicer repr for LDAPAttributeSets.
    - Make sure BaseLDAPEntry LDIFfication lists attribute values in
      sorted order for reproducability.
    - Add comparisons to RelativeDistingushedName in order to have
      stable unit test results.

  * Packaging:
    - Build-depend on dia (new enough dia to not need X11 at build time)
      => uploading to experimental.

 -- Tommi Virtanen <tv@debian.org>  Mon, 17 May 2004 19:27:00 +0300

ldaptor (0.0.23) unstable; urgency=low

  * Bugfixes:
    - Fix a totally embarassing bug that left ldaptor-webui.deb
      almost empty.

 -- Tommi Virtanen <tv@debian.org>  Fri, 12 Mar 2004 17:20:03 +0200

ldaptor (0.0.22) unstable; urgency=low

  * Applications changes:
    - Partial rewrite of ldaptor-webui add to handle structural
      objectclasses separately from auxiliary objectclasses.

  * Documentation changes:
    - Add an example of using ldaptor-webui via twisted-web.

  * API changes:
    - Removed ldaptor.cred, it is no longer used.

  * Refactorings to adapt to Twisted APIs:
    - Switch from twisted.web.static.redirectTo() to
      twisted.web.util.redirectTo(), don't import static anymore.

  * Internal refactorings:
    - Move resource creation from ldaptor-webui script to library.

  * Bugfixes:
    - Make sure errors in ldaptor-webui add are passed along.
    - Explicitly fail when schema objectclasses refer to unknown
      attributetypes.
    - Make ldaptor-webui baseDN form work even when it's not at the root
      of the web server.

  * Cleanups:
    - Remove unused import in ldaptor-webui.

 -- Tommi Virtanen <tv@debian.org>  Fri, 12 Mar 2004 16:58:12 +0200

ldaptor (0.0.21) unstable; urgency=low

  * Documentation changes:
    - Added document "Introduction to LDAP".
    - Added example web-based application, a simple addressbook
      search, and slides demonstrating how one might write one
      incrementally. These might not make much sense without
      the talk (or even with it), my apologies for that.
    - Upgrade to docbook-slides 3.2.0.
    - Allow xsltproc to use net in case the XML catalog isn't well
      setup -- will re-enable --nonet when docbook-slides registers
      with xml-core.

  * API changes:
    - Add a new utility function
      ldapconnector.LDAPClientCreator.connectAnonymously(), which does
      an anonymous bind on behalf of the caller.
    - Allow ldaptor.apps.webui.htmlify.htmlify_attributes() to work on
      sets and sequences alike.
    - Search supports new sizeLimitIsNonFatal flag, that makes
      sizeLimitExceeded errors from server just truncate the result
      list instead of aborting the search.
    - Implement LDAPExtendedResponse.

  * Refactorings to adapt to Ldaptor APIs:

  * Refactorings to adapt to Twisted APIs:
    - Adapt to Twisted changing Options superclass from UserDict to
      dict: Options mixins can no longer inherit Options, as otherwise
      python2.3 throws a TypeError: Cannot create a consistent method
      resolution order (MRO) for bases. Closes: #232255, 223632,
      232022.
    - Add twisted newcred support.
    - Partial woven support (twisted.web.widgets is deprecated, but
      now woven is deprecated too, in favor of newov! I can't keep
      up!)
      - Woven integration of the basic LDAP objects.
      - ldaptor-webui search, delete and change_password
    - Ldaptor-webui refactoring
      - newcred and simpleguard
      - get rid of twisted.internet.app

  * Internal refactorings:
    - Refactor LDAP filter parsing to have all the things looking like
      (key=...) in one function.
    - Refactor ldaperrors to actually use the exception classes.
    - Modularize the experimental LDAP server implementation.

  * Bugfixes:
    - Fix webui moves: typo in variable name, handle
      distinguishednames as objects and not strings.
    - Make sure the port number is an integer before using it in
      LDAPConnector.
    - Add proper stringification to LDAPClientConnectionLostException;
      used to cause tuple index errors in LDAPException.__str__().
    - Make URLs like http://localhost:38980/dc=example,dc=com (no
      trailing slash) work in ldaptor-webui.
    - In ldaptor-webui search, do not show the default twisted form
      error screen when there was no form submitted. Ugly workaround
      that provides default values instead of '', I can't seem to find
      a nicer way.

  * Cleanups:
    - Remove unused methods and imports.
    - Remove BidirDict, it's not used anymore.
    - Remove debug prints.
    - Move from equality comparison to identity comparison when
      comparing against None. Cleaner and should even be faster.
    - Cleanup doc/Makefile
      - split the massive "do all" target into smaller targets
      - protect targets against missing parent directories of target
        file
      - move the HTML diff files and such out of doc/examples/
    - Cleanup LDAPException stringification, protect against
      exceptions with neither arguments nor class attribute name.
    - Cleanup indentation.
    - Pychecker cleanups.

  * Packaging:
    - Add build-depends needed for generating the documentation.
    - Move examples/ to doc/examples/
    - Make sure the documents can be built automatically.
    - Build-Depend on things needed for generating the documentation.
    - Add a new binary package, ldaptor-doc, that will contain the
      documentation.
    - Depend on a new enough version of Twisted.

  * Administrivia:
    - Edit TODO notes.
    - Ignore documentation generated files.
    - Add unit test coverage checking.
    - When rsyncing documentation to pyramid.twistedmatrix.com, rsync
      the full directories of slides, not just the index.html.

 -- Tommi Virtanen <tv@debian.org>  Sun, 29 Feb 2004 00:23:15 +0200

ldaptor (0.0.20) unstable; urgency=low

  * Applications changes:
    - Whoops, the syntax for singe-element tuple literals bit me
      again. Switch webui change_password to using lists, it's what Guido
      wants.

  * Bugfixes:
    - Explicitly stringify the dn to transparently work with
      DistinguishedName objects.

  * Packaging:
    - Drop python2.1, Twisted no longer supports it. Closes: #196038.
    - Let dh_python handle removing *.pyc from the deb and generating them
      in postinst (and use dh_clean to clean up after it). Make
      python-ldaptor's dependency to python be a versioned one. Not using
      dh_python's automagic, as it doesn't seem to work right. Closes:
      #205398.

  * Administrivia:
    - Add TODO entry about some SyntaxWarnings triggered by scoping.
    - Fix typo in setup-*.py.

 -- Tommi Virtanen <tv@debian.org>  Mon, 25 Aug 2003 22:22:20 +0300

ldaptor (0.0.19) unstable; urgency=low

  * Fix reference to non-existent local variable dn in webui
    change_password.py
  * Python 2.3 is now the default.

 -- Tommi Virtanen <tv@debian.org>  Sat,  9 Aug 2003 14:18:15 +0300

ldaptor (0.0.18) unstable; urgency=low

  * Bugfixes:
    - Make serviceLocationOverrides work once again in LDAPConnector.

 -- Tommi Virtanen <tv@debian.org>  Sun,  3 Aug 2003 10:17:00 +0300

ldaptor (0.0.17) unstable; urgency=low

  * API changes:
    - Add LDAPClientCreator.

 -- Tommi Virtanen <tv@debian.org>  Sun,  3 Aug 2003 10:01:19 +0300

ldaptor (0.0.16) unstable; urgency=low

  * Applications changes:
    - Make ldaptor-passwd actually follow it's usage. Defaults to
      changing password of the bind DN, if unspecified.
    - Make ldaptor-passwd Samba password changing more intelligent;
      instead of a Boolean, it's now a tristate option, with the new
      value "auto" checking for objectClass and setting the Samba
      password if and only if it sees the value sambaAccount there.
    - ldaptor-passwd now always changes all applicable passwords.
    - Hierarchical structure editing in ldaptor-webui is done, remove from
      TODO.
    - In ldaptor-webui change_password, don't make the DN a form
      field, there's no point in changing it at that time.
    - In ldaptor-webui, parse invalid base DNs and complain to user.
    - In ldaptor-webui, store DNs as DistinguishedNames, not as
      strings.
    - We fully support DNS SRV records now.
    - Add sample app bin/ldaptor-fetchschema, and notes on it's
      future direction. The current output looks ugly.

  * API changes:
    - LDAPObject.namingContext returns the naming context containing
      the LDAP object.
    - Deprecate LDAPModifyAttributes in LDAPObject, ldaptor-webui.
    - Add password changing support to LDAPObject.
    - LDAPModifyPassword is no longer used anywhere, remove it.
    - Add LDAPObject.items().
    - Add LDAPObject.fetch().
    - Support partial fetching in LDAPObject.fetch().
    - Add LDAPObject.setPassword_Samba().
    - Remove LDAPModifySambaPassword, it has no users anymore.
    - LDAPObject.setPassword() password setting now changes all
      applicable passwords automatically.
    - Remove LDAPModifyAttributes as obsolete.
    - "key in ldapobject" support, better iteration support for
      LDAPObject keys and key values.
    - Move authentication bits from ldaptor-webui main script to
      ldaptor.cred module.
    - Prevent removing attributes that are in the RDN of the object.
    - DistinguishedName now parses the actual values in DNs into
      attributetypes and values, and raises
      InvalidRelativeDistinguishedName for malformed RDNs.
    - Add preliminary support for LDAP object data content
      suggestions. Still need to implement a lot more hints and
      integrate into ldaptor-webui.
    - Add simple&stupid server-side support. Only knows bind/unbind
      and search, and all searches return no items.
    - Add LDIF parsing support.
    - Move ldaptor.protocols.ldap.ldapfilter to ldaptor.ldapfilter.
    - Split LDAP schema implementation into pure-ASCII parsing part
      and LDAP client remote schema fetching.
    - Rename the module that does LDAP schema fetching over the
      client connection to fetchschema, to better separate it from
      the ASCII schema parser.
    - Rename LDAPObject to LDAPEntry, that might be a bit more
      descriptive.

  * Refactorings to adapt to Ldaptor APIs:
    - Deleting LDAP object is now done via LDAPObject.delete().
    - Switch from ldapclient helpers to LDAPObjects in ldaptor-webui
      mass_change_password.
    - Change ldaptor-webui change_password to use
      LDAPObject.setPassword() instead of LDAPModifyPassword.
    - In ldaptor-passwd, use LDAPObject.setPassword_Samba() instead
      of LDAPModifySambaPassword.
    - Rewrite more code away from LDAPSearch.
    - Refactor ldaptor-ldap2passwd to use LDAPObjects.
    - Refactor ldaptor-webui add and delete to use LDAPObjects and
      DistinguishedNames more.
    - Modernize the ldap_parallelsearch.py example to use
      LDAPEntries.

  * Refactorings to adapt to Twisted APIs:
    - Authorizer.setApplication() has been obsoleted, apparently
      .setServiceCollection() does the same thing.
    - Use new-style maybeDeferred.
    - Switch from standard unittest to Twisted's trial. Also
      reorganized the package to match trial's expectations; that
      is, removed the lib/ dir.
    - Move from my own waitForDeferred to twisted's deferredResult,
      deferredError.
    - Rewrite the ldap_parallelsearch.py example to suit
      twisted.internet.protocol.ClientCreator and to not use global
      variables.

  * Refactorings to adapt to Python APIs:
    - Avoid using deprecated features of python.

  * Internal refactorings:
    - ldaptor-webui's Gadget() does not need or want the base DN; it
      asks it from the user.
    - Work towards running ldaptor-webui from an .rpy: add state
      serialization support, make serviceLocationOverride optional.

  * Bugfixes:
    - Use a python2.1 scope rules compatible lambda.
    - Add missing module ldapconnector to package
      ldaptor.protocols.ldap's __all__ list.
    - Make LDAPSearchRequest inherit BERSequence so that it has a
      comparison function.
    - Make sure the other dn is not just a string in
      DistinguishedName.contains().
    - Fix broken test and implementation for
      LDAPObject.setPassword() -- used to change the password for the
      bind DN.
    - Be more explicit by stringifying DNs before trying to do
      string-like operations on them.
    - Avoid requesting LDAPIdentities before the necessary LDAP
      connection has opened.

  * Cleanups:
    - Cleanup unit tests and merge similar functionality into helper
      functions.
    - Remove unintelligible comments in md4.py.
    - Avoid non-ASCII in source (but still keep it in the test).
    - Add unit tests for NT password hashing.
    - Add test for LDAPObject.keys().
    - Clean up LDAPObject journal handling. Rename journal operation
      classes, provide a superclass to inherit, and give
      LDAPAttributeSet a real API to submit changes.
    - Actually call fail.getErrorMessage, don't just print the
      function.

  * Packaging:
    - Depend on twisted >= 1.0.6
    - Change Debian section for python{,2.1,2.2}-ldaptor from
      interpreters to python.

  * Administrivia:
    - API documentation:
      - Support setting PYTHONPATH outside the script (to use CVS
        Twisted).
      - New home page URL.
      - Support uploading the API docs.
    - Ignore editor backup files.
    - Ignore Twisted tap files.
    - Fix admin/doctest-all.py that got broken in the lib/
      reorganization.

 -- Tommi Virtanen <tv@debian.org>  Sat,  2 Aug 2003 14:06:32 +0300

ldaptor (0.0.15) unstable; urgency=low

  * Typo fix.

 -- Tommi Virtanen <tv@debian.org>  Sat, 25 Jan 2003 18:11:31 +0200

ldaptor (0.0.14) unstable; urgency=low

  * Refactor ldaptor-webui add to use new-style getFreeNumber --
    missed this the first time around.
  * Python 2.1 namespace handling compatibility.

 -- Tommi Virtanen <tv@debian.org>  Sat, 25 Jan 2003 18:05:11 +0200

ldaptor (0.0.13) unstable; urgency=low

  * Bring test suite up to date.
  * Beginnings of a more Pythonic LDAP API.
  * Make ldapclient.LDAPModifyAttributes use Deferreds.
  * Pass ldapclient when creating LDAPObject, not at every use.
  * Simplify filter handling in ldaptor-search.
  * Add comparison functions for LDAPObjects.
  * LDAPObject.search now supports kwarg callback, which allows
    processing search results one by one.
  * Support creating API docs with epydoc.
  * Add bin/ldaptor-ldap2pdns
  * Docs and TODO update.
  * Allow empty base setting.
  * Support for parsing and generating string representations of
    LDAP Distinguished Names (DNs).
  * Display usage to stderr in ldaptor-namingcontexts.
  * Support for finding the domain name, and via DNS SRV, the
    server, related to an LDAP DN.
  * ldaptor-webui SRV support: options --host and --port are gone,
    finds LDAP servers for domainComponent-style DNs via DNS SRV
    records. If you don't have them, and don't want to fix that,
    use --service-location='dc=example,dc=com:ldap.example.com'.
  * Increase DNS timeout to 5 seconds.
  * Add DistinguishedName.contains()
  * Make DistinguishedName hashable.
  * Use the client for this session to fetch the attributes, don't
    open up a new connection.
  * Enable log to stderr in ldaptor-webui.
  * Runtime-changeable base DN support in ldaptor-webui: the base
    DN is now the first path segment in the URL, and you can
    navigate in the tree freely.
  * Bugfix for ldaptor-ldap2dhcpconf, used to assert when there
    were no sharedNets.
  * Fix an uninterruptible infinite loop in ldaptor-webui
    shutdown.
  * In ldaptor-webui, support search scopes.
  * In ldaptor-webui, show base object when no search has been
    done.
  * LDAP DN renaming support.
  * Various minor bugfixes.

 -- Tommi Virtanen <tv@debian.org>  Sun, 19 Jan 2003 17:32:03 +0200

ldaptor (0.0.12) unstable; urgency=low

  * Be epydoc-friendly in docstrings.
  * LDAP server closing connection due to idle timeout is now
    handled properly.
  * Added option --identity-base, setting the base dn for the
    search of identities (done with --identity-search).

 -- Tommi Virtanen <tv@debian.org>  Sat,  7 Dec 2002 13:57:19 +0200

ldaptor (0.0.11) unstable; urgency=low

  * New options-based, changeable search fields. To get the old
    behaviour, use --search-field=Name='(cn=%(input)s)'
    --search-field=UserID='(uid=%(input)s)'
    --search-field=Email='(mail=%(input)s)'.

 -- Tommi Virtanen <tv@debian.org>  Sun, 24 Nov 2002 21:16:23 +0200

ldaptor (0.0.10) unstable; urgency=low

  * ldaptor-ldap2dhcp bugfixes, cleanup, and support for
    per-subnet DNS and WINS servers.
  * Be more careful about the Debian section information.
  * In ldaptor-webui, allow editing missing optional fields of
    objects.

 -- Tommi Virtanen <tv@debian.org>  Thu, 31 Oct 2002 20:14:36 +0200

ldaptor (0.0.9) unstable; urgency=low

  * Copy over my MutableString implementation from Twisted, they
    are deprecating it. The one in UserString has very different
    behaviour. Closes: #163772.
  * Twisted Process wants the reactor.. Let's play along.
  * Handle no change -case better in ldaptor-webui mass password
    change.
  * Update TODO to reflect current situation.
  * Lots of places refer to ldaperrors.other, provide that.
  * Work on ldaptor-ldap2dhcpconf, ldaptor-ldap2maradns.
  * Bug fix in ldaptor-webui add.

 -- Tommi Virtanen <tv@debian.org>  Sun, 27 Oct 2002 12:28:14 +0200

ldaptor (0.0.8) unstable; urgency=low

  * Take out the python2.3 support, Twisted doesn't support 2.3
    yet anyway.

 -- Tommi Virtanen <tv@debian.org>  Thu, 19 Sep 2002 20:06:26 +0300

ldaptor (0.0.7) unstable; urgency=low

  * Don't leave LDAP connections open, cleanup.
  * ldaptor-webui search no longer leaks LDAP server connections
    for every search
  * Misc bug fixes.
  * Use Failures.
  * Default ldaptor-webui port is now 38980 (think "ldap and
    http").
  * New tool ldaptor-ldap2passwd
  * Added TODO notes.
  * Support changing Samba passwords.
  * Add functionality to get free uidNumbers.
  * Find free uidNumber/gidNumber in ldaptor-webui add.
  * Avoid Twisted deprecation warnings.
  * Support adding objects composed of multiple objectclasses.
  * Mark mandatory attributes with an asterisk.
  * Some pychecker cleanups.
  * Protect setup-*.py against pychecker importing them.
  * Packaging cleanups; python2.2 as default, python2.3 support,
    better descriptions.
  * Fix upstream location.

 -- Tommi Virtanen <tv@debian.org>  Thu,  8 Aug 2002 10:21:51 +0300

ldaptor (0.0.6) unstable; urgency=low

  * Twisted ClientFactory and Protocol connectionLost refactor.

 -- Tommi Virtanen <tv@debian.org>  Thu,  8 Aug 2002 10:21:07 +0300

ldaptor (0.0.5) unstable; urgency=low

  * ldaptor-passwd generated password setting failed as it tried
    to handle a list of one string as a string.
  * Depend on pwgen.
  * Add change_password.
  * Rename mass_password_change to mass_change_password, to fit
    the task-oriented naming convention.
  * Don't accept empty passwords in ldaptor-webui change_password.
  * Get rid of the rest of the implicit localhosts.
  * Moving bidirdict into ldaptor package as distutils can't
    handle it otherwise.
  * Added asText method for LDAPFilter_substrings, webui search
    should no longer fail.
  * LDAPClient.bind() now returns a Deferred.
    LDAPClient.handle_bind_success() and
    LDAPClient.handle_bind_fail() are gone.
  * LDAPClient.bind() deferred bugfixes.
  * Added ability to use shorthands for Identity names.
  * Lots of minor bugfixes.

 -- Tommi Virtanen <tv@debian.org>  Thu,  8 Aug 2002 10:16:19 +0300

ldaptor (0.0.4) unstable; urgency=low

  * Remove the obsolete ldaptor.twisted package.

 -- Tommi Virtanen <tv@debian.org>  Sat,  3 Aug 2002 16:20:21 +0300

ldaptor (0.0.3) unstable; urgency=low

  * NOTE: Requires a CVS version of twisted!
  * New upstream version.
  * tcp.Client -> reactor.clientTCP
  * Removed old code in ldaptor.twisted that got in the way of
    imports.
  * Added options --generate and --bind-auth-fd
  * Fix widget in ldaptor-webui search page.
  * Twisted Connector refactor.
  * Add hint that 'description' attributetype is always multiline.
  * Starting to use Deferreds everywhere.
  * Exception-based errors.
  * Add asText() methods to LDAPFilter*-classes, convert objects
    to textual filter representation.
  * Implement LDAPFilter_not.
  * Add mass_password_change to ldaptor-webui.
  * Added utility to generate debian/changelog automatically from
    BitKeeper.

 -- Tommi Virtanen <tv@debian.org>  Sat,  3 Aug 2002 15:55:09 +0300

ldaptor (0.0.2) unstable; urgency=low

  * NOTE: Requires a CVS version of twisted!
  * NOTE: Upgrade from 0.0.1 can fail.
  * Split package into library, ldaptor-webui and
    ldaptor-utils. Support multiple python versions in library.
  * Added new command line utilities:
    - ldaptor-namingcontexts to list naming contexts of a server.
    - ldaptor-ldap2dhcpconf is the start of a tool to export host
      entries from LDAP in a format suitable for a DHCP server.
    - ldaptor-ldap2maradns does pretty much the same for DNS, in
      (partial) maradns zone format; it was just so much easier.
    - note that the ldaptor-ldap2{dhcpconf,maradns} input format
      will change as I try to cram in a few more features
      (separate physical network location from DNS domain -- they
      are currently bound together).
    - ldaptor-search aims to be a full replacement for ldapsearch.
    - ldaptor-passwd allows changing passwords (as per RFC3062).
  * ldaptor-webui:
    - added support for "Advanced" searching with raw LDAP filter
      strings.
    - change parameter --port to --http-port, for clarity.
    - fix navi links.
  * Make all LDAP server, port and base settings explicit.
  * Add ldapfilter and ldif modules.
  * Create ldaptor.usage to store common option processing.
  * Change twisted.python.defer to twisted.internet.defer and
    twisted.protocols.protocol to twisted.internet.protocol.
  * Handle unsolicited LDAP notifications.
  * New test subsystem.
  * Rewrite LDAP protocol error number storage to be
    bi-directional; you can resolve a number to a string.

 -- Tommi Virtanen <tv@debian.org>  Sun, 28 Jul 2002 20:30:06 +0300

ldaptor (0.0.1) unstable; urgency=low

  * Initial Release.

 -- Tommi Virtanen <tv@debian.org>  Sun, 26 May 2002 18:08:30 +0300

