#!/usr/local/bin/perl # server.pl use HTTP::Daemon; use HTTP::Status; mkdir("/var/tmp/cluster") || die "/var/tmp/cluster probably already exists"; my $d = HTTP::Daemon->new(LocalPort => 8888, ReuseAddr => 1); print "Please contact me at: url, ">\n"; # TODO: make an external program get executed for each request # TODO: add errors while (my $c = $d->accept) { while (my $r = $c->get_request) { if ($r->uri->path eq '/quit') { goto OUTTAHERE; } my $dir = $0; $dir =~ s%/[^/]*$%%; my $method = $r->method; my $path = $r->uri->path; my $len = 0; if (length(${$r->content_ref}) > 0) { open CONTENT, ">/var/tmp/cosmos_server.content.gz" || die "cannot write content"; binmode(CONTENT); print CONTENT ${$r->content_ref}; close CONTENT; $len = `gzip -d new(map({split(/:\s/)} @fields)); $respstr =~ s/.*?\r?\n\r?\n//s; # body } my $retstat = $?; if ($code == 200 || $code == 404 || $code == 100) { $resp = HTTP::Response->new($code, $codestr, $header, $respstr); $c->send_response($resp); } else { $c->send_error($code) } } $c->close; undef($c); } OUTTAHERE: