|
Writing Apache Modules with Perl & C
Apache is the most popular web server on the Internet
because it is free, reliable, and extensible. The
availability of the source code and the modular design of
Apache makes it possible to extend web server functionality
through the Apache API.
For the most part, however, the Apache API has only been
available
to C programmers, and requires rebuilding the
Apache server from source. mod_perl, the popular Apache
module used primarily for enhanced CGI performance, changed
all that by making the Apache API available to Perl
programmers. With mod_perl, it becomes simple to develop
Apache modules with Perl and install them without having to
rebuild the web server.
Writing Apache Modules with Perl and C shows how to extend
web server capabilities regardless of whether the
programming language is Perl or C. The book explains the
design of Apache, mod_perl, and the Apache API. It then
demonstrates how to use them to perform for tasks like the
following:
Rewriting CGI scripts as Apache modules to vastly improve
performance
Server-side filtering of HTML documents, to embed special
markup or code (much like SSI)
Enhancing server log functionality
Converting file formats on the fly
Implementing dynamic navigation bars
Incorporating database access into CGI scripts
Customizing access control and authorization to block
robots or to use an external database for passwords
The authors are Lincoln Stein and Doug MacEachern. Lincoln
is the successful author of How to Set Up and Maintain a
World Wide web Site and the developer of the widely used
Perl CGI.pm module. Doug is a consultant and the creator of
the innovative mod_perl Apache module.
Preface
1. Server-Side Programming with Apache
Web Programming Then and Now
The Apache Project
The Apache C and Perl APIs
Ideas and Success Stories
2. A First Module
Preliminaries
Directory Layout Structure
Installing mod_perl
"Hello World" with the Perl API
"Hello World" with the C API
Instant Modules with Apache::Registry
Troubleshooting Modules
3. The Apache Module Architecture and API
How Apache Works
The Apache Life Cycle
The Handler API
Perl API Classes and Data Structures
4. Content Handlers
Content Handlers as File Processors
Virtual Documents
Redirection
Processing Input
Apache::Registry
Handling Errors
Chaining Content Handlers
Method Handlers
5. Maintaining State
Choosing the Right Technique
Maintaining State in Hidden Fields
Maintaining State with Cookies
Protecting Client-Side Information
Storing State at the Server Side
Storing State Information in SQL Databases
Other Server-Side Techniques
6. Authentication and Authorization
Access Control, Authentication, and Authorization
Access Control with mod_perl
Authentication Handlers
Authorization Handlers
Cookie-Based Access Control
Authentication with the Secure Sockets Layer
7. Other Request Phases
The Child Initialization and Exit Phases
The Post Read Request Phase
The URI Translation Phase
The Header Parser Phase
Customizing the Type Checking Phase
Customizing the Fixup Phase
The Logging Phase
Registered Cleanups
Handling Proxy Requests
Perl Server-Side Includes
Subclassing the Apache Class
8. Customizing the Apache Configuration Process
Simple Configuration with the PerlSetVar Directive
The Apache Configuration Directive API
Configuring Apache with Perl
Documenting Configuration Files
9. Perl API Reference Guide
The Apache Request Object
Other Core Perl API Classes
Configuration Classes
The Apache::File Class
Special Global Variables, Subroutines, and Literals
10. C API Reference Guide, Part I
Which Header Files to Use?
Major Data Structures
Memory Management and Resource Pools
The Array API
The Table API
Processing Requests
Server Core Routines
11. C API Reference Guide, Part II
Implementing Configuration Directives in C
Customizing the Configuration Process
String and URI Manipulation
File and Directory Management
Time and Date Functions
Message Digest Algorithm Functions
User and Group ID Information Routines
Data Mutex Locking
Launching Subprocesses
A. Standard Noncore Modules
B. Building and Installing mod_perl
C. Building Multifile C API Modules
D. Apache:: Modules Available on CPAN
E. Third-Party C Modules
F. HTML::Embperl-Embedding Perl Code in HTML
|