NAME¶
HTTP::Daemon::SSL - a simple http server class with SSL support
SYNOPSIS¶
use HTTP::Daemon::SSL;
use HTTP::Status;
# Make sure you have a certs/ directory with "server-cert.pem"
# and "server-key.pem" in it before running this!
my $d = HTTP::Daemon::SSL->new || die;
print "Please contact me at: <URL:", $d->url, ">\n";
while (my $c = $d->accept) {
while (my $r = $c->get_request) {
if ($r->method eq 'GET' and $r->url->path eq "/xyzzy") {
# remember, this is *not* recommened practice :-)
$c->send_file_response("/etc/passwd");
} else {
$c->send_error(RC_FORBIDDEN)
}
}
$c->close;
undef($c);
}
DESCRIPTION¶
Instances of the
HTTP::Daemon::SSL class are HTTP/1.1 servers that listen
on a socket for incoming requests. The
HTTP::Daemon::SSL is a sub-class
of
IO::Socket::SSL, so you can perform socket operations directly on it
too.
The
accept() method will return when a connection from a client is
available. In a scalar context the returned value will be a reference to a
object of the
HTTP::Daemon::ClientConn::SSL class which is another
IO::Socket::SSL subclass. In a list context a two-element array is
returned containing the new
HTTP::Daemon::ClientConn::SSL reference and
the peer address; the list will be empty upon failure. (Note that version
1.02 erroneously did not honour list context). Calling the
get_request()
method on the
HTTP::Daemon::ClientConn::SSL object will read data from
the client and return an
HTTP::Request object reference.
This HTTPS daemon does not
fork(2) for you. Your application, i.e. the
user of the
HTTP::Daemon::SSL is reponsible for forking if that is
desirable. Also note that the user is responsible for generating responses
that conform to the HTTP/1.1 protocol. The
HTTP::Daemon::ClientConn
class provides some methods that make this easier.
METHODS¶
The following methods are the only differences from the
HTTP::Daemon base
class:
- $d = new HTTP::Daemon::SSL
- The constructor takes the same parameters as the
IO::Socket::SSL constructor. It can also be called without
specifying any parameters, but you will have to make sure that you have an
SSL certificate and key for the server in certs/server-cert.pem and
certs/server-key.pem. See the IO::Socket::SSL documentation for how
to change these default locations and specify many other aspects of SSL
behavior. The daemon will then set up a listen queue of 5 connections and
allocate some random port number. A server that wants to bind to some
specific address on the standard HTTPS port will be constructed like this:
$d = new HTTP::Daemon::SSL
LocalAddr => 'www.someplace.com',
LocalPort => 443;
SEE ALSO¶
RFC 2068
IO::Socket::SSL, HTTP::Daemon, Apache
COPYRIGHT¶
Code and documentation from HTTP::Daemon Copyright 1996-2001, Gisle Aas Changes
Copyright 2003-2004, Peter Behroozi
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.