print STDERR "Unable to determine if daemon is running: $!\n";
exit 1;
}
+ my $conf = IO::File->new($options{mirror_location}.'/debbugs_config_local','w') or
+ die "Unable to open $options{mirror_location}/debbugs_config_local for writing: $!";
+ print {$conf} <<"EOF";
+\$gConfigDir = "$options{mirror_location}";
+\$gSpoolDir = "$options{mirror_location}";
+\$gWebHost = 'localhost:$options{port}';
+\$gPackageSource = '';
+\$gPseudoDescFile = '';
+\$gPseudoMaintFile = '';
+\$gMaintainerFile = '';
+\$gMaintainerFileOverride = '';
+\$config{source_maintainer_file} = '';
+\$config{source_maintainer_file_override} = '';
+\$gProject = 'Local Debbugs';
+1;
+EOF
+ close $conf;
+ $ENV{DEBBUGS_CONFIG_FILE} = $options{mirror_location}.'/debbugs_config_local';
# ok, now lets daemonize
# XXX make sure that all paths have been turned into absolute
package local_debbugs::server;
use IO::File;
use HTTP::Server::Simple;
- use base qw(HTTP::Server::Simple::CGI);
+ use base qw(HTTP::Server::Simple::CGI HTTP::Server::Simple::CGI::Environment);
sub net_server {
return 'Net::Server::Fork';
sub handle_request {
my ($self,$cgi) = @_;
+ $ENV{DEBBUGS_CONFIG_FILE} = $options{mirror_location}.'/debbugs_config_local';
my $base_uri = 'http://'.$cgi->virtual_host;
if ($cgi->virtual_port ne 80) {
$base_uri .= ':'.$cgi->virtual_port;
}
elsif ($path =~ m{^/?cgi(?:-bin)?/((?:(?:bug|pkg)report|version)\.cgi)}) {
# dispatch to pkgreport.cgi
- print "HTTP/1.1 200 OK\n";
- exec("$options{cgi_bin}/$1") or
- die "Unable to execute $options{cgi_bin}/$1";
- }
+ #print "HTTP/1.1 200 OK\n";
+ open(my $fh,'-|',"$options{cgi_bin}/$1") or
+ die "Unable to execute $options{cgi_bin}/$1";
+ my $status;
+ my $cache = '';
+ while (<$fh>) {
+ if (/Status: (\d+\s+.+?)\n?$/) {
+ $status = $1;
+ print "HTTP/1.1 $status\n";
+ print STDERR "'$status'\n";
+ last;
+ }
+ $cache .= $_;
+ if (/^$/) {
+ print "HTTP/1.1 200 OK\n";
+ last;
+ }
+ }
+ print $cache;
+ print <$fh>;
+ close($fh) or die "Unable to close";
+ }
elsif ($path =~ m{^/?css/bugs.css}) {
my $fh = IO::File->new($options{css},'r') or
die "Unable to open $options{css} for reading: $!";