1
0
Fork 0
apache2/debian/perl-framework/t/modules/access.t
Daniel Baumann f56986e2d9
Adding debian version 2.4.63-1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 11:01:27 +02:00

191 lines
5.6 KiB
Perl

use strict;
use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestRequest;
use Apache::TestUtil;
##
## mod_access test
##
my $vars = Apache::Test::vars();
my $localhost_name = $vars->{servername};
my $remote_addr = $vars->{remote_addr};
my(@addr) = split /\./, $remote_addr;
my $addr1 = $addr[0];
my $addr2 = join '.', $addr[0], $addr[1];
my @localhost = (
'from all',
"from $localhost_name",
"from $remote_addr",
"from $addr2",
"from $remote_addr/255.255.0.0",
"from $remote_addr/16",
'from somewhere.else.com',
'from 66.6.6.6'
);
my @order = ('deny,allow', 'allow,deny', 'mutual-failure');
my @allow = @localhost;
my @deny = @localhost;
plan tests => (@order * @allow * @deny * 2) + (@order * @allow), \&need_access;
my $dir = $vars->{t_dir};
$dir .= "/htdocs/modules/access/htaccess";
sub write_htaccess {
my $conf_str = shift;
open (HT, ">$dir/.htaccess") or die "cant open htaccess: $!";
print HT $conf_str;
close (HT);
}
my ($config_string, $ok);
foreach my $order (@order) {
foreach my $allow (@allow) {
$config_string = "Order $order\nAllow $allow\n";
write_htaccess($config_string);
t_debug "---", $config_string;
if ($order eq 'deny,allow') {
## if allowing by default,
## there is no 'Deny' directive, so everything
## is allowed.
t_debug "expecting access.";
ok GET_OK "/modules/access/htaccess/index.html";
} else {
## denying by default
if ($allow =~ /^from $addr1/
|| $allow eq "from $localhost_name"
|| $allow eq 'from all') {
## if we are explicitly allowed, its ok
t_debug "expecting access.";
ok GET_OK "/modules/access/htaccess/index.html";
} else {
## otherwise, not ok
t_debug "expecting access denial.";
ok !GET_OK "/modules/access/htaccess/index.html";
}
}
foreach my $deny (@deny) {
$config_string = "Order $order\nDeny $deny\n";
write_htaccess($config_string);
t_debug "---", $config_string;
if ($order eq 'deny,allow') {
## allowing by default
if ($deny =~ /^from $addr1/
|| $deny eq "from $localhost_name"
|| $deny eq 'from all') {
## if we are denied explicitly
## its not ok
t_debug "expecting access denial.";
ok !GET_OK "/modules/access/htaccess/index.html";
} else {
## otherwise, ok
t_debug "expecting access.";
ok GET_OK "/modules/access/htaccess/index.html";
}
} else {
## if denying by default
## there is no 'Allow' directive, so
## everything is denied.
t_debug "expecting access denial.";
ok !GET_OK "/modules/access/htaccess/index.html";
}
$config_string = "Order $order\nAllow $allow\nDeny $deny\n";
write_htaccess($config_string);
t_debug "---", $config_string;
if ($order eq 'deny,allow') {
## allowing by default
if ($allow =~ /^from $addr1/
|| $allow eq "from $localhost_name"
|| $allow eq 'from all') {
## we are explicitly allowed
## so it is ok.
t_debug "expecting access.";
ok GET_OK "/modules/access/htaccess/index.html";
} elsif ($deny =~ /^from $addr1/
|| $deny eq "from $localhost_name"
|| $deny eq 'from all') {
## if we are not explicitly allowed
## and are explicitly denied,
## we are denied access.
t_debug "expecting access denial.";
ok !GET_OK "/modules/access/htaccess/index.html";
} else {
## if we are not explicity allowed
## or explicitly denied,
## we get access.
t_debug "expecting access.";
ok GET_OK "/modules/access/htaccess/index.html";
}
} else {
## denying by default
if ($deny =~ /^from $addr1/
|| $deny eq "from $localhost_name"
|| $deny eq 'from all') {
## if we are explicitly denied,
## we get no access.
t_debug "expecting access denial.";
ok !GET_OK "/modules/access/htaccess/index.html";
} elsif ($allow =~ /^from $addr1/
|| $allow eq "from $localhost_name"
|| $allow eq 'from all') {
## if we are not explicitly denied
## and are explicitly allowed,
## we get access.
t_debug "expecting access.";
ok GET_OK "/modules/access/htaccess/index.html";
} else {
## if we are not explicitly denied
## and not explicitly allowed,
## we get no access.
t_debug "expecting access denial.";
ok !GET_OK "/modules/access/htaccess/index.html";
}
}
}
}
}