# Thanks to merlyn for nudging me and giving me this snippet! use strict; use HTTP::Daemon; use LWP::UserAgent; $|++; my $d = HTTP::Daemon->new or die; print $d->url, "\n"; # How many requests do we expect? my ($ex_user,$ex_pass) = @ARGV; my $verbose = $ENV{TEST_HTTP_VERBOSE}; my $done = 0; while (! $done and my $c = $d->accept) { while (my $req = $c->get_request) { if ($verbose) { warn "# Request URI: " . $req->url->path; my @lines = split "\n",$req->as_string; warn "# $_\n" for @lines; }; my $res; my ($user,$pass); if ($req->url->path eq '/exit') { $done = 1; $res = HTTP::Response->new(200, "OK", undef, "done"); } elsif ( ($user, $pass) = $req->authorization_basic and $user eq $ex_user and $pass eq $ex_pass) { $res = HTTP::Response->new(200, "OK", undef, "user = '$user' pass = '$pass'"); } else { warn "# User : '$user' Password : '$pass'\n" if $verbose; $res = HTTP::Response->new(401, "Auth Required", undef, "auth required ($user/$pass)"); $res->www_authenticate("Basic realm=\"testing realm\""); }; if ($verbose) { warn "---\n"; my @lines = split "\n",$res->as_string; warn "# $_\n" for @lines; }; $c->send_response($res); } $c->close; undef($c); };