Table of Contents
- Introduction
- Installation
- Handling Challenger
- Virtual Servers
- Configuration Examples
- Modules
- Filesystems

  | · Introduction · Filesystem Modules · Directory Listing Modules · Content Types · File Extension Modules

- RXML Tags
- Graphics
- Proxy
- Databases
- Miscellaneous Modules
- Security Considerations
- Scripting
- Frontpage
- Upgrading
- Third Party Extensions
- Portability
- Reporting Bugs
- Appendix

Filesystem Modules
Filesystem modules are mounted on Challenger's virtual filesystem and handle requests for files and directories. This is usually done through fetching things from a directory on the host computer. But there are modules that fetch files from a CVS repository or another Challenger server.

Filesystem
The Filesystem module is the most basic filesystem module and it simply fetches files from a directory on the host computer.

`Handle DELETE`
  If set, the DELETE method can be used to delete files in the file system. This is most useful if the FTP protocol is used.

`Handle PUT`
  If set, PUT can be used to upload files to the file system.

`Mount Point`
  Where the module will be mounted on the virtual filesystem.

`Require authentication for modification`
  Only allows authenticated users to use methods other than GET and POST. Turning this option off makes it possible for anyone accessing the web site to edit pages.

`Search Path`
  From which directory on the host computer the files will be fetched.

User Filesystem
Makes it possible to access files in the user's home directories. All home directories containing a directory whose name is specified in the Public directory variable will be accessible.

The User Filesystem module needs an authentication module that can provide it with information about the users, such as where their home directory is located. The User database and security is such an authentication module.

`Banish list`
  This is a comma-separated list of users, which will be considered invalid. This can be used to selectively shut off access for certain users.

`Look in users homedir`
  If set, the user's files are looked for in the home directory of the user, according to the Public directory variable. Otherwise, the Search path is used to find a directory with the same name as the user.

`Only owned files`
  If set, only those files that a user really owns can be sent. This makes it impossible for a user to publish sensitive information by making a symlink from her home page directory.

`Password users only`
  Only users possessing a valid password on the system are allowed to have public directories.

`Public directory`
  This is the location of the home page directory. Assume that it is set to `.public`, that the module has the mount point `/users/` and that Per's home directory is `/home/per`. Now, when the file `/users/per/foo/` is accessed the module will try to find the file or directory `/home/per/.public/foo/`.

`Virtual User Hosting`
  If set, virtual user hosting is enabled. This means that the module will look at the host header to determine which user's directory to access. If this is set, you access the user's directory with http://user.domain.com/ instead of http://user.domain.com/user/. To set this up you need to add CNAME entries to DNS for all your users pointing to the IP addresses of this virtual server.

CVS File system
This module can access files under CVS, Concurrent Versions System, control. It has options to retrieve differences between two versions, older versions and many other CVS tricks. You need to have CVS installed to use this module.

`CVS (sub)module`
  There are two ways to specify which directory tree in the repository is to be mounted:

  module/subdirectory
  Where module is a module defined in the CVS repository, and subdirectory is a (possibly empty) path to a subdirectory of the module.

  /path
  Where path is the full path to a directory, starting at the CVS root. I.e., the module database in the CVS repository is not used.

`CVS repository`
  Where CVS stores its files.

`Mount point`
  This is where the module will be inserted in the name space of your server.

`Path for locating binaries`
  Colon separated list of directories to search for the `cvs` and `rcs` binaries.

Restricted File system
A restricted file system that makes it possible to mount each user's home directory on the same URL. The file system will prompt the user for her login name and password, and then only show her files. The most common application for this is for uploading content with FTP.

`Hide path to the home-directory`
  Hides the path to the home directory if enabled.

  For example, if the user foo has the home directory /home/foo and this is enabled, he will see his files in /.

  If this is not enabled, he would see them in /home/foo.

Secure File System
The secure file system module works much like the ordinary file system module, but with regular expression based access control. It is also possible to do the authentication via a form.

`Security patterns`
  This is a list with entries on the form `filepattern: security level=pattern`. Each entry must be in one of the forms listed below.

  >     filepattern: allow ip=pattern
  >     filepattern: deny ip=pattern
  >     filepattern: allow user=pattern

  In patterns, `*` matches one or more characters and `?` matches one single character. Please note that the expressions are tested in order, so if you have `*: allow host = *` as the first line, it will not matter whatever you add further down. Everything will still be allowed.

`Use FORM authentication`
  If set, instead of returning a HTTP authentication needed header, it produces a page containing a login form.

Mirror Filesystem
A mirror file system mirrors the virtual file tree of another Challenger server. The file system connects to a Mirror Server using Roxen RPC. The connection is done in clear text, it is currently not possible to configure it to use encryption.

The search path of the Mirror Filesystem is used as a cache. The directory must only be used for this cache and should not be shared between multiple mirror file systems.

Do not let this module connect to a mirror server in the same Challenger server. This will cause your server to hang up with no way to recover, except by manually editing the configuration files and restarting the server forcefully.

`Mirror Server`
  The location to mirror from. This is not the HTTP location, but the one entered in the mirror server on the remote site.

`Mirror Refresh`
  Check the pages this often, in hours. Please note that the pages are only reloaded from the source server if they have actually changed. At most one file per second will be checked. The update may therefore take a while.

`Search path`
  The cache directory this mirror filesystem should use.

Mirror Server
This module makes it possible to mirror the site, or part of the site, to other Challenger servers. The mirror server will access pages as a normal web user, so it is only possible to mirror the parts of the server that is available to the web. No pages that are password protected will be mirrored.

Variables:

`Base URL`
  The start location of the part of the web site that should be mirrored. By default `/` which will mirror the whole site.

`Mirror Server port`
  The port that the mirror server should bind to. Specified as `IP address:port number`. IP address can be any in which case it will bind to all IP addresses the computer handles.