# Copyright 2007-2010 Gentoo Foundation.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/desc/apache2_modules.desc,v 1.4 2010/12/02 06:43:07 robbat2 Exp $

# This file contains descriptions of APACHE2_MODULES USE_EXPAND flags.

# Keep it sorted.
actions - Provides for executing CGI scripts based on media type or request method
alias - Provides for mapping different parts of the host filesystem in the document tree and for URL redirection
asis - Sends files that contain their own HTTP headers
auth_basic - Basic authentication
auth_digest - User authentication using MD5 Digest Authentication
authn_alias - Provides the ability to create extended authentication providers based on actual providers
authn_anon - Allows "anonymous" user access to authenticated areas
authn_dbd - User authentication using an SQL database
authn_dbm - User authentication using DBM files
authn_default - Authentication fallback module
authn_file - User authentication using text files
authz_dbm - Group authorization using DBM files
authz_default - Authorization fallback module
authz_groupfile - Group authorization using plaintext files
authz_host - Group authorizations based on host (name or IP address)
authz_owner - Authorization based on file ownership
authz_user - User Authorization
autoindex - Generates directory indexes, automatically, similar to the Unix ls command
cache - Content cache keyed to URIs
cern_meta - CERN httpd metafile semantics
charset_lite - Specify character set translation or recoding
cgi - Enable CGI module (used by non-multithreaded MPMs, for eg. prefork)
cgid - Enable CGI module (used by multithreaded MPMs, for eg. worker)
dav - Distributed Authoring and Versioning (WebDAV) functionality
dav_fs - filesystem provider for mod_dav
dav_lock - generic locking module for mod_dav
dbd - Manages SQL database connections
deflate - Compress content before it is delivered to the client
dir - Provides for "trailing slash" redirects and serving directory index files
disk_cache - Content cache storage manager keyed to URIs
dumpio - Dumps all I/O to error log as desired
env - Modifies the environment which is passed to CGI scripts and SSI pages
expires - Generation of Expires and Cache-Control HTTP headers according to user-specified criteria
ext_filter - Pass the response body through an external program before delivery to the client
file_cache - Caches a static list of files in memory
filter - Context-sensitive smart filter configuration module
headers - Customization of HTTP request and response headers
ident - RFC 1413 ident lookups
imagemap - Server-side imagemap processing
include - Server-parsed html documents (Server Side Includes)
info - Provides a comprehensive overview of the server configuration
log_config - Logging of the requests made to the server
log_forensic - Forensic Logging of the requests made to the server
logio - Logging of input and output bytes per request
mem_cache - Content cache keyed to URIs
mime - Associates the requested filename's extensions with the file's behavior (handlers and filters) and content (mime-type, language, character set and encoding)
mime_magic - Determines the MIME type of a file by looking at a few bytes of its contents
negotiation - Provides for content negotiation
proxy - HTTP/1.1 proxy/gateway server
proxy_ajp - AJP support module for mod_proxy
proxy_balancer - mod_proxy extension for load balancing
proxy_connect - mod_proxy extension for CONNECT request handling
proxy_ftp - FTP support module for mod_proxy
proxy_http - HTTP support module for mod_proxy
proxy_scgi - SCGI gateway module for mod_proxy
rewrite - Provides a rule-based rewriting engine to rewrite requested URLs on the fly
reqtimeout - Set timeout and minimum data rate for receiving requests
setenvif - Allows the setting of environment variables based on characteristics of the request
speling - Attempts to correct mistaken URLs that users might have entered by ignoring capitalization and by allowing up to one misspelling
status - Provides information on server activity and performance
substitute - Perform search and replace operations on response bodies
unique_id - Provides an environment variable with a unique identifier for each request
userdir - User-specific directories
usertrack - Clickstream logging of user activity on a site
version - Version dependent configuration
vhost_alias - Provides for dynamically configured mass virtual hosting
