Steven Haryanto > HTTP-Daemon-UNIX > HTTP::Daemon::UNIX

Download:
HTTP-Daemon-UNIX-0.04.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 0.04   Source  

NAME ^

HTTP::Daemon::UNIX

VERSION ^

version 0.04

SYNOPSIS ^

 use HTTP::Daemon::UNIX;

 # arguments will be passed to IO::Socket::UNIX, but Listen=>1 and
 # Type=>SOCK_STREAM will be added by default. also, HTTP::Daemon::UNIX will try
 # to delete stale socket first, for convenience.
 my $d = HTTP::Daemon::UNIX->new(Local => "/path/to/unix.sock");

 # will print something like: "http:path/to/unix.sock"
 print "Please contact me at: <URL:", $d->url, ">\n";

 # after that, use like you would use HTTP::Daemon
 while (my $c = $d->accept) {
     while (my $r = $c->get_request) {
         if ($r->method eq 'GET' and $r->uri->path eq "/xyzzy") {
             # remember, this is *not* recommended practice :-)
             $c->send_file_response("/etc/passwd");
         } else {
             $c->send_error(RC_FORBIDDEN);
         }
     }
     $c->close;
     undef($c);
 }

 # client side code, using LWP::Protocol::http::SocketUnixAlt
 use LWP::Protocol::http::SocketUnixAlt;
 use LWP::UserAgent;
 use HTTP::Request::Common;

 my $ua = LWP::UserAgent->new;
 my $orig_imp = LWP::Protocol::implementor("http");
 LWP::Protocol::implementor(http => 'LWP::Protocol::http::SocketUnixAlt');
 my $resp = $ua->request(GET "http:path/to/unix.sock//uri/path");
 LWP::Protocol::implementor(http => $orig_imp);

DESCRIPTION ^

This is a quick hack to enable HTTP::Daemon to serve requests over Unix sockets, by mixing in IO::Socket::UNIX and HTTP::Daemon as parents to HTTP::Daemon::UNIX and overriding IO::Socket::INET-related stuffs.

Basic stuffs seem to be working, but this module has not been tested extensively, so beware that things might blow up in your face.

SEE ALSO ^

HTTP::Daemon

LWP::Protocol::http::SocketUnixAlt

AUTHOR ^

Steven Haryanto <stevenharyanto@gmail.com>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2012 by Steven Haryanto.

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

syntax highlighting: