The Apache/Perl Module List

Maintained by Doug MacEachern,
$Revision$ $Date$

Contents

Introduction
Playing Your Part
The Apache/Perl Modules
Where Are The Modules Kept?
Contacts
More Info

Introduction

The Apache/Perl module list is here for the same reason as the main Perl module list, to change duplication of effort into cooperation and help to save the world! Apache/Perl modules are somewhat different from the many others found on CPAN. Most Perl modules are "building blocks", developers use them to build applications or even more building blocks. It just so happens that Apache/Perl modules are encapsulted inside a namespace and .pm file. However, this does not make them all building blocks, many are just like apache modules written in C, you install, edit the server configuration files and you're done. Before you start a new module, consider this: Apache/Perl modules are useless outside of mod_perl and Apache. Do your best to design such that your Apache::* module will make good use of the building blocks found on CPAN, putting together new building blocks where appropriate and simply glue them together with the Apache API, keeping the Apache::* modules very small.

These modules will also serve as good examples, showing you where modules can step in during a stage of a request with Perl*Handler callbacks. You'll also see how and when to use the Apache API methods.

Playing Your Part

Apache and Perl are world-wide collaborative efforts, naturally, the Apache/Perl integration project is the same.
You've started on the right foot simply by reading this document, thanks!
Please be sure you've read the main Perl module list, all that is said there is relevant here!

If you have any additions or changes for the list, please send them to the Apache/Perl mailing list or to me.

If you wish to share you module(s) the Perl way, by putting them on CPAN, send a request to me or modules@perl.com to get set up with a PAUSE user id and directory.

HINT: For a nice set of template files try this:

% h2xs -AX -n Apache::YourPackageName

The Apache/Perl modules

Apache::

* PerlHandler's
Archive		i	List archive contents			PETERSON
ASP		bdpO	Implement Active Server Pages		CHAMAS
BBS		bdpO 	BBS like System for Apache		MKOSS
CallHandler	cdpf	Map filenames to subroutine calls	GKNOPS
Cachet		i	OutputChain with caching		MERLYN
Dir		i	OO (subclassable) mod_dir replacement 	DOUGM
Embperl		Rmcf	Embed Perl in HTML			GRICHTER
ePerl		Rdpr  	Fast emulated Embedded Perl (ePerl)	RSE            
FTP		i	Full-fledged FTP proxy			PMKANE
Gateway		bdpf	A multiplexing gateway			CCWF
GzipChain	bmpf	Compress files on the fly		ANDK
IDC_HTX		i						PTI
JavaScript	bdpf	Generate JavaScript code		ABH
Layer		bdpf	Layer content tree over one or more	SAM
ModuleDoc	bdpf	Self documentation for Apache C modules	DOUGM
OutputChain     bmpO	Chain output of stacked handlers	JANPAZ
PassFile	bdpf	Send file via OutputChain		ANDK
PerlRun		bmpf	Run unaltered CGI scripts		APML
PrettyText	bdpf	Re-format .txt files for client display	CHTHORMAN
RandomLocation	bdpf	Random image display 			MDARWIN
Registry	Rmpf	Run unaltered CGI scripts 		APML
RobotRules	bdpf	Enforce robot rules (robots.txt)	PARKER
Sandwich	bmpf	Layered document (sandwich) maker	VKHERA
VhostSandwich	bdpf	Virtual host layered document maker	MARKC
SSI		bmpO	Implement server-side includes in Perl	KWILLIAM
SSIChain	bmpO	SSI on other modules output		JANPAZ
Stage		bdpf	Manage a document staging directory	ANDK
TarGzip		c						ZENIN
TimedRedirect	bdpf	Redirect urls for a given time period	PETERM 
UploadSvr	bdpO	A lightweight publishing system		ANDK
WDB		bdpf	Database query/edit tool using DBI	JROWE
WebSQL		cdpO	Adaptation of Sybase's WebSQL		GUNTHER

