oracular (3) HTTP::Daemon::SSL.3pm.gz

Provided by: libhttp-daemon-ssl-perl_1.05-01-5_all bug

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;

BUGS

       There is a problem with the interaction between the HTTP::Daemon base class and IO::Socket::SSL buffering
       which causes large post or put actions (>66k or so, depending on your OS) to hang.

       See <https://rt.cpan.org/Ticket/Display.html?id=52602>.

SEE ALSO

       RFC 2068

       IO::Socket::SSL, HTTP::Daemon, Apache

       Github repository: <http://github.com/aufflick/p5-http-daemon-ssl>

       Code and documentation from HTTP::Daemon Copyright 1996-2001, Gisle Aas Changes Copyright 2003-2004,
       Peter Behroozi Changes Copyright 2007-2009, Mark Aufflick "<mark@aufflick.com>"

       This library is free software; you can redistribute it and/or modify it under the same terms as Perl
       itself.