1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::setupenv2;
# Test the mixing of PerlSetEnv in httpd.conf and %ENV of the same
# key in PerlRequire, PerlConfigRequire, PerlPostConfigRequire and
# <Perl> sections
use strict;
use warnings FATAL => 'all';
use Apache2::Const -compile => qw(OK OR_ALL NO_ARGS);
use Apache2::CmdParms ();
use Apache2::Module ();
use Apache2::RequestIO ();
use Apache2::RequestRec ();
my @directives = (
{
name => 'MyEnvRegister',
func => __PACKAGE__ . '::MyEnvRegister',
req_override => Apache2::Const::OR_ALL,
args_how => Apache2::Const::NO_ARGS,
errmsg => 'cannot fail :)',
},
);
Apache2::Module::add(__PACKAGE__, \@directives);
# testing PerlLoadModule
$ENV{EnvChangeMixedTest} = 'loadmodule';
$ENV{EnvChangePerlTest} = 'loadmodule';
sub MyEnvRegister {
register_mixed();
}
sub register_mixed {
push @TestModperl::setupenv2::EnvChangeMixedTest,
$ENV{EnvChangeMixedTest} || 'notset';
}
sub register_perl {
push @TestModperl::setupenv2::EnvChangePerlTest,
$ENV{EnvChangePerlTest} || 'notset';
}
sub get_config {
my ($self, $s) = (shift, shift);
Apache2::Module::get_config($self, $s, @_);
}
sub handler {
my ($r) = @_;
my $args = $r->args || '';
$r->content_type('text/plain');
if ($args eq 'mixed') {
my @vals = (@TestModperl::setupenv2::EnvChangeMixedTest,
$ENV{EnvChangeMixedTest}); # what's the latest env value
$r->print(join " ", @vals);
}
elsif ($args eq 'perl') {
my @vals = (@TestModperl::setupenv2::EnvChangePerlTest,
$ENV{EnvChangePerlTest}); # what's the latest env value
$r->print(join " ", @vals);
}
else {
die "no such case";
}
return Apache2::Const::OK;
}
1;
__END__
# APACHE_TEST_CONFIG_ORDER 950
<NoAutoConfig>
PerlLoadModule TestModperl::setupenv2
MyEnvRegister
PerlSetEnv EnvChangeMixedTest "conf1"
<Perl >
TestModperl::setupenv2::register_mixed();
TestModperl::setupenv2::register_perl();
$ENV{EnvChangeMixedTest} = "<perl>";
$ENV{EnvChangePerlTest} = "<perl>";
</Perl>
MyEnvRegister
PerlSetEnv EnvChangeMixedTest "conf2"
PerlRequire "@documentroot@/modperl/setupenv2/require.pl"
MyEnvRegister
PerlSetEnv EnvChangeMixedTest "conf3"
PerlConfigRequire "@documentroot@/modperl/setupenv2/config_require.pl"
MyEnvRegister
PerlSetEnv EnvChangeMixedTest "conf4"
PerlModule htdocs::modperl::setupenv2::module
MyEnvRegister
PerlSetEnv EnvChangeMixedTest "conf5"
MyEnvRegister
PerlPostConfigRequire "@documentroot@/modperl/setupenv2/post_config_require.pl"
MyEnvRegister
PerlSetEnv EnvChangeMixedTest "conf6"
MyEnvRegister
PerlSetEnv EnvChangeMixedTest "conf7"
MyEnvRegister
<Location /TestModperl__setupenv2>
SetHandler modperl
PerlResponseHandler TestModperl::setupenv2
</Location>
PerlSetEnv EnvChangeMixedTest "conf8"
# Since PerlPostConfigRequire runs in the post-config phase it will
# see 'conf8'. And when it sets that value to 'post_config_require' at
# request time $ENV{EnvChangeMixedTest} will see the value set by
# PerlPostConfigRequire.
</NoAutoConfig>
|