* PerlHeaderParserHandler's
AgentDeny	bdpf	Deny abusive User-Agents		ROBH

* PerlAuthenHandler's
AuthAny		bdpf	Authenticate with any username/password	DOUGM
Authen		bmpf	Perl Apache authentication utilities	SKANE
AuthenCache	bmpf	Cache authentication credentials	JBODNAR
AuthCookie	bdpO	Authen + Authz via cookies		EBARTLEY
AuthenDBI	bmpO	Authenticate via Perl's DBI		MERGL
AuthExpire	i	Expire Basic auth credentials		DOUGM
AuthenGSS	cdpf    Generic Security Service (RFC 2078)	DOUGM
AuthenIMAP	bdpf	Authentication via an IMAP server	MICB
AuthLDAP	bdpf	LDAP authentication module		CDONLEY
AuthNIS		bdpf	NIS authentication and authorization	DOUGM
AuthenRaduis	bdpf	Authentication via a Radius server	DANIEL
AuthenSmb	bdpf	Authenticate against NT server		PARKER
AuthenURL	bdpf	Authenticate via another URL		JGROENVEL
BasicCookieAuth	cdpf	Accept cookie or basic auth creds	PMKANE
DBILogin	bdpf	Authenticate to backend database 	JGROENVEL
DCELogin	bdpf	Obtain a DCE login context		DOUGM
PHLogin		bdpf	Authenticate via a PH database		JGROENVEL

* PerlAuthzHandler's
AuthCookie	cdpf	Authen + Authz via cookies		EBARTLEY
AuthzAge	bmpf	Authorize based on age			APML
AuthzDCE	cdpf	DFS/DCE ACL based access control	DOUGM
AuthzDBI	bmpO	Group authorization via Perl's DBI	MERGL
AuthNIS		bdpf	NIS authentication and authorization	DOUGM
RoleAuthz	i	Role-based authorization		DOUGM

* PerlAccessHandler's
AccessLimitNum	bmpf	Limit user access by number of requests	APML
DayLimit	bmpf	Limit access based on day of week	APML
RobotLimit	bdpf	Limit access of robots			PARKER

* PerlTypeHandler's
AcceptLanguage	bdpf	Send file type based on language pref	ROBH
 
* PerlTransHandler's    (May also include a PerlHandler)
DynaRPC		i	Dynamically translate URIs into RPCs	DOUGM
Junction	i	Mount remote webserver namespace	DOUGM
LowerCaseGETs	bdpf	Lowercase URI's when needed		PLISTER
MsqlProxy	bmpf	Translate URI's into mSQL queries	APML
ProxyPass	bdpf	Perl implementation of ProxyPass	MJS
ProxyPassThru	bdpO	Skeleton for vanilla proxy		RMANGI
ProxyCache	i	Caching proxy				DOUGM
Throttle        bdpf    Speed-based content negotiation         DONS

* PerlFixupHandler's
HttpEquiv	bdpf	HTML HTTP-EQUIV tags to HTTP headers	ROBH
Timeit		bmpf	Benchmark PerlHandlers			APML
Usertrack	bdpf	Perl version of mod_usertrack		ABH

* PerlLogHandler's
DBILogConfig	bdpf	Custom format logging via DBI		JBODNAR
DBILogger	bdpf	Logging via DBI				ABH
DumpHeaders	bdpf	Watch HTTP transaction via headers	DOUGM
Traffic		bdpf	Logs bytes transferred, per-user basis 	MAURICE
WatchDog	c	Look for problematic URIs		DOUGM

* PerlChildInitHandler's
Resource	bmpf	Limit resources used by httpd children	APML

