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
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 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 AuthenNT 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 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
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>