OVERVIEW OF NEW FEATURES IN APACHE 1.3 New features with this release, as extensions of the Apache functionality For more information, see the documentation included with this release (htdocs/manual/) or http://www.apache.org/docs/ The Apache license has been modified slightly for this version; the change simply prohibits derived products from claiming themselves to be "Apache." In addition to a number of bug fixes and internal performance enhancements, Apache 1.3 has the following specific new user features: *) Support for Windows NT/95 Apache now supports the Windows NT and Windows 95 operating systems, as well as the Unix systems supported in previous releases. Although the Windows version of Apache may not be perform as well as on the Unix systems for which Apache was originally written, the ability to run on Windows gives Apache the ability to run on a large number of web servers it was not previously able to. *) Regular Expression support for Alias and Redirect New AliasMatch, ScriptAliasMatch, and RedirectMatch directives allow for the use of regular expression matching. Additionally, new , , and sections provide a new syntax for regular expression sectioning. *) New "Magic" MIME-typing module A new module, the optional mod_mime_magic, has been added. It uses "magic numbers" and other hints from a file's contents to figure out what the contents are. It then uses this information to set the file's media type, if it cannot be determined by the file's extension. *) Directory indexing modules split The mod_dir module has been split in two, with mod_dir handling directory index files, and mod_autoindex creating directory listings. *) Support for Directory Icon Sizing The mod_autoindex module provides listings of directory contents when appropriate. If the FancyIndexing option is enabled, each file in the list is preceded by an icon representing the content type. In earlier versions of Apache, the HTML IMG tags for these icons weren't sized, so the browser had to wait until the images were loaded before it could lay out the page. With 1.3, the IndexOptions directive has two new keywords which allow you to control whether pre-sized IMG tags are used. This can substantially speed up the display of large directory listings. *) AccessFileName Enhancement The directive can now take more than one filename. This lets sites serving pages from network file systems and more than one Apache web server, configure access based on the server through which shared pages are being served. *) HostNameLookups now defaults to "Off" The HostNameLookups directive now defaults to "Off". This means that, unless explicitly turned on, the server will not resolve IP addresses into names. This was done to spare the Internet from unnecessary DNS traffic. *) New child_init function for module API A new phase for Apache's API is called once per "heavy-weight process," before any requests are handled. This allows the module to set up anything that need to be done once per processes. For example, connections to databases. *) New child_exit function for module API A new phase for Apache's API is called prior to termination of a server child, e.g. when max_requests_per_child is reached. This allow for modules to tear down anything that need to be done once per processes. For example, connections to databases. *) Totally overhauled mod_rewrite: First the last officially available release of mod_rewrite (3.0.9) was integrated into the Apache source repository. Additionally to the fact that this fixed some bugs, mod_rewrite now is no longer developed and maintained _externally_ by the original author Ralf S. Engelschall. Instead he has officially joined the Apache Group and gifted the complete sources to it (removed the shared copyright), so further development takes place directly at the Apache Groups source repository. No more version synchronizations are needed in the future. Additionally the rewriting engine was both enhanced and cleaned up by introducing a generic way to interpolate backreferences. The noticeable effect is that one now can use backreferences at nearly any string construction point (RewriteRule subst string, RewriteCond test string, ENV flag key/value, etc.) to access the parts of RewriteRule and RewriteCond patterns via $N and %N. *) Simple transport and i/o hooks in place It is possible to re-define the standalone_main function (with -DSTANDALONE_MAIN) so modules may plugin support for transport protocols other than tcp, e.g. DCE RPC A new slot in the BUFF structure `t_handle' is provided to store the plugin's transport related structures. Support for sfio can be enabled with -DB_SFIO, which allows modules to re-define lowest-level reads and writes so i/o may travel through something other than a tcp socket. In addition, sfio support allows plugin modules to manipulate the output of all modules, e.g. parsing the output of CGI programs. *) New dbmmanage script A new Perl5 version of dbmmanage allows modification of various databases, Berkeley DB, ndbm and gdbm. Security has been tightened such that passwords will no longer be echoed to the terminal, the seed for srand is more random and `add' will not overwrite and existing user, use the new `update' command instead. New commands include the `check' command to check a users' password and the `import' command to convert existing password text-files or dbm files exported with `view'. *) New API function: is_initial_req() The function returns true only for the initial call during a given HTTP request. If the request is a sub-request or internal redirect, the function will return false. *) Apache now ported to a mainframe machine with EBCDIC charset This new port makes apache-1.3 compile and run on a Siemens Nixdorf mainframe running under the BS2000-OSD operating system in the POSIX subsystem. The server is capable of serving either "binary-ASCII" or EBCDIC coded HTML text documents. See the file README.EBCDIC in the src directory; it also explains which modules still need porting (most are ready). *) Apache Autoconf-style Interface (APACI) Until Apache 1.3 there was no real out-of-the-box batch-capable build and installation procedure for the complete Apache package. This is now provided by a top-level "configure" script and a corresponding top-level "Makefile.tmpl" file. The goal is to provide a GNU Autoconf-style frontend which is capable to both drive the old src/Configure stuff in batch and additionally installs the package with a GNU-conforming directory layout. Any options from the old configuration scheme are available plus a lot of new options for flexibly customizing Apache. *) Dynamic Shared Object (DSO) support The support for loading Apache modules under runtime from DSO files was greatly enhanced: First, mod_so was cleaned up and the src/Configure script was extended to setup the totally platform-dependend commands to build DSO files on all major Unix platforms which support the pragmatic dlopen() interface (Linux, FreeBSD, Solaris, SunOS, IRIX, OSF1, UnixWare). The two popular platforms HP/UX and AIX are not supported because they both use a very special proprietary interface. Second the modules mod_proxy and mod_mime were unbundled to be able to use them independend from each other. Finally the Makefile generation stuff in src/Configure was overhauled to support building shared objects as clean as building static objects. Additionally the new APACI (see below) provides a powerful mechanism for out-of-the-box enabling, building, installing and activating those DSO-based modules. *) APache eXtenSion (APXS) support tool Now that Apache provides full support for loading modules under runtime from dynamic shared object (DSO) files, a new support tool "apxs" was created which provides off-source building, installing and activating of those DSO-based modules. It completely hides the platform-dependend DSO-build commands from the user and provides an easy way to build modules outside the Apache source tree. To achieve this APACI installs the Apache C header files together with the "apxs" tool. *) THE BIG SYMBOL RENAMING To avoid symbol clashes with third-party code compiled into the server, the general prefix `ap_' was globally applied to the following classes of symbols in the Apache source tree: Apache provided general functions (e.g., ap_cpystrn), public API functions (e.g., palloc, bgets) and private functions which can't be made static (because of cross-object usage) but should be (e.g., new_connection). For backward source compatibility with Apache 1.2 a new header file named compat.h was created which provides defines for the old symbol names and should be used by third-party module authors.