Apache-Test
view release on metacpan or search on metacpan
lib/Apache/TestConfig.pm view on Meta::CPAN
line => "$indent<VirtualHost " . ($namebased ? '*' : '_default_') .
":$port>",
};
}
sub find_and_load_module {
my ($self, $name) = @_;
my $mod_path = $self->find_apache_module($name) or return;
my ($sym) = $name =~ m/mod_(\w+)\./;
if ($mod_path && -e $mod_path) {
$self->preamble(IfModule => "!mod_$sym.c",
qq{LoadModule ${sym}_module "$mod_path"\n});
}
return 1;
}
sub replace_vhost_modules {
my $self = shift;
if (my $cfg = $self->parse_vhost($_)) {
$_ = '';
for my $key (qw(out_string line in_string)) {
next unless $cfg->{$key};
$_ .= "$cfg->{$key}\n";
}
}
}
sub replace_vars {
my($self, $in, $out) = @_;
local $_;
while (<$in>) {
$self->replace;
$self->replace_vhost_modules;
print $out $_;
}
}
sub index_html_template {
my $self = shift;
return "welcome to $self->{server}->{name}\n";
}
sub generate_index_html {
my $self = shift;
my $dir = $self->{vars}->{documentroot};
$self->gendir($dir);
my $file = catfile $dir, 'index.html';
return if -e $file;
my $fh = $self->genfile($file);
print $fh $self->index_html_template;
}
sub types_config_template {
return <<EOF;
text/html html htm
image/gif gif
image/jpeg jpeg jpg jpe
image/png png
text/plain asc txt
EOF
}
sub generate_types_config {
my $self = shift;
# handle the case when mod_mime is built as a shared object
# but wasn't included in the system-wide httpd.conf
$self->find_and_load_module('mod_mime.so');
unless ($self->{inherit_config}->{TypesConfig}) {
my $types = catfile $self->{vars}->{t_conf}, 'mime.types';
unless (-e $types) {
my $fh = $self->genfile($types);
print $fh $self->types_config_template;
close $fh;
}
$self->postamble(<<EOI);
<IfModule mod_mime.c>
TypesConfig "$types"
</IfModule>
EOI
}
}
# various dup bugs in older perl and perlio in perl < 5.8.4 need a
# workaround to explicitly rewind the dupped DATA fh before using it
my $DATA_pos = tell DATA;
sub httpd_conf_template {
my($self, $try) = @_;
my $in = Symbol::gensym();
if (open $in, $try) {
return $in;
}
else {
my $dup = Symbol::gensym();
open $dup, "<&DATA" or die "Can't dup DATA: $!";
seek $dup, $DATA_pos, 0; # rewind to the beginning
return $dup; # so we don't close DATA
}
}
#certain variables may not be available until certain config files
#are generated. for example, we don't know the ssl port until ssl.conf.in
#is parsed. ssl port is needed for proxyssl testing
sub check_vars {
my $self = shift;
my $vars = $self->{vars};
unless ($vars->{proxyssl_url}) {
my $ssl = $self->{vhosts}->{ $vars->{ssl_module_name} };
if ($ssl) {
$vars->{proxyssl_url} ||= $ssl->{hostport};
}
if ($vars->{proxyssl_url}) {
unless ($vars->{maxclients_preset}) {
( run in 1.596 second using v1.01-cache-2.11-cpan-df04353d9ac )