TODO file for the Ldaptor project.

* ldaptor-webui: edit: adding attributes in schema MAY that didn't
   exist earlier

* ldaptor-webui: edit: adding objectClasses

* ldaptor-webui, ldaptor-utils: editing a users groups
   - for ldaptor-webui, a multiselection with a list of existing
      groups to choose from

* ldaptor-webui, maybe others: non-ASCII chars

* changing the dn attribute

* duplicate mails/uids/uidNumbers/gidNumbers/homes

* suggest mails/uids/uidNumbers/gidNumbers/homes

* SSL

* ldaptor-webui empty lines at end of multiline attributes gets
   lost in old_foo (atleast with galeon)

* ldaptor-webui: connections to ldap server lost cause tracebacks

* ldaptor-webui: malformed ldap filter causes tracebacks

* ldaptor-webui: if authenticated, use that client for searches etc.

* ldaptor-webui: on failed add, don't clear form

* ldaptor-ldap2dhcpconf: data validity

* ldaptor-webui: forms accesskey, fieldset & legend, disabled,
   readonly in http://www.w3.org/TR/html401/interact/forms.html

* ldaptor-webui: choosing the right dn key for users? Prefer
   uid?

* ldaptor-webui: samba fields.

* ldaptor-webui: shadow field defaults

* referrals

* SASL

* renaming objects

* search requested attributes: +, *, + -, and 1.1 support.

* ldaptor-search: twisted support for --base=''

* Samba rid=2*uid+1000, primaryGroupID=2*gid+1001

* Samba pwdLastSet, logonTime, logoffTime, pwdCanChange, pwdMustChange
   = seconds since 1970.

* Samba ntpassword, lmpassword equal clear text passwords: keep
   secret.

* ldaptor.schema: add stringification in the same format it parses.
   bin/ldaptor-fetchschema should be ok already.

* use LineOnlyReceiver

* write a getting started doc with steps #2 and #3 from openldap.org quickstart.html

* use twisted-web.deb for ldaptor-webui; steps needed:
   1. exarkun/moshez twisted.web improvement that returns 403 for
   non-localhost requests must be integrated to twisted (jml promised
   to do) (code is in sandbox/exarkun/rresource.py in Twisted CVS)
   2. twisted release
   3. twisted-web upload to debian

* add->search->delete => your basedn has been removed, parent links
   fail also

* ldaptor-ldap2maradns: Anetmask. should set A record as x.y.z.0 and
   TXT as "16" (bitcount)

* ldaptor-ldap2maradns: generate gw.X automatically

* At some stage, ldaptor needs better user interface than what can be
   reasonably built with HTML. Windows compatibility will sadly be of
   utmost importance. Look at

   - Trying to cope with HTML

   - XUL

   - LivePage/LiveEvil

   - wxWindows

   - glade, python-gtk

* self-change password webui

* ldaptor-getfreenumber take minimum as command line option

* ldapserver handler functions can return only one message, and have
   the awkwark "reply" callback parameter for more. Cannot nicely
   implement as generators, because they can be Deferred. Use a
   Stream, from moshez's callchain.py

* move servicelocationoverride search logic from connector to
   ldap.config

* use ldaptor.config.ILDAPConfig everywhere for
   serviceLocationOverrides etc. by passing around a componentized
   "context" that can be used to access ILDAPConfig. ILDAPConfig
   should only contain parts used by the ldaptor library; webui should
   use its own IWebUIConfig.

* add entry.namingContexts(), that returns all of the naming contexts
   and not just the one that is parent for entry.dn

* better API to handle controls

* use interfaces and adapters for serializing BER objects

* split webui unit tests

* install unit tests when doing setup.py install

* samba password changing should set these, too:
  - sambaPwdCanChange: 1093889533
  - sambaPwdLastSet: 1093889533
  - sambaPwdMustChange: 2147483647

* ldaptor-passwd doesn't fetch entry objectClasses from server, so it
   never notices it should set samba passwords, too.