* Server Configuration
ConfigLDAP	i	Config via LDAP and <Perl>		MARKK
ConfigDBI	i	Config via DBI and <Perl>		MARKIM
ModuleConfig	bmcO	Interface to configuration API		APML
PerlSections	bmpO	Utilities for <Perl> sections		APML
httpd_conf	bmpO	Methods to configure and run an httpd	APML
src		ampO	Finding and reading bits of source	APML

* Database
DBI		bmpO	Persistent DBI connection mgmt.		MERGL
Sybase::DBlib   bmpO    Persistent DBlib connection mgmt.	BMILLET
Sybase::CTlib	bapO	Persistent CTlib connection mgmt.	MDOWNING
Mysql		bdpO	Persistent connection mgmt. for Mysql	NJENSEN

* Interfaces and integration with various Apache C modules
Constants	Rmcf	Constants defined in httpd.h		APML
ExtUtils	bmpO	Utils for Apache:C/Perl glue		APML
Include		Rmpf	mod_include + Apache::Registry handler	APML
Global		cmcO	Access to server global variables	APML
Log		bmcO	ap_log_error interface			APML
LogFile		cmcO	Interface to Apache's piped logs, etc.	DOUGM
Mime		bmcf	Interface to mod_mime functionality	MDORMAN
Module		bmcO	Interface to Apache C module structures	DOUGM
Options		Rmpf	Import Apache::Constants 'options'	APML
Scoreboard	cmcO	Interface to scoreboard API		DOUGM
Servlet		ampO	Interface to the Java Servlet engine	IKLUFT
Sfio		cmcO	Interface to r->connection->client->sf* DOUGM
Tie		bmcO	Tie interfaces to Apache structures 	APML
URI		bmfO	URI component parsing and unparsing	APML
Util		bmcf	Interface to Apache's util*.c functions	APML

* Development and Debug tools
Debug		Rmpf	mod_perl debugging utilities		APML
DProf		bmcf	Hook Devel::DProf into mod_perl		DOUGM
FakeRequest	ampO	Implement Apache methods off-line	APML
Peek		amcf	Devel::Peek for mod_perl		APML
SawAmpersand	bmpf	Make sure noone is using $&, $' or $`	APML
SizeLimit	bmpf	Graceful exit for large children	DOUGB
SmallProf	bmpf	Hook Devel::SmallProf into mod_perl	DOUGM
StatINC		bmpf	Reload require'd files when updated	APML
Status		Rmpf	Embedded interpreter runtime status	APML
Symbol		bmcO	Things for symbol things		APML
test		Rmpf	Handy routines for 'make test' scripts	APML

* Misc
Byterun		i	Run Perl bytecode modules		DOUGM
Icon		idcO	Access to AddIcon* configuration	DOUGM
Mmap		bdcf	Share data via Mmap module		FLETCH
Persistent	bdpO	Store data via IPC::, DBI, or disk	DOUGM
PUT		cdpf	HTTP PUT method handler module		SORTIZ
RegistryLoader	bmpf	Apache::Registry startup script loader 	APML
Request		bmpO    CGI.pm functionality using API methods	LDS
Safe		ampO	Adaptation of "safecgiperl"		APML
Session		bmpO	Maintain client <-> httpd session/state	JBAKER
SIG		amoO	Signal handlers for mod_perl		APML
State		i	Powerful state engine			RSE
TempFile	bdpf	Manage temporary files			TOMHUGHES

Where Are The Modules Kept?

Modules listed with the APML as is contact are part of the mod_perl distribution package. Other modules can be found on CPAN the modules/by-module/Apache/ directory. If they have not made it to CPAN yet, they might be found in the mod_perl contrib directory, which is also tar'd and distributed via CPAN in the modules/by-module/Apache/ directory. Otherwise, feel free to ask the contact author or the list how you can go about getting your hands on a copy.

Contacts

