blob: 75c7680c7400abcc1159be1ecbfa664eec3bd92f [file] [log] [blame]
#PerlOpmask default
<IfModule mod_dll.c>
LoadModule perl_module modules/mod_perl.so
</IfModule>
AddType text/x-server-parsed-html .shtml
AddType text/perl-module .pm
Action text/perl-module /perl/action.pl
PerlRequire docs/startup.pl
PerlRequire docs/stacked.pl
PerlSetEnv Tops Uno
PerlChildInitHandler "sub { die 'PerlSetEnv busted' unless $ENV{Tops} eq 'Uno' }"
PerlPassEnv TEST_PERL_DIRECTIVES
#-Tw
PerlTaintCheck On
PerlWarn On
PerlSetVar KeyForPerlSetVar OK
PerlSetEnv KeyForPerlSetEnv OK
<Perl>
#!perl
use Apache ();
use Apache::Registry ();
use Apache::RegistryNG ();
for (qw(TEST NOCHANCE)) {
if(Apache->define($_)) {
print "IfDefine $_\n";
}
}
Apache::Server->register_cleanup(sub {
warn "Apache::Server registered cleanup called for $$\n";
0;
});
if($ENV{TEST_PERL_DIRECTIVES}) {
#t/TestDirectives/TestDirectives.pm
push @INC, map { "t/TestDirectives/blib/$_" } qw(arch lib);
require Apache::TestDirectives;
require Apache::ExtUtils;
my $proto_perl2c = Apache::ExtUtils->proto_perl2c;
$PerlConfig .= "YAC yet another\n";
$PerlConfig .= "<Location /perl>\n";
while(my($pp,$cp) = each %$proto_perl2c) {
my $arg = "A";
$pp =~ s/^\$\$//;
1 while $pp =~ s/(\$|\@)/$arg++ . " "/ge;
$PerlConfig .= "$cp $pp\n";
}
$PerlConfig .= <<EOF;
TestCmd one two
AnotherCmd
CmdIterate A B C D E F
</Location>
<Container /for/whatever>
it's
miller
time
#make that a scotch
</Container>
<Location /perl/io>
TestCmd PerlIO IsStdio
</Location>
EOF
}
$My::config_is_perl = 1;
my $dir = $Apache::Server::CWD;
$dir .= "/t"; # if -d "t";
my $Is_Win32 = ($^O eq "MSWin32");
sub prompt ($;$) {
my($mess,$def) = @_;
print "$mess [$def]";
STDIN->untaint;
chomp(my $ans = <STDIN>);
$ans || $def;
}
$ServerRoot = $dir;
$User = $Is_Win32 ? "nobody" : (getpwuid($>) || $>);
$Group = $Is_Win32 ? "nogroup" : (getgrgid($)) || $));
if($User eq "root") {
my $other = (getpwnam('nobody'))[0];
$User = $other if $other;
}
if($User eq "root") {
print "Cannot run tests as User `$User'\n";
$User = prompt "Which User?", "nobody";
$Group = prompt "Which Group?", $Group;
}
print "Will run tests as User: '$User' Group: '$Group'\n";
require 'net/config.pl';
my $srv = $net::httpserver;
($srv = $net::httpserver) =~ s/\D+$//;
$Port = (split ":", $srv, 2)[1];
$Port ||= 8529;
print "Will bind to Port $Port\n";
$DocumentRoot = "$dir/docs";
$ServerName = "localhost";
push @AddType, ["text/x-server-parsed-html" => ".shtml"];
for (qw(/perl /cgi-bin /dirty-perl /perl_xs)) {
push @Alias, [$_ => "$dir/net/perl/"];
}
my @mod_perl = (
SetHandler => "perl-script",
PerlHandler => "Apache::RegistryNG->handler",
Options => "ExecCGI",
);
$Location{"/dirmagic"} = {
PerlHandler => "My::DirIndex",
};
$Location{"/dirty-perl"} = {
SetHandler => "perl-script",
PerlHandler => "Apache::PerlRun",
Options => "+ExecCGI ",
PerlSendHeader => "On",
};
for (qw(perl perl_xs)) {
$Location{"/$_"} = {
@mod_perl,
PerlSetEnv => [KeyForPerlSetEnv => "OK"],
#PerlSetVar => [KeyForPerlSetVar => "OK"],
};
}
for (qw(perl perl_xs)) {
$Location{"/$_/noenv"} = {
@mod_perl,
PerlSetupEnv => "Off",
};
}
$LocationMatch{"/(cgi|slow)-bin"} = {
SetHandler => "cgi-script",
Options => "ExecCGI",
};
sub My::Files::handler {
my $r = shift;
$r->send_http_header('text/plain');
printf "%s pulled out of thin air at %s",
$r->filename, scalar localtime $r->request_time;
}
sub My::Directory::handler {
my $r = shift;
$r->send_http_header('text/plain');
printf "%s says to take a hike", $r->filename =~ m:(\w+)/public:;
}
$FilesMatch{".(date|time)\$"} = {
SetHandler => 'perl-script',
PerlHandler => 'My::Files',
};
$DirectoryMatch{"public_html"} = {
SetHandler => 'perl-script',
PerlHandler => 'My::Directory',
};
#just make sure we can parse this
chomp(my $hostname = `hostname`);
if($hostname =~ /ramona/) {
$NameVirtualHost = '209.228.11.20:8529';
$VirtualHost{"$NameVirtualHost:8529"} = [
{
ServerName => 'ramona.criticalpath.net',
DocumentRoot => '/home/ix',
ServerAdmin => 'ix',
},
{
ServerName => 'ramona.eng.cp.net',
DocumentRoot => '/home/dougm',
ServerAdmin => 'dougm',
},
];
$Location{"/perl/io"} = {
@mod_perl,
PerlSendHeader => "On",
PerlSetupEnv => "On",
};
$Location{"/perl_xs/io"} = {
@mod_perl,
PerlSendHeader => "On",
PerlSetupEnv => "On",
};
}
else {
$VirtualHost{"localhost"} = {
Location => {
"/perl/io" => {
@mod_perl,
PerlSendHeader => "On",
PerlSetupEnv => "On",
},
"/perl_xs/io" => {
@mod_perl,
PerlSendHeader => "On",
PerlSetupEnv => "On",
},
},
};
}
#$Location{"/perl/io"} = {
# @mod_perl,
# PerlSendHeader => "On",
# PerlSetupEnv => "On",
#};
for (qw(perl perl_xs)) {
$Location{"/$_/perl-status"} = {
SetHandler => "perl-script",
PerlHandler => "Apache::Status",
};
}
for (qw(status info)) {
$Location{"/server-$_"} = {
SetHandler => "server-$_",
};
}
$ErrorLog = "logs/error_log";
$PidFile = "logs/httpd.pid";
$AccessConfig = $TypesConfig = $ScoreBoardFile = "$dir/docs/null.txt";
$LockFile = "logs/mod_perl.lock";
#push @PerlChildInitHandler, "My::child_init";
#push @PerlChildExitHandler, "My::child_exit";
$Location{"/STAGE"} = {
ErrorDocument => [
[403 => "/stage-redir"],
[404 => "/stage-redir"],
],
};
$Location{"/stage-redir"} = {
@mod_perl,
PerlHandler => "Apache::Stage",
};
$PerlTransHandler = "PerlTransHandler::handler";
$Location{"/chain"} = {
@mod_perl,
PerlHandler => [map { "Stacked::$_" } qw(one two three four)],
};
$Location{"/death"} = {
@mod_perl,
PerlHandler => "Apache::Death",
};
</Perl>