Apache-ConfigParser
view release on metacpan or search on metacpan
lib/Apache/ConfigParser/Directive.pod view on Meta::CPAN
This is a list of directives and any special values to check for as of
Apache 1.3.20 with the addition of IncludeOptional from 2.4.x.
AccessFileName is not a key in the hash because, while its value is
one or more relative paths, the ServerRoot is never prepended to it as
the AccessFileName values are looked up in every directory of the path
to the document being requested.
AccessConfig
AuthGroupFile
AuthUserFile
CookieLog
CustomLog check for "| prog"
ErrorLog check for "| prog", or syslog or syslog:facility
Include
IncludeOptional
LoadFile
LoadModule
LockFile
MimeMagicFile
PidFile
RefererLog check for "| prog"
ResourceConfig
ScoreBoardFile
ScriptLog
TransferLog check for "| prog"
TypesConfig
=item %directive_value_path_element_pos
This hash holds the indexes into the directive value array for the
value or values that can contain either absolute or relative file or
directory paths. This hash is keyed by the lowercase version of a
directive name. The hash value is a string representing an integer.
The string can take two forms:
/^\d+$/ The directive has only one value element indexed by \d+
that takes a file or directory path.
/^-\d+$/ The directive takes any number of file or directory path
elements beginning with the abs(\d+) element.
For example:
# CustomLog logs/access_log common
$directive_value_path_element_pos{customlog} eq '0';
# LoadFile modules/mod_env.so libexec/mod_mime.so
$directive_value_path_element_pos{loadfile} eq '-0';
# LoadModule env_module modules/mod_env.so
$directive_value_path_element_pos{loadmodule} eq '1';
# PidFile logs/httpd.pid
$directive_value_path_element_pos{pidfile} eq '0';
=back
=cut
sub directive_value_is_not_dev_null {
!is_dev_null($_[0]);
}
sub directive_value_is_not_dev_null_and_pipe {
if (is_dev_null($_[0])) {
return 0;
}
return $_[0] !~ /^\s*\|/;
}
sub directive_value_is_not_dev_null_and_pipe_and_syslog {
if (is_dev_null($_[0])) {
return 0;
}
return $_[0] !~ /^\s*(?:(?:\|)|(?:syslog(?::[a-zA-Z0-9]+)?))/;
}
# This is a hash keyed by directive name and the value is an array
# reference. The array element are
# array array
# index value
# 0 A string containing an integer that describes the element
# position(s) that contains the file or directory path.
# string =~ /^\d+/ a single element that contains a path
# string =~ /^-\d+/ multiple elements, first is abs(\d+)
# 1 1 if the paths the directive accepts can be absolute and
# relative, 0 if they can only be absolute
# 2 a subroutine reference to directive_value_is_not_dev_null,
# directive_value_is_not_dev_null_and_pipe or
# directive_value_is_not_dev_null_and_pipe_and_syslog.
my %directive_info = (
AccessConfig => ['0',
1,
\&directive_value_is_not_dev_null],
AuthDBGroupFile => ['0',
0,
\&directive_value_is_not_dev_null],
AuthDBMGroupFile => ['0',
0,
\&directive_value_is_not_dev_null],
AuthDBMUserFile => ['0',
0,
\&directive_value_is_not_dev_null],
AuthDBUserFile => ['0',
0,
\&directive_value_is_not_dev_null],
AuthDigestFile => ['0',
0,
\&directive_value_is_not_dev_null],
AgentLog => ['0',
0,
\&directive_value_is_not_dev_null_and_pipe],
AuthGroupFile => ['0',
1,
\&directive_value_is_not_dev_null],
AuthUserFile => ['0',
1,
\&directive_value_is_not_dev_null],
CacheRoot => ['0',
0,
\&directive_value_is_not_dev_null],
CookieLog => ['0',
1,
\&directive_value_is_not_dev_null],
CoreDumpDirectory => ['0',
0,
\&directive_value_is_not_dev_null],
CustomLog => ['0',
1,
\&directive_value_is_not_dev_null_and_pipe],
Directory => ['0',
0,
\&directive_value_is_not_dev_null],
DocumentRoot => ['0',
0,
\&directive_value_is_not_dev_null],
ErrorLog => ['0',
1,
\&directive_value_is_not_dev_null_and_pipe_and_syslog],
Include => ['0',
1,
\&directive_value_is_not_dev_null],
IncludeOptional => ['0',
1,
\&directive_value_is_not_dev_null],
LoadFile => ['-0',
1,
\&directive_value_is_not_dev_null],
LoadModule => ['1',
1,
\&directive_value_is_not_dev_null],
LockFile => ['0',
1,
\&directive_value_is_not_dev_null],
MMapFile => ['0',
0,
\&directive_value_is_not_dev_null],
MimeMagicFile => ['0',
1,
\&directive_value_is_not_dev_null],
PidFile => ['0',
1,
\&directive_value_is_not_dev_null],
RefererLog => ['0',
1,
\&directive_value_is_not_dev_null_and_pipe],
ResourceConfig => ['0',
1,
\&directive_value_is_not_dev_null],
RewriteLock => ['0',
0,
\&directive_value_is_not_dev_null],
ScoreBoardFile => ['0',
1,
\&directive_value_is_not_dev_null],
ScriptLog => ['0',
1,
\&directive_value_is_not_dev_null],
ServerRoot => ['0',
0,
\&directive_value_is_not_dev_null],
TransferLog => ['0',
1,
\&directive_value_is_not_dev_null_and_pipe],
TypesConfig => ['0',
1,
\&directive_value_is_not_dev_null]);
# Set up the three exported hashes using the information in
# %directive_info. Use lowercase directive names.
foreach my $key (keys %directive_info) {
my $ref = $directive_info{$key};
my $lc_key = lc($key);
my ($index, $abs_and_rel, $sub_ref) = @$ref;
if ($abs_and_rel) {
$directive_value_takes_rel_path{$lc_key} = $sub_ref;
}
$directive_value_takes_abs_path{$lc_key} = $sub_ref;
$directive_value_path_element_pos{$lc_key} = $index;
}
=head1 SEE ALSO
L<Apache::ConfigParser::Directive> and L<Tree::DAG_Node>.
=head1 AUTHOR
Blair Zajac <blair@orcaware.com>.
=head1 COPYRIGHT
Copyright (C) 2001-2005 Blair Zajac. All rights reserved. This
program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut
1;
( run in 2.457 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )