# The Apache/Perl Module List

Maintained by Doug MacEachern,
$Revision: 1.7 $ $Date: 1998/04/20 09:07:15 $

### 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
    CallHandler	cdpf	Map filenames to subroutine calls	GKNOPS
    Dir		i	OO (subclassable) mod_dir replacement 	DOUGM
    Embperl		bdcf	Embed Perl in HTML			GRICHTER
    ePerl		Rdpr  	Fast emulated Embedded Perl (ePerl)	RSE
    FTP		i	Full-fledged FTP proxy			PMKANE
    GzipChain	bmpf	Compress files on the fly		ANDK
    JavaScript	bdpf	Generate JavaScript code		ABH
    ModuleDoc	bdpf	Self documentation for Apache C modules	DOUGM
    OutputChain     bmpO	Chain output of stacked handlers	JANPAZ
    PassFile	bdpf	Send file via OutputChain		ANDK
    Registry	Rmpf	Run unaltered CGI scripts 		APML
    RobotRules	bdpf	Enforce robot rules (robots.txt)	PARKER
    Sandwich	bmpf	Layered document (sandwich) maker	DOUGM
    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
    WDB		bdpf	Database query/edit tool using DBI	JROWE

    * 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
    AuthCookie	bdpO	Authen + Authz via cookies		EBARTLEY
    AuthenDBI	bmpO	Authenticate via Perl's DBI		MERGL
    AuthExpire	cmpO	Expire Basic auth credentials		DOUGM
    AuthenGSS	cdpf    Generic Security Service (RFC 2078)	DOUGM
    AuthenLDAP	i	LDAP authentication module		MARKK
    AuthNIS		bdpf	NIS authentication and authorization	DOUGM
    AuthenSmb	bdpf	Authenticate against NT server		PARKER
    BasicCookieAuth	cdpf	Accept cookie or basic auth creds	PMKANE
    DBILogin	bdpf	Authenticate to backend database 	JGROENVEL
    DCELogin	bdpf	Obtain a DCE login context		DOUGM

    * 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

    * PerlFixupHandler's
    HttpEquiv	bdpf	HTML HTTP-EQUIV tags to HTTP headers	ROBH
    Timeit		bmpf	Benchmark PerlHandlers			APML

    * PerlLogHandler's
    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	cmcO	Interface to configuration API		DOUGM
    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
    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
    LogError	c	aplog_error interface			FLETCH
    LogFile		cmcO	Interface to Apache's piped logs, etc.	DOUGM
    Mime		bmcf	Interface to mod_mime functionality	MDORMAN
    Module		cmcO	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

    * 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
    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
    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
    Safe		ampO	Adaptation of "safecgiperl"		APML
    Session		cmpf	Maintain client <-> httpd session/state	APML
    SIG		amoO	Signal handlers for mod_perl		APML
    State		i	Powerful state engine			RSE

### 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@listproc.itribe.net>
    BMILLETT Brian Millett <bpm@techapp.com>
    DOUGM	 Doug MacEachern <dougm@osf.org>
    EBARTLEY Eric Bartley  <bartley@pdn.cc.purdue.edu>
    FLETCH   Mike Fletcher <lemur1@mindspring.com>
    GKNOPS	 Gerd Knops <gerti@BITart.com>
    GRICHTER Gerald Richter <richter@ecos.de>
    HMUELLER Hanno Mueller <hmueller@mail.kabel.de>
    IKLUFT	 Ian Kluft <ikluft@cisco.com>
    JANPAZ	 Honza Pazdziora <adelton@INFORMATICS.MUNI.CZ>
    JGROV	 John D Groenveld <groenvel@cse.psu.edu>
    JROWE	 Jeff Rowe <beowulf@cscsun4.larc.nasa.gov>
    KWILLIAM Ken Williams  <ken@forum.swarthmore.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>
    MDORMAN	 Michael Alan Dorman  <mdorman@calder.med.miami.edu>
    MERGL	 Edmund Mergl <E.Mergl@bawue.de>
    MJS      Michael Smith <mjs@iii.co.uk>
    NJENSEN	 Neil Jensen <njensen@habaneros.com>
    PARKER	 Michael Parker <parker@austx.tandem.com>
    PLISTER  Peter Lister <p.lister@cranfield.ac.uk>
    PMKANE	 Patrick Michael Kane <modus@enews.com>
    RMANGI   Rick Mangi <rmangi@tgix.com>
    ROBH	 Rob Hartill <robh@imdb.com>
    RSE      Ralf S. Engelschall <rse@engelschall.com>
    SKANE    Stephen E Kane <sek112@elvis.arl.psu.edu>
    SORTIZ	 Salvador Ortiz Garcia <sortiz@cfe.gob.mx>
    ZENIN	 Byron Brummer <zenin@archive.rhps.org>

### More Info

See the Apache/Perl homepage.