/usr/share/web2ldap/htdocs/changes-0.9.html is in web2ldap 1.1.43~dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 | <!DOCTYPE html>
<html>
<head>
<title>web2ldap - Changes 0.9.x</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta name="author" content="Michael Ströder <michael@stroeder.com>">
<meta name="description" content="web2ldap: History of released versions">
<meta name="keywords" content="LDAP LDAPv2 LDAPv3 subschema gateway Python python-ldap Directory userCertificate PKI LDIF DSML">
<meta name="robots" content="INDEX,FOLLOW">
<meta name="revisit-after" content="5 days">
<meta name="publisher" content="stroeder.com">
<meta name="generator" content="hand-made, home-brewed">
<meta http-equiv="x-frame-options" content="deny">
<!--CSS einbinden-->
<link rel="stylesheet" type="text/css" media="screen" href="css/web2ldap.de-screen.css">
<style type="text/css" media="all">
@import "css/screen.css";
</style>
<link rel="author" href="http://www.stroeder.com">
<link rel="license" href="http://www.stroeder.com" title="Copyright by Michael Ströder <michael@stroeder.com>">
<script type="text/javascript">
<!--
if(top.frames.length > 0)
top.location.href=self.location;
//-->
</script>
</head>
<body lang="en">
<header>
<nav>
<div id="navigation">
<p>
<a href="web2ldap.html">Main</a> //
<a href="download.html">Download</a> /
<a href="features.html">Features</a> /
<a href="roadmap.html">Roadmap</a> /
<a href="news.html">News</a> /
<a href="demo.html">Demo</a> /
<a href="related.html">Related</a>
</p>
<p>
<a href="support.html">Support</a> //
<a href="http://www.stroeder.com">Commercial</a> /
<a href="feedback.html">Feedback</a> /
<a href="faq.html">FAQ</a>
</p>
<p>
<a href="docs.html">Documentation</a> //
<a href="install.html">Installing</a> /
<a href="usability.html">Customizing UI</a> /
<a href="web2ldapcnf.html">Configuration</a> /
<a href="compability.html">Compability</a> /
<a href="security.html">Security</a> /
<a href="changes.html">Changes</a> /
<a href="files.html">Files</a>
</p>
</div>
</nav>
<hgroup>
<h1>
Changes 0.9.x
</h1>
<h2>
History of released versions
</h2>
</hgroup>
</header>
<p>
<a href="changes-1.2.html">1.2</a>|
<a href="changes-1.1.html">1.1</a>|
<a href="changes-1.0.html">1.0</a>|
<a href="changes-0.16.html">0.16.x</a>|
<a href="changes-0.15.html">0.15.x</a>|
<a href="changes-0.14.html">0.14.x</a>|
<a href="changes-0.13.html">0.13.x</a>|
<a href="changes-0.12.html">0.12.x</a>|
<a href="changes-0.11.html">0.11.x</a>|
<a href="changes-0.10.html">0.10.x</a>|
<a href="changes-0.9.html">0.9.x</a>|
<a href="changes-0.8.html">0.8.x</a>|
<a href="changes-0.7.html">0.7.x</a>|
<a href="changes-ancient.html">Ancient</a>|
<a href="changes.html">Overview</a>
</p>
<h2 id="r0.9.6">0.9.6</h2>
<p>Release Date: 2001-09-29</p>
<dl>
<dt>Bug fixes and work arounds</dt>
<dd>
<ul>
<li>
Added a workaround for misbehaving LDAP servers (e.g. Lotus Domino)
which return a single null-byte character in <var>namingContexts</var>
attribute of RootDSE.
</li>
<li>
Another workaround for some weird effects if <em>python-ldap</em>
is linked against OpenLDAP 2 libs.
</li>
<li>
Fixed race condition in <var>LDAPSession.getRootDSE()</var> which
ended with <var>namingContexts</var> attribute having the value
None instead of [] under some strange error conditions.
</li>
</ul>
</dd>
</dl>
<h2 id="r0.9.5">0.9.5</h2>
<p>Release Date: 2001-09-23</p>
<dl>
<dt>Installation changes</dt>
<dd>
<ul>
<li>
Use separately distributed module
<a href="http://www.stroeder.com/pylib/PyWebLib/">
PyWebLib</a> for web session handling, form processing,
some HTTP header handling and SSL-related environment.
Modules <var>cgiforms</var>, <var>cgisession</var>, <var>cgihelper</var>
and <var>httphelper</var> are no longer shipped with web2ldap package.
</li>
<li>
Use module <var>ldapthreadlock</var> contributed to
<em>python-ldap</em> instead shipping own module <var>ldapthreading</var>.
</li>
<li>
Module <var>ldif</var> is no longer shipped since
it was contributed to <em>python-ldap</em> ages ago.
</li>
<li>
Module <var>DNS</var> is no longer distributed within the package.
Install <a href="http://pydns.sourceforge.net/">PyDNS</a>
instead.
</li>
<li>
Format of host-specific parameter
<a href="web2ldapcnf_hosts.html#addform_oc_list">addform_oc_list</a>
has changed. The tuple now contains the attribute type for forming
the RDN. This is pretty convenient. Use it!
</li>
<li>
On Posix platforms a local configuration module (etc/web2ldap
in start directory) now has precedence over a system-wide
configuration module (/etc/web2ldap).
Also getting the configuration module from Windows-specific
system directories is not possible anymore.
</li>
</ul>
</dd>
<dt>New features</dt>
<dd>
<ul>
<li>
Implemented very basic group managment. Make sure to check out
button [Groups] in context menu of single entry display (read).
</li>
<li>
Added handling of binary attribute values stored as hex-byte
encoding with prefix {ASN}.
</li>
</ul>
</dd>
<dt>User Interface</dt>
<dd>
<ul>
<li>
The bind DN (var <var>who</var>) is reused as default in login form if
<var>ldap.INVALID_CREDENTIALS</var> was raised after login try.
</li>
<li>
New quick button in <var>ConnInfo</var> for accessing
<var>subschemaSubentry</var>.
</li>
<li>
The old password is not requested anymore in the password
input form. Instead a relogin window is provided if
<var>ldap.INSUFFICIENT_ACCESS</var> is raised.
</li>
<li>
If the user has to do a new login after changing his/her
password there is no menu shown anymore.
</li>
<li>
Added search option "exists" to
advanced search form. The search string is ignored
if this option is chosen.
</li>
</ul>
</dd>
<dt>Code cleaning and performance tuning</dt>
<dd>
<ul>
<li>
Removed unused module <var>msshelve</var>.
</li>
<li>
Removed some unnecessary module imports.
</li>
<li>
Separate module <var>ldaputil.passwd</var> is used to set the
userPassword attribute instead of doing all the stuff in
application module <var>w2lpasswd</var>.
</li>
<li>
Moved application modules <var>pylib/w2l*.py</var> to separate module
package directory <var>pylib/w2lapp/</var>.
</li>
<li>
Code-cleaning concerning <var>w2lapp.core.CleanUpThread</var>
</li>
<li>
Some code-cleaning with catching referral exceptions
when <em>python-ldap</em> is built with OpenLDAP 2.0.x.
</li>
<li>
Implemented new class <var>ldaputil.ldapurlLDAPUrl</var> which does
the whole LDAP URL handling.
</li>
<li>
Lots of small code clean-ups, e.g. substituted lots of
lambda, map(), filter function calls with list comprehensions.
</li>
<li>
The dumpasn1 config file is only parsed once at startup
and the parsed content is held persistent => tremendous
speed-up when displaying certificates and CRLs.
</li>
<li>
Moved creation of modlist's for modify() calls from ldapbase
into new sub-module ldaputil.modlist. Functions were renamed.
</li>
</ul>
</dd>
<dt>Bug fixes and work arounds</dt>
<dd>
<ul>
<li>
Hopefully fixed bugs with mixed-case handling of LDIF and
other input data by rewriting <var>ldapbase.modify_modifylist()</var>.
</li>
<li>
Proper handling of lower-cased attribute type names of special
root DSE attributes.
</li>
<li>
Catch all exceptions which might occur when calling
<var>DNS.ParseResolvConf()</var> in module <var>ldapdns</var>
and set ldapdns.dns_module_avail=0 in this case which switches
off looking up SRV RRs in DNS.
This is a rather crude approach which should be refined in
the near future.
</li>
<li>
A bunch of small fixes and clean-ups for nasty things
detected by
<a href="http://pychecker.sourceforge.net">
PyChecker</a>.
</li>
<li>
<var>utctime.strftimeiso8601()</var> does not rely on
<var>time.strftime()</var> to display timestamps anymore.
This makes displaying of all year values possible
(not only 0..99,1900.. like enforced by <var>time.strftime()</var>).
</li>
<li>
When retrieving the root DSE "+" (ASCII 43) is used as
requested attribute type for OpenLDAP 2.0.x as described in
<a href="http://www.ietf.org/internet-drafts/draft-zeilenga-ldap-opattrs-01.txt">
draft-zeilenga-ldap-opattrs-01.txt</a> if the objectClass attribute
of root DSE contains "OpenLDAProotDSE".
</li>
<li>
Fixed wrong definition of Mozilla-specific MIME type
for attribute <var>certificateRevocationList</var>.
</li>
</ul>
</dd>
</dl>
<h2 id="r0.9.4">0.9.4</h2>
<p>Release Date: 2001-06-23</p>
<ul>
<li>
Fixed displaying of <var>iPAddress</var> attribute in
certificates.
</li>
<li>
Abandoned global configuration parameter
<var>web2ldapcnf.misc.script_method</var>.
</li>
<li>
Slightly improved excpetion handling especially
of logging/ignoring user-aborted connections, etc.
</li>
<li>
Determining appropriate charset used with browser was improved:
mainly proper parsing of capability values.
</li>
<li>
A lookup of SRV RRs is automatically done if a LDAP URL
does not contain a host name but a "dc-style" DN
(a DN formed by <var>domainComponent</var> attributes).
</li>
<li>
New configuration sub-module <a href="web2ldapcnf_fastcgi.html">fastcgi</a>.
</li>
<li>
Some really significant performance optimizations in
<var>ldapthreading</var> module. Former approach in method
<var>LDAPObject.result()</var> was brain-dead and slow.
</li>
<li>
Web session ID is now passed around in PATH_INFO instead as
a hidden form field. This means less HTML bloat and it decoupled
session retrieving from form processing.
</li>
<li>
If ldap.NAMING_VIOLATION occurs during <var>add</var>
the user can reedit his input.
</li>
<li>
Fixed smart login search with user names containing
NON-ASCII chars. (sigh!)
</li>
<li>
Fixed wrong passing of parameters when calling
function <var>ldapbase.SmartLogin()</var>.
</li>
<li>
Use timeout search for smart login.
</li>
</ul>
<h2 id="r0.9.3">0.9.3</h2>
<p>Release Date: 2001-06-08</p>
<ul>
<li>
Started writing a <a href="faq.html">FAQ document</a>.
</li>
<li>
Cleaned up determining the default RDN for adding new entry.
</li>
<li>
If an exception instance of type <var>ldap.PARTIAL_RESULTS</var>
contains more than one referral LDAP URL only the first
one is extracted and used. This is a workaround for the
problem that multiple referral URLs were not parsed properly.
</li>
<li>
New method <var>LDAPSession.isLeafEntry()</var> is used to prevent
user from submitting <var>modrdn</var> request on non-leaf entry.
</li>
<li>
If a single binary attribute is requested by command <var>read</var>
an error message is generated if the entry does not contain this
attribute (probably affects only cases where the user manually
edits the URL).
</li>
<li>
Some modifications to nicely display attributes found in
Active Directory (e.g. <var>objectGUID</var>, <var>whenChanged</var>).
</li>
<li>
Incompatible change to configuration dictionary
<var>web2ldapcnf.misc.ldap_browsermimetypes</var> to make
it more flexible. The format is now:
<pre>
ldap_browsermimetypes = {
('browsername','browserversion'):{
'attrtype':'mime_type'
},
'browsername':{
'attrtype':'mime_type'
},
}
</pre>
</li>
<li>
Default MIME-types of certificates and CRLs
were changed to <var>application/pkix-cert</var> and
<var>application/pkix-crl</var> to be compliant to
<a href="http://tools.ietf.org/html/rfc2585">RFC 2585</a>.
</li>
<li>
Extra try-except block in <var>w2lhandler.py</var> sends all unhandled
exceptions (including exceptions raised in except statements of inner
try-except block) to logging function <var>w2lcore.log_exception()</var>.
</li>
<li>
Work around buggy browsers (e.g. StarOffice) which does not honour the
<var>accept-charset</var> attribute of <form> tag and try
to decode input as ISO-8859-1 if e.g. UTF-8 fails.
</li>
</ul>
<h2 id="r0.9.2">0.9.2</h2>
<p>Release Date: 2001-05-19</p>
<ul>
<li>
<strong>
Security fix:<br>
</strong>
When calling <var>ldapsession.LDAPSession.bind()</var>
the LDAPSession instance (associated with the web session)
flushes all cached data, forgets all old RootDSE
attributes and calls <var>ldapsession.LDAPSession.getRootDSE()</var>
again.
</li>
<li>
<strong>
Security fix:<br>
</strong>
Fixed determining SSL security level and displaying
certificates from SSL-related environment vars
in <var>conninfo</var>. (works only through FastCGI)
</li>
<li>
<strong>
Security feature:<br>
</strong>
Reimplemented rudimental SSL-based authorization scheme
for gateway use. (works only through FastCGI)
</li>
<li>
Fixed handling of search scope select field when a search
form is displayed after the user entered an invalid search filter.
</li>
<li>
Send HTTP error 405 in <var>msHTTPHandler</var> if running stand-alone
and web application is accessed with HTTP-method HEAD.
</li>
<li>
Adjusted some more HTTP error responses in <var>msHTTPHandler</var>
for running stand-alone to be hopefully more compliant to
<a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a>.
</li>
<li>
If the user enters an incomplete RDN for a new entry containing
only the attribute type (e.g. 'cn=') and the corresponding
attribute value is present in the entry the new RDN is
automatically formed.
</li>
<li>
Removed input form for command <var>locate</var> from entry page
because too many people did not know what it means.
Instead directly invoke web2ldap with URL
<code>http://[host:port]/web2ldap/locate</code>
to get the input form.
</li>
</ul>
<h2 id="r0.9.1">0.9.1</h2>
<p>Release Date: 2001-05-15</p>
<ul>
<li>
Fixed a compability issue in method
<var>ldapthreading.LDAPObject.result()</var> with versions of
python-ldap based on sources prior 2000-10-19. (see the
<a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/python-ldap/python-ldap/Modules/LDAPObject.c.diff?r1=1.6%26r2=1.7">
incompatible change made to python-ldap</a>)
</li>
<li>
Catch an AttributeError exception when using python-ldap built
with LDAP libs without caching option.
</li>
<li>
Running multi-threaded is also the default on non-Posix
platforms (e.g. Win32) now.
</li>
</ul>
<h2 id="r0.9.0">0.9.0</h2>
<p>Release Date: 2001-05-10</p>
<ul>
<li>
<strong>
Most important change:
</strong>
<br>
Dropped support for running as stateless CGI-BIN or
stateless mod_python handler. Instead the possible modes are
running as a multi-threaded stand-alone server or as a
multi-threaded FastCGI server.<br>
The main benefit is that LDAPObject instances are kept persistent
in memory => there is no need rebind for each hit anymore. This
greatly improves performance and reduces security risks since
the credentials do not have to be stored at all. Other benefits
are faster session database clean-ups and avoiding problems with
file locking, file permissions etc.
</li>
<li>
Web session managment. Each LDAP connection object is tied
to a session ID stored in a hidden input field.
</li>
<li>
Method HTTP-POST is used whereever the state of the LDAP repository
is changed or a login is done (to be compliant with section 9.1 of
<a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a>).
</li>
<li>
Slightly improved debug log by suppressing traceback
if IOError.errno==32 (user aborted connection) and printing
date/time and client IP address.
</li>
<li>
<strong>
Important security fix: Internal URL redirector.
</strong>
<br>
URLs are not displayed directly anymore. The URL points
to the new <var>urlredirect</var> command which creates
a HTML page with <meta http-equiv="refresh" content="0;..>".
This avoids that the browser sends the currently viewed URL as
Referer-URL which could reveal session ID and credentials
to an attacker.
</li>
<li>
If ldap.SIZELIMIT_EXCEEDED exception is raised during
a search the and the output format is <var>table</var> the
partially received search results are displayed.
</li>
<li>
Default configuration module in distribution is now
platform-independent and trys to set all path names relative
to web2ldap directory. This makes quick-install for stand-alone mode
easy on most platforms. Just extract archive and start the
sbin/web2ldap.py script.
</li>
<li>
Type of audio and image attributes is automatically determined
with sndhdr and imghdr modules in Python's standard lib.
</li>
<li>
Hopefully fixed template files for vCard. At least works with
Netscape now (problem with empty attributes).
</li>
<li>
Single entries are now retrieved with all binary attributes
and placed in a short-time cache together with other LDAP
session data. This makes it possible to correctly access
all multi-valued binary attributes with separate buttons
or display multi-valued image attributes in-line.
</li>
<li>
Wrapper script for running as
<a href="http://www.fastcgi.com">FastCGI server</a>.
</li>
<li>
Access log for stand-alone mode in combined log format (with Referer
and User-Agent header).
</li>
<li>
Wrapper class <var>ldapthreading.LDAPObject</var>
around <var>ldap.LDAPObject</var> (mainly for thread-locking)
which transforms all synchronous calls into asynchronous python-ldap
calls.
</li>
<li>
Log unhandled exceptions in error log file with a lot of
information about the aborted connection.
</li>
<li>
Make use of LDAP cache of LDAP libs. Two new host-/backend-specific
parameters <var>cache_timeout</var> and <var>cache_maxmem</var> in
configuration module web2ldapcnf.hosts.
</li>
<li>
User interface:
<ul>
<li>
Inline displaying of images (attribute jpegPhoto etc.)
when displaying an entry (Read).
</li>
<li>
<embed type=".." src=".."> for
"displaying" audio attribute.
</li>
<li>
Nicer displaying of operational attributes when displaying a
single entry by using a (language variant) HTML template file.
</li>
<li>
Slighly improved the HTML generation, e.g. more consequent use
of <fieldset> sections, lower-cased HTML tags and
attributes etc.
</li>
<li>
If ldap.OBJECT_CLASS_VIOLATION, ldap.OBJECT_CLASS_VIOLATION or
problems with RDN occurs during add (or modify) it
is now possible for the user to edit his input again.
</li>
<li>
If ldap.FILTER_ERROR exception is raised during a search the
user can edit the search filter and re-submit it.
</li>
<li>
Currently viewed DN is not changed if a new entry was added.
This hopefully makes it easier to repeatedly add entries below
the same node.
</li>
<li>
A <var>[Display All]</var> button for immediate switching to unpaged
displaying of search results.
</li>
<li>
OIDs in RootDSE attributes are displayed with name and description.
Credits go to Norbert Klasen for contributing a comprehensive list.
</li>
<li>
More information in connection info (ConnInfo).
</li>
<li>
Buttons for quickly choosing default object classes
of new entries. This list is configurable per host/backend.
</li>
<li>
Quick buttons for accessing RootDSE, CN=MONITOR and CN=CONFIG
in context menu of connection info (ConnInfo).
</li>
<li>
New command <var>monitor</var> which displays general
gateway statistics.
</li>
<li>
Improved documentation of configuration module package
<a href="web2ldapcnf.html">web2ldapcnf</a>.
</li>
</ul>
</li>
<li>
Bug fixes:
<ul>
<li>
Configuration did not work properly since 0.8.0 because I dropped
ldap_basedn in hidden fields. Fixed.
</li>
<li>
Fixed parsing of LDAP URLs. Bug was related to usage of
new string methods.
</li>
<li>
Fixed the screwed up passwd changing.
</li>
<li>
Check if RDN in input is empty or RDN has wrong format
before adding entry.
</li>
<li>
Fixed Unicode handling in ldapbase.SearchTree() (used for
recursive deleting of entries).
</li>
<li>
Fixed displaying of missing parent entry DNs when adding an entry.
</li>
<li>
Many small HTML generation fixes.
</li>
<li>
Many, many small fixes...and probably new bugs... ;-)
</li>
<li>
Fixed handling of LDIF input data (was case-sensitive regarding
the attribute types).
</li>
</ul>
</li>
<li>
Code cleaning:
<ul>
<li>
Dropped support for checking gateway use by looking
at DN of the client certificates. It seems that nobody
is using it and it was getting ugly (may appear again in
later version).
</li>
<li>
A lot of connection stuff is done within ldapsession.LDAPSession
objects now including storing and restoring sessions and
getting RootDSE attributes like namingContexts etc.
</li>
<li>
LDAP sessions are wrapped in LDAPSession objects for
pickling and to wrap specific details if a patched python-ldap
built against OpenLDAP 2.0.x libs is in use.
</li>
<li>
Rewrote parts of module w2lhandler.
</li>
<li>
Call login form directly if password of currently
used bind DN was changed.
</li>
<li>
The code for creating the input forms for adding and
modifying entries was a complete mess. It's still not pretty...
</li>
<li>
The code for creating the search forms was also a complete mess.
</li>
<li>
w2lgui.DisplayDN now took over all weird things with
displaying DNs.
</li>
<li>
Moved class <var>HTTPHandler</var> from module <var>msHTTPServer</var>
into separate module <var>msHTTPHandler</var>.
</li>
<li>
Creating hidden fields along with buttons is simplified by
new parameter hidden_fields (list of tuples) in function
<var>w2lgui.CommandButton()</var>.
</li>
<li>
Almost no direct calls of LDAPObject methods anymore. All necessary
methods are wrapped in sort of higher level wrapper
methods of LDAPSession class. This makes caching and locking
feasible.
</li>
<li>
Handle more input field stuff with the fine <var>cgiforms</var>
module and derived classes in module <var>w2lgui</var>.
</li>
<li>
Cleaned up function <var>httphelper.SendHeader()</var>.
</li>
</ul>
</li>
</ul>
<footer>
<div id="footer">
sponsored by <a href="http://www.stroeder.com">
stroeder.com - Information Technology, IT-Security, Identity Management,
System Integration</a>
</div>
</footer>
</body>
</html>
|