ABH  	  Ask Bjørn Hansen <ask@netcetera.dk>
ANDK	  Andreas König <a.koenig@franz.ww.TU-Berlin.DE>
APML	  The Apache/Perl Mailing List <modperl@apache.org>
BMILLETT  Brian Millett <bpm@techapp.com>
CCWF	  Charles C. Fu &lt;ccwf@bacchus.com&gt;
CDONLEY   Clayton Donley <donley@wwa.com>
CHAMAS	  Joshua Chamas <chamas@alumni.stanford.org>
CHTHORMAN Chris Thorman <chris@thorman.com>
DANIEL	  Daniel <daniel-authenradius@electricrain.com>
DONS	  Don Schwarz <don@dons.xnet.com>
DOUGB     Doug Bagley <doug@dejanews.com>
DOUGM	  Doug MacEachern <dougm@pobox.com>
EBARTLEY  Eric Bartley  <bartley@osd.cc.purdue.edu>
FLETCH    Mike Fletcher <lemur1@mindspring.com>
GKNOPS	  Gerd Knops <gerti@BITart.com>
GRICHTER  Gerald Richter <richter@ecos.de>
GUNTHER   Gunther Birznieks <gunther@nhgri.nih.gov>
HMUELLER  Hanno Mueller <hmueller@mail.kabel.de>
IKLUFT	  Ian Kluft <ikluft@cisco.com>
JANPAZ	  Honza Pazdziora <adelton@informatics.muni.cz>
JBAKER    Jeffrey Baker <jeff@godzilla.tamu.edu>
JBODNAR	  Jason Bodnar <jcbodnar@mail.utexas.edu>
JGROV	  John D Groenveld <jdg117@elvis.arl.psu.edu>
JEFFH	  Jeffrey Hulten <jeffh@premier1.net>
JROWE	  Jeff Rowe <beowulf@lava.net>
KWILLIAM  Ken Williams  <ken@forum.swarthmore.edu>
LDS	  Lincoln D. Stein <lstein@genome.wi.mit.edu>
MARKC	  Mark Constable <markc@goldcoast.org>
MARKIM	  Mark A. Imbriaco <mark@itribe.net>
MARKK	  Mark Kennedy <mtk@ny.ubs.com>
MAURICE	  Maurice Aubrey <maurice@hevanet.com>
MDARWIN	  Matthew Darwin <matthew@davin.ottawa.on.ca>
MDORMAN	  Michael Alan Dorman  <mdorman@calder.med.miami.edu>
MDOWNING  Mark Downing <mdowning@rdatasys.com>
MERGL	  Edmund Mergl <E.Mergl@bawue.de>
MERLYN	  Randal L. Schwartz <merlyn@stonehenge.com>
MJS       Michael Smith <mjs@iii.co.uk>
MKOSS	  Max Kossatzmax <kossatz@thing.at>
MICB  	  Malcolm Beattie <mbeattie@sable.ox.ac.uk>
NJENSEN	  Neil Jensen <njensen@habaneros.com>
PARKER	  Michael Parker <parker@austx.tandem.com>
PETERM	  Peter Marshall <peterm@pageactive.com>
PETERSON  Jonathan Peterson <jon@amxstudios.com>
PLISTER   Peter Lister <p.lister@cranfield.ac.uk>
PMKANE	  Patrick Michael Kane <modus@pr.es.to>
PTI	  Peter Tillemans <pti@pandora.be>
RMANGI    Rick Mangi <rmangi@tgix.com>
ROBH	  Rob Hartill <robh@imdb.com>
RSE       Ralf S. Engelschall <rse@engelschall.com>
SAM	  Simon Matthews <sam@peritas.com>
SKANE     Stephen E Kane <sek112@elvis.arl.psu.edu>
SORTIZ	  Salvador Ortiz <sortiz@sog@msg.com.mx>
TOMHUGHES Tom Hughes <tom@compton.demon.co.uk>
VKHERA    Vivek Khera <vivek@khera.org>
ZENIN	  Byron Brummer <zenin@archive.rhps.org>

More Info

See the Apache/Perl homepage.