# The Apache/Perl Module List

Maintained by Doug MacEachern,
$Revision: 1.82 $ $Date: 2002/03/25 02:57:59 $

### 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.org 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
    AddrMunge	bdpf	Munge email addresses in webpages	MJD
    AutoIndex	Rdcf	Lists directory content			GOZER
    Archive		bdpf	Make linked contents pages of .tar(.gz) JPETERSON
    ASP		bdpO	Implement Active Server Pages		CHAMAS
    BBS		cdpO 	BBS like System for Apache		MKOSS
    CallHandler	cdpf	Map filenames to subroutine calls	GKNOPS
    Cachet		i	OutputChain with caching		MERLYN
    Compress	bdpO	Compress content on the fly		KWILLIAM
    Dir		i	OO (subclassable) mod_dir replacement 	DOUGM
    Dispatch        bmpf    Call PerlHandlers as CGI scripts        GEOFF
    Embperl		Rmcf	Embed Perl in HTML			GRICHTER
    EmbperlChain	bdpO	Feed handler output to Embperl		CHOLET
    ePerl		Rdpr  	Fast emulated Embedded Perl (ePerl)	RSE
    Filter		RdpO	OutputChain like functionality		KWILLIAM
    Forward		bdpO	OutputChain like functionality		MPB
    FTP		i	Full-fledged FTP proxy			PMKANE
    Gateway		bdpf	A multiplexing gateway			CCWF
    GzipChain	bmpf	Compress files on the fly		ANDK
    iNcom		bdpf	An e-commerce framework			FRAJULAC
    Layer		bdpf	Layer content tree over one or more	SAM
    Magick		bdpf	Image conversion on-the-fly		MPB
    Mason		bdpO	Build sites w/ modular Perl/HTML blocks	JSWARTZ
    ModuleDoc	bdpf	Self documentation for Apache C modules	DOUGM
    NavBar		bdpO	Navigation bar generator		MPB
    NNTPGateway	adpf	A Web based NNTP (usenet) interface	BOUBAKER
    OutputChain     bmpO	Chain output of stacked handlers	JANPAZ
    OWA		bdpf	Runs Oracle PL/SQL Web Toolkit apps	SVINTO
    PageKit         ampO    Application framework w/ HTML::Template TJMATHER
    PassFile	bdpf	Send file via OutputChain		ANDK
    PerlRun		Smpf	Run unaltered CGI scripts		APML
    PrettyPerl      Rdpf    Syntax highlighting for Perl files	RA
    PrettyText	bdpf	Re-format .txt files for client display	CHTHORMAN
    RandomLocation	bdpf	Random image display 			RKOBES
    Registry	Smpf	Run unaltered CGI scripts 		APML
    RobotRules	cdpf	Enforce robot rules (robots.txt)	PARKER
    Sandwich	bmpf	Layered document (sandwich) maker	VKHERA
    ShowRequest	bdpf	Show phases and module participation	DOUGM
    SimpleReplace   ampf    Simple replacement template tool        GEOFF
    SSI		RmpO	Implement server-side includes in Perl	KWILLIAM
    SSIChain	bmpO	SSI on other modules output		JANPAZ
    Stage		Rdpf	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
    VhostSandwich  cdpf    Virtual host layered document maker     MARKC
    WDB		bdpf	Database query/edit tool using DBI	JROWE
    WebSQL		cdpO	Adaptation of Sybase's WebSQL		GUNTHER

    * PerlInitHandler's
    RequestNotes    ampf    Pass cookie & form data around pnotes   GEOFF

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

    * PerlAuthenHandler's
    AuthAny		bdpf	Authenticate with any username/password	MPB
    AuthenCache	bmpf	Cache authentication credentials	JBODNAR
    AuthCookie	RdpO	Authen + Authz via cookies		KWILLIAM
    AuthenDBI	bmpO	Authenticate via Perl's DBI		MERGL
    AuthenGSS	cdpf    Generic Security Service (RFC 2078)	DOUGM
    AuthenIMAP	bdpf	Authentication via an IMAP server	MICB
    AuthenPasswdSrv bdpf	External authentication server		JEFFH
    AuthenPasswd	bdpf	Authenticate against /etc/passwd	DEP
    AuthLDAP	bdpf	LDAP authentication module		CDONLEY
    AuthPerLDAP	bdpf	LDAP authentication module (PerLDAP)	HENRIK
    AuthenNIS	bdpf	NIS authentication			DEP
    AuthNISPlus	bdpF	NIS Plus authentication/authorization	VALERIE
    AuthenRaduis	bdpf	Authentication via a Radius server	DANIEL
    AuthenSmb	bdpf	Authenticate against NT server		PARKER
    AuthenURL	bdpf	Authenticate via another URL		JGROENVEL
    DBILogin	bdpf	Authenticate to backend database 	JGROENVEL
    DCELogin	bdpf	Obtain a DCE login context		DOUGM
    PHLogin		bdpf	Authenticate via a PH database		JGROENVEL
    TicketAccess	bdpO	Ticket based access/authentication	MPB

    * PerlAuthzHandler's
    AuthCookie	bdpf	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
    AuthzGender	bdpf	Authorize based on gender		MPB
    AuthzNIS	bdpf	NIS authorization			DEP
    AuthzPasswd	bdpf	Authorize against /etc/passwd		DEP
    AuthzSSL	bdpf	Authorize based on client cert		MPB
    RoleAuthz	i	Role-based authorization		DOUGM

    * PerlAccessHandler's
    AccessLimitNum	bmpf	Limit user access by number of requests	APML
    BlockAgent	bdpf	Block access from certain agents	MPB
    DayLimit	bmpf	Limit access based on day of week	MPB
    IPThrottle	cdpf	Limit bandwith consumption by IP	MERLYN
    RobotLimit	cdpf	Limit access of robots			PARKER
    SpeedLimit	bdpf	Control client request rate		MPB

    * PerlTypeHandler's
    AcceptLanguage	cdpf	Send file type based on language pref	ROBH
    MIME		bdcf	Perl implementation of mod_mime		MPB
    MimeDBI		bdpf	Type mapping from a DBI database	MPB
    MimeXML		bdpf	mime encoding sniffer for XML files	MSERGEANT

    * PerlTransHandler's    (May also include a PerlHandler)
    AdBlocker	bdpf	Block advertisement images		MPB
    AddHostPath	adpf    Prepends parts of hostname to URI       RJENKS
    AnonProxy	bdpf	Anonymizing proxy			MPB
    Checksum	bdpf	Manage document checksum trees		MPB
    DynaRPC		i	Dynamically translate URIs into RPCs	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
    StripSession	bdpf	Strip session info from URI		MPB
    Throttle        bdpf    Speed-based content negotiation         DONS
    TransLDAP	bdpf	Translate URIs to LDAP queries		CDONLEY

    * PerlFixupHandler's
    HttpEquiv	bdpf	HTML HTTP-EQUIV tags to HTTP headers	ROBH
    RefererBlock	bdpf	Block based on MIME type + Referer	CHOLET
    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
    LogMail		bdpf	Log certain requests via email		MPB
    Traffic		bdpf	Logs bytes transferred, per-user basis 	MAURICE
    WatchDog	c	Look for problematic URIs		DOUGM

    * PerlChildInitHandler's
    Resource	Smpf	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	SmcO	Interface to configuration API		APML
    PerlSections	SmpO	Utilities for <Perl> sections		APML
    httpd_conf	bmpO	Methods to configure and run an httpd	APML
    src		SmpO	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 Apache C structures and modules
    Apache		SmcO	Interface to request_rec struct + API	APML
    Backhand	bdcr	Bridge between mod_backhand + mod_perl	DLOWE
    CmdParms	SmcO	Interface to Apache cmd_parms struct	APML
    Command		bmcO	Interface to Apache command_rec struct	APML
    Connection	SmcO	Inteface to Apache conn_rec struct	APML
    Constants	Smcf	Constants defined in httpd.h		APML
    ExtUtils	SmpO	Utils for Apache:C/Perl glue		APML
    File		SmcO	Methods for working with files		APML
    Handler		bmcO	Interface to Apache handler_rec struct	APML
    Log		SmcO	ap_log_error interface			APML
    LogFile		bmcO	Interface to Apache's piped logs, etc.	APML
    Module		bmcO	Interface to Apache module struct	APML
    Scoreboard      RdcO    Perl interface to Apache's scoreboard.h DOUGM
    Server		SmcO	Interface to Apache server_rec struct	APML
    SubProcess	cmcO	Interface to Apache subprocess API	APML
    Table		SmcO	Interface to Apache table struct + API 	APML
    URI		SmcO	URI component parsing and unparsing	APML
    Util		Smcf	Interface to Apache's util*.c functions	APML

    * HTTP Method handlers
    PATCH		bdpf	HTTP PATCH method handler		MPB
    PUT		cdpf	HTTP PUT method handler 		SORTIZ
    Roaming		bdpO	PUT/GET/MOVE/DELETE (Netscape Roaming)	JWEID

    * Watchdog and Monitoring tools
    SizeLimit         Smpf    Graceful exit for large children        APML
    GTopLimit	  Rdpn	  Child exit on small shared or large mem STAS
    Status            Smpf    Embedded interpreter runtime status     APML
    VMonitor          Rdpn    Visual System and Processes Monitor     STAS
    Watchdog::RunAway Rdpn    RunAway processes watchdog/terminator   STAS

    * Development and Debug tools
    DB		amcO	Hook Perl interactive DB into mod_perl	DOUGM
    Debug		Rmpf	mod_perl debugging utilities		APML
    DebugInfo       ampO    Per-request data logging                GEOFF
    DProf		bmcf	Hook Devel::DProf into mod_perl		DOUGM
    FakeRequest	ampO	Implement Apache methods off-line	APML
    Leak		bmcf	Memory leak tracking routines		APML
    Peek		amcf	Devel::Peek for mod_perl		APML
    SawAmpersand	bmpf	Make sure noone is using $&, $' or $`	APML
    SmallProf	bmpf	Hook Devel::SmallProf into mod_perl	DOUGM
    StatINC		Smpf	Reload require'd files when updated	APML
    Symbol		bmcO	Things for symbol things		APML
    Symdump		bmpf	Symbol table snapshots to disk		APML
    test		Smpf	Handy routines for 'make test' scripts	APML

    * Misc
    Byterun		i	Run Perl bytecode modules		DOUGM
    Cookie		amcO	C version of CGI::Cookie		APML
    Icon		bdcO	Access to AddIcon* configuration	DOUGM
    Include		Smpf	mod_include + Apache::Registry handler	APML
    Mmap		bdcf	Share data via Mmap module		FLETCH
    Motd            bmpf    Add Message of the Day functionality    CRAMIREZ
    ParseLog	bdpO	OO interface to Apache log files	AKIRA
    RegistryLoader	SmpO	Apache::Registry startup script loader 	APML
    Request		amcO    CGI.pm functionality using API methods	APML
    Safe		ampO	Adaptation of "safecgiperl"		APML
    Session		bmpO	Maintain client <-> httpd session/state	JBAKER
    Servlet		ampO	Interface to the Java Servlet engine	IKLUFT
    SIG		SmpO	Signal handlers for mod_perl		APML
    State		i	Powerful state engine			RSE
    TempFile	bdpf	Manage temporary files			TOMHUGHES
    Upload		amcO	File upload class			APML

### 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>
    AKIRA	  Akira Hangai <akira@discover-net.net>
    ANDK	  Andreas König <a.koenig@franz.ww.TU-Berlin.DE>
    APML	  The Apache/Perl Mailing List <modperl@perl.apache.org>
    BMILLETT  Brian Millett <bpm@techapp.com>
    BOUBAKER  Heddy Boubaker <boubaker@cena.fr>
    CCWF	  Charles C. Fu &lt;ccwf@bacchus.com&gt;
    CDONLEY   Clayton Donley <donley@wwa.com>
    CHAMAS	  Joshua Chamas <chamas@alumni.stanford.org>
    CHOLET	  Eric Cholet <cholet@logilune.com>
    CHTHORMAN Chris Thorman <chris@thorman.com>
    CRAMIREZ  Carlos Ramirez <carlos@quantumfx.com>
    DANIEL	  Daniel <daniel-authenradius@electricrain.com>
    DEP	  Demetrios E. Paneras <dep@media.mit.edu>
    DLOWE	  David Lowe <dlowe@pootpoot.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>
    FRAJULAC  Francis J. Lacoste <frajulac@insu.com>
    GEOFF     Geoffrey Young <geoff@cpan.org>
    GKNOPS	  Gerd Knops <gerti@BITart.com>
    GOZER	  Philippe M. Chiasson <gozer@ectoplasm.dyndns.com>
    GRICHTER  Gerald Richter <richter@ecos.de>
    GUNTHER   Gunther Birznieks <gunther@nhgri.nih.gov>
    HENRIK	  Henrik Strom <henrik@computer.org>
    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 <jbodnar@tivoli.com>
    JGROV	  John D Groenveld <jdg117@elvis.arl.psu.edu>
    JEFFH	  Jeffrey Hulten <jeffh@premier1.net>
    JROWE	  Jeff Rowe <beowulf@lava.net>
    JSWARTZ	  Jonathan Swartz <swartz@transbay.net>
    JWEID	  Jochen Wiedmann <joe@ispsoft.de>
    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>
    MJD	  Mark-Jason Dominus <mjd-perl-pause2@plover.com>
    MJS       Michael Smith <mjs@iii.co.uk>
    MKOSS	  Max Kossatzmax <kossatz@thing.at>
    MICB  	  Malcolm Beattie <mbeattie@sable.ox.ac.uk>
    MPB	  mod_perl book (Doug and Lincoln) <book@modperl.com>
    MSERGEANT Matt Sergeant <matt@sergeant.org>
    RA        Roman Kosenko <ra@amk.lg.ua>
    NJENSEN	  Neil Jensen <njensen@habaneros.com>
    PARKER	  Michael Parker <parker@austx.tandem.com>
    PETERM	  Peter Marshall <peterm@pageactive.com>
    JPETERSON  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>
    RJENKS	  Robert Jenks <rjenks@cvsroot.org>
    RKOBES	  Randy Kobes <randy@theory.uwinnipeg.ca>
    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@msg.com.mx>
    STAS      Stas Bekman <stas@stason.org>
    SVINTO	  Svante Sörmark <svinto@ita.chalmers.se>
    TJMATHER  T.J. Mather <tjmather@thoughtstore.com>
    TOMHUGHES Tom Hughes <tom@compton.demon.co.uk>
    VALERIE	  Valerie Delane <valerie@savina.com>
    VKHERA    Vivek Khera <vivek@khera.org>
    ZENIN	  Byron Brummer <zenin@archive.rhps.org>

### More Info

See the Apache/Perl homepage.