Apache-ConfigParser
view release on metacpan or search on metacpan
lib/Apache/ConfigParser/Directive.pod view on Meta::CPAN
=item %directive_value_takes_abs_path
This hash is keyed by the lowercase version of a directive name. This
hash is keyed by all directives that accept a file or directory path
value as its first value array element. The hash value is a subroutine
reference to pass the value array element containing the file,
directory, pipe or syslog entry to. If a hash entry exists for a
particular entry, then the directive name can take either a relative
or absolute path to either a file or directory. The hash does not
distinguish between directives that take only filenames, only
directories or both, and it does not distinguish if the directive
takes only absolute, only relative or both types of paths.
The hash value for the lowercase directive name is a subroutine
reference. The subroutine returns 1 if its only argument is a path
and 0 otherwise. The /dev/null equivalent (C<< File::Spec->devnull >>)
for the operating system being used is not counted as a path, since on
some operating systems the /dev/null equivalent is not a filename,
such as nul on Windows.
The subroutine actually does not check if its argument is a path,
rather it checks if the argument does not match one of the other
possible non-path values for the specific directive because different
operating systems have different path formats, such as Unix, Windows
and Macintosh. For example, ErrorLog can take a filename, such as
ErrorLog /var/log/httpd/error_log
or a piped command, such as
ErrorLog "| cronolog /var/log/httpd/%Y/%m/%d/error.log"
or a syslog entry of the two forms:
ErrorLog syslog
ErrorLog syslog:local7
The particular subroutine for ErrorLog checks if the value is not
equal to C<< File::Spec->devnull >>, does not begin with a | or does not
match syslog(:[a-zA-Z0-9]+)?.
These subroutines do not remove any "'s before checking on the type of
value.
This hash is used by C<value_is_path> and C<orig_value_is_path>.
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.
AccessConfig
AgentLog check for "| prog"
AuthDBGroupFile
AuthDBMGroupFile
AuthDBMUserFile
AuthDBUserFile
AuthDigestFile
AuthGroupFile
AuthUserFile
CacheRoot
CookieLog
CoreDumpDirectory
CustomLog check for "| prog"
Directory
DocumentRoot
ErrorLog check for "| prog", or syslog or syslog:facility
Include
IncludeOptional
LoadFile
LoadModule
LockFile
MimeMagicFile
MMapFile
PidFile
RefererLog check for "| prog"
ResourceConfig
RewriteLock
ScoreBoardFile
ScriptLog
ServerRoot
TransferLog check for "| prog"
TypesConfig
=item %directive_value_takes_rel_path
This hash is keyed by the lowercase version of a directive name. This
hash contains only those directive names that can accept both relative
and absolute file or directory names. The hash value is a subroutine
reference to pass the value array element containing the file,
directory, pipe or syslog entry to. The hash does not distinguish
between directives that take only filenames, only directories or both.
The hash value for the lowercase directive name is a subroutine
reference. The subroutine returns 1 if its only argument is a path
and 0 otherwise. The /dev/null equivalent (C<< File::Spec->devnull >>)
for the operating system being used is not counted as a path, since on
some operating systems the /dev/null equivalent is not a filename,
such as nul on Windows.
The subroutine actually does not check if its argument is a path,
rather it checks if the argument does not match one of the other
possible non-path values for the specific directive because different
operating systems have different path formats, such as Unix, Windows
and Macintosh. For example, ErrorLog can take a filename, such as
ErrorLog /var/log/httpd/error_log
or a piped command, such as
ErrorLog "| cronolog /var/log/httpd/%Y/%m/%d/error.log"
or a syslog entry of the two forms:
ErrorLog syslog
ErrorLog syslog:local7
The particular subroutine for ErrorLog checks if the value is not
equal to C<< File::Spec->devnull >>, does not begin with a | or does not
match syslog(:[a-zA-Z0-9]+)?.
These subroutines do not remove any "'s before checking on the type of
value.
This hash is used by C<value_is_rel_path> and
C<orig_value_is_rel_path>.
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',
( run in 2.222 seconds using v1.01-cache-2.11-cpan-140bd7fdf52 )