NetForge History
This is the history of all changes that were made to NetForge since the
first public release (0.14). The versions are listed latest to earliest.
The changes are marked as either BUG (bug fixed), SEC (security bug fixed),
FEA (new feature) or MIS (miscellaneous).
[FEA] Date headers are now parsed with com.novocode.tk.net.HTTPDateFormat
instead of java.util.Date's parse() method (which is buggy,
deprecated and much slower).
*********************************************** RELEASE 1.0.3 (Jun/22/1999)
[FEA] Added configuration actions to ServletFrontend for manually
removing and reloading Servlets.
[FEA] Added class MetaFilesysBackend.
[BUG] HttpServletRequest.getPathInfo() returned an empty string for
the virtual path "/".
[BUG] ServletFrontend: Session cookies are now refreshed only when
required (i.e. when a cookie has a maximum age, is new or
needs to be deleted).
[MIS] NetForge is now using the open source version of the Novocode
Toolkit.
************************************************* RELEASE 1.0 (Feb/18/1999)
[BUG] ServletFrontend: The Servlet loader couldn't load referenced
classes in packages because the package separator '.' was not
translated to the NFile path separator '/'.
[BUG] HTTP core: Error response messages now include a stack trace
for all Throwables instead of only Exceptions.
[BUG] HTTP core: Writer auto-flushing did not work in all cases.
[BUG] HTTP core: A bug caused Writer buffering to fail with an
ArrayIndexOutOfBoundsException under certain circumstances.
[MIS] The bin/netforge script now adds the "classes" directory to
the class path before the NetForge JARs to allow placing
NetForge patches into the "classes" directory.
[FEA] Added the bin/applypatch script to simplify the installation
of patches.
[MIS] Wrote the last missing chapter for the NetForge 1.0 manual
and included the latest version of "Servlet Essentials".
************************************************ RELEASE 0.48 (Dec/24/1998)
[FEA] ServletFrontend: Servlets in named packages can now be
accessed directly by their fully qualified class name without
needing to define an alias.
[BUG] ServletFrontend: Under certain circumstances when writing to
a ServletOutputStream, the response header was sent after the
body.
[FEA] DirectFrontend: Added support for methods DELETE and MOVE.
[FEA] The startup options are now set via simple command line
arguments instead of system properties.
[BUG] CounterResponder was broken.
[BUG] ServletFrontend: PrintWriter character encoding support did not
work for most encodings.
[MIS] HTTP core: Moved Cookie handling from the Servlet interface
implementation to classes novocode.netforge.http.Request and
novocode.netforge.http.responder.Response.
[FEA] HTTP core: Added optional buffering with commit/rollback
operations for response bodies to the Response class.
[FEA] HTTP core: Added ResponseWriter for writing character data to
a response with automatic character encoding conversion.
[FEA] ServletFrontend: Responses can optionally be buffered at the char-
and byte-level to determine a suitable character encoding and
content length.
************************************************ RELEASE 0.46 (Nov/23/1998)
[FEA] ServletFrontend supports version 2.1 of the Servlet API.
Deprecated methods like ServletContext.getServlet() which
are not supposed to work in a 2.1 environment can be
reactivated with a configuration option for compatibility
with API versions 1.0 and 2.0.
[FEA] Added HTTP response filtering mechanisms.
[FEA] Added SSIFilter for Server-Side Includes.
[MIS] Added chapters "Filters" and "Backends" and more details on
ServletFrontend to the NetForge manual
[SEC] CgiFrontend: "Pass 'Authorization' headers to CGI programs"
caused all headers *except* the authorization headers to
be suppressed.
[BUG] Removed incorrect content length header from CounterResponder
image/gif responses.
[BUG] ServletFrontend: Servlet aliasing was broken.
[BUG] ServletFrontend: "Load all Servlets on init" was broken.
[MIS] Major rework and optimization of class
novocode.netforge.http.responder.Response and all dependent
classes.
************************************************ RELEASE 0.42 (Oct/24/1998)
[SEC] DirectResponder could be used to get access to parent
directories of the Backend + offset by manually requesting URIs
with ".." paths.
[BUG] Servlet response headers which were set with
ServletResponse.setHeader() were sent as "name: name" instead
of "name: value".
[BUG] Dates in headers and log files used localized month names from
the default locale instead of a proper English locale.
[FEA] The Servlet ClassLoader supports getResource() (for NFiles which
are local files) and getResourceAsStream().
[FEA] A Servlet(Context)'s directory is available as an NFile or
absolute path in the local filesystem (where available) through
the new ServletContext attributes
"novocode.netforge.http.servlet.dir.nfile" and
"novocode.netforge.http.servlet.dir.path".
[FEA] Added "Prefer requested host" option to HTTPServer.
[FEA] Servlet sessions are removed from the server when they time
out. The time-to-live for the client and the server side is
configurable.
************************************************ RELEASE 0.40 (Jun/28/1998)
[FEA] Introduced the Frontend/Backend concept. FilesysResponder is
replaced by DirectFrontend, CgiResponder by CgiFrontend and
ServletResponder by ServletFrontend. The Backends FilesysBackend
and JdbcBackend allow all Frontends to access the local
file system and JDBC databases.
[MIS] Separated Realms and Protection Spaces. Realms implement
HTTP authentication schemes; Protection Spaces decide in a
protocol-independent way if a request with a certain user
name, password and originating IP address is allowed.
[MIS] FilesysResponder: "Last modified" dates are now displayed in GMT.
[BUG] FilesysResponder: ReadMe files were not included properly in
automatically generated file lists.
[BUG] CgiResponder: The PATH_INFO environemt variable used the host
system's file separator character instead of '/'.
[BUG] MessageResponse: Arguments of GET requests were not linked to and
displayed in message responses.
[BUG] FilesysResponder: References in file lists were not encoded as
URLs.
************************************************ RELEASE 0.36 (May/11/1998)
[BUG] Servlets that implemented the SingleThreadModel interface could
still be called concurrently. Now all calls are blocked until the
Servlet is available for service again.
[BUG] Servlet reloading was broken.
************************************************* RELEASE 0.35 (May/6/1998)
[FEA] The servlet interface supports the full JSDK2.0 API,
including Reader/Writer abstraction, Cookie handling and
Session Tracking.
[FEA] Connection threads are now reused. This increases server
performance by about 10% and prevents memory leaks on JVMs which
do not garbage-collect terminated threads.
[FEA] Added new RedirectionResponder which works like ProxyResponder
but redirects the client to a new location instead of directly
performing a request.
[FEA] Removed all static dependencies. You can now run multiple
instances of NetForge in one JVM.
[BUG] FormUploadResponder: The upload form was not returned correctly.
[MIS] Changed package structure.
[MIS] Metaconf classes separated from NetForge source tree. A complete
Metaconf package, including the API documentation, can be
downloaded from http://pweb.uunet.de/novocode.ab/prod/mc/.
The new Metaconf system allows for remote-configuration of
NetForge.
[BUG] CgiResponder: The environment variable REMOTE_ADDR contained the
host name plus address instead of only the address.
[FEA] Added "Require" option to BasicRealm.
[FEA] The servlet sandbox has a new option to prevent servlets from
reading "Authorization" headers of HTTP requests, similar to
the "Pass 'Authorization' headers to CGI programs" option of
CgiResponder.
[MIS] Changed the Logfile date creation system to avoid deprecated
JDK1.0.2 java.util.Date methods.
************************************************* RELEASE 0.28 (Feb/2/1998)
[MIS] Added some user-level documentation.
[FEA] Configurable sandbox for untrusted servlets.
[FEA] Added NFTestServlet, a servlet counterpart to TestResponder.
[FEA] NetForge ships with Novocode Toolkit version 0.2 which includes
the class novocode.tk.util.Wrapper that allows you to set the
system properties required by NetForge with JVMs that do not
support the "-Dproperty=value" option.
[FEA] The thread priority adjustment of PortServer threads which was
previously hardcoded to +2 is now user-configurable.
[FEA] CgiResponder has a new option to prevent passing "Authorization"
headers to CGI programs for better security on operating systems
that allow users to read the environment of other users'
processes.
[BUG] Fixed a bug in the Metaconf HTML VarString peer class which
caused variable strings to be expanded in configuration forms.
[FEA] Implemented true list-style bitfields for the Metaconf AWT peer.
************************************************ RELEASE 0.27 (Dec/29/1997)
[BUG] The server aborted with a NullPointerException in
novocode.tk.io.LogFile#checkRaf if a log file couldn't be opened
for writing.
[MIS] Novocode Toolkit classes separated from NetForge source tree. A
complete toolkit package, including the API documentation, can be
downloaded from http://pweb.uunet.de/novocode.ab/prod/tk/.
************************************************ RELEASE 0.26 (Nov/24/1997)
[FEA] Multi-server support: NetForge can run any number of servers for
arbitrary protocols.
[FEA] The new EchoServer is an example for a simple NetForge server.
It reads lines of text from the client and echoes them back.
[FEA] Servers can be bound to local IP addresses to create IP-based
virtual servers.
[FEA] The new HostMultiplexResponder makes it possible to create
non-IP-based virtual servers.
[FEA] The new ProxyResponder is a simple non-caching HTTP proxy which
can forward requests to a parent proxy or connect directly to a
requested HTTP resource. A ProxyResponder can not only be mounted
as area "http:" or "ftp:" but also as a local area in order to
map resources from a different server into the local namespace.
[FEA] Improved ServletResponder: Servlet aliasing, init parameters and
multi-class servlets are now supported.
************************************************ RELEASE 0.24 (Oct/26/1997)
[FEA] Administration GUI.
[FEA] FilesysResponder supports file uploads via PUT.
[FEA] FilesysResponder can compress uncompressed outgoing data on the
fly with gzip.
[FEA] A new FormUploadResponder supports file upload via forms, as
specified in RFC 1867, with all responders that understand the
PUT method.
[FEA] The new CounterResponder implements a Web Counter which can
create textual and image (GIF) counters. Custom fonts (in any
image format that your JVM understands) can be used. Images can
be remapped to a user-specified coloring scheme.
[FEA] Proper servlet shutdown.
*************************************************** RELEASE 0.14 (Sep/1997)
[MIS] First public release.