General handler preparation
Following the script’s declarations, it’s time to define the handler
function that Apache will call to handle incoming
requests to the http://[
hostname
]/jbook location.
The name of the handler must be handler():
sub handler {
my $r = shift;
my @a = $r->args;
my $nf = Jabber::NodeFactory->new;
$r->content_type('text/html');
$r->send_http_header;
$r->print("<html><head><title>JBook</title></head><body>");
$r->print("<h1><a href="/jbook">JBook</a></h1>");
# Connect to home Jabber server
my $c = Jabber::Connection->new(server => SERVER);
unless ($c->connect) {
$r->print("Sorry, no connection to Jabber available at ".SERVER);
$r->print("</body></html>");
return;
}
$c->auth(USER, PASS, RESOURCE);
The mod_perl
mechanism hands the handler() function an argument
that is stored in a variable called
$r. This is the HyperText Transfer Protocol (HTTP)
request that has been made, which is handled by the function.
Calling the args() method on our request object
gives us a list of arguments. These arguments follow the
question mark in a typical HTTP GET request. In
Figure 10-3, the URL in the
Location bar is http://www.pipetree.com/jbook.
In this URL, there is neither a question mark nor any arguments. The
assignment to @a here:
my @a = $r->args;
would leave @a empty.
Note
The first part of the URL containing the hostname is truncated by the size of the browser window.
However, if the URL in the Location bar (shown in Figure 10-4) contained question marks and/or ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access