NAME
HTTP::Daemon::UNIX - HTTP::Daemon over Unix sockets
VERSION
version 0.03
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"
"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::UserAgent;
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
LWP::Protocol::http::SocketUnixAlt
AUTHOR
Steven Haryanto <stevenharyanto@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 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.