2005
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
2004
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
2003
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
2002
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