NAME
Apache::Directive - Perl API for manipulating Apache configuration tree
Synopsis
use Apache::Directive ();
my $tree = Apache::Directive->conftree;
my $documentroot = $tree->lookup('DocumentRoot');
my $vhost = $tree->lookup('VirtualHost', 'localhost:8000');
my $servername = $vhost->{'ServerName'};
print $tree->as_string;
use Data::Dumper;
print Dumper($tree->as_hash);
my $node = $tree;
while ($node) {
#do something with $node
if (my $kid = $node->first_child) {
$node = $kid;
}
elsif (my $next = $node->next) {
$node = $next;
}
else {
if (my $parent = $node->parent) {
$node = $parent->next;
}
else {
$node = undef;
}
}
}
Description
Apache::Directive
allows its users to search and navigate the internal Apache configuration.
Internally, this information is stored in a tree structure. Each node in the tree has a reference to its parent (if it's not the root), its first child (if any), and to its next sibling.
Class Methods
conftree()
Returns the root of the configuration tree.
$tree = Apache::Directive->conftree();
- arg1:
Apache::Directive
(class name) - ret:
$tree
(Apache::Directive
)
Object Methods
as_hash()
Returns a hash representation of the configuration tree, in a format suitable for inclusion in the <Perl> sections.
$config_hash = $conftree->as_hash();
- arg1:
$conftree
(Apache::Directive
) -
The config tree to stringify
- ret:
$config_hash
(HASH)
as_string()
Returns a string representation of the configuration tree, in httpd.conf format.
$string = $conftree->as_string();
- arg1:
$conftree
(Apache::Directive
) -
The config tree to stringify
- ret:
$string
(string)
lookup()
Returns node(s) matching a certain value.
$node = $conftree->lookup($directive, $args);
@nodes = $conftree->lookup($directive, $args);
- arg1:
$conftree
(Apache::Directive
) -
The config tree to stringify
- arg2:
$directive
(string) - opt arg3:
args
(string) - ret:
$string
(string) -
In list context, it will return all matching nodes.
In scalar context, it will return only the first matching node.
If called with only
$directive
value, this will return all nodes from that directive. For example:@Alias = $conftree->lookup('Alias');
would return all nodes for Alias directives.
If called with an extra
$args
argument, this will return only nodes where both the directive and the args matched. For example:$VHost = $tree->lookup('VirtualHost', '_default_:8000');
If called with only one $directive
value, this will return all nodes from that directive:
@Alias = $tree->lookup('Alias');
Would return all nodes for Alias directives.
If called with an extra $args
argument, this will return only nodes where both the directive and the args matched:
$VHost = $tree->lookup('VirtualHosts', '_default_:8000');
walk_config
META: Autogenerated - needs to be reviewed/completed
Walk a config tree and setup the server's internal structures
$ret = $conftree->walk_config($cmdparms, $section_vector);
- arg1:
$conftree
(Apache::Directive
) -
The config tree to walk
- arg2:
$cmdparms
(Apache::CmdParms
) -
The cmd_parms to pass to all functions
- arg3:
$section_vector
(Apache::ConfVector
) -
The per-section config vector.
- ret:
$ret
(string) -
Error string on error,
undef
otherwise
directive
Returns the name of the directive in $node
.
$name = $node->directive();
- arg1:
$node
(Apache::Directive
) - ret:
$directive
(string)
args
The arguments for the current directive, stored as a space separated list
$args = $node->args();
- arg1:
$node
(Apache::Directive
) - ret:
$args
(string)
next
The next directive node in the tree
$next_node = $node->next();
- arg1:
$node
(Apache::Directive
) - ret:
$next_node
(Apache::Directive
) -
Returns the next sibling of
$node
,undef
if there is none
first_child
The first child node of this directive
$subtree = $node->first_child;
- arg1:
$node
(Apache::Directive
) - ret:
$child_node
(Apache::Directive
) -
Returns the first child node of
$node
,undef
if there is none
parent
META: Autogenerated - needs to be reviewed/completed
The parent node of this directive
$parent_node = $node->parent();
- arg1:
$node
(Apache::Directive
) - ret:
parent_node
(Apache::Directive
) -
Returns the parent of
$node
,undef
if this node is the root node
data
META: Autogenerated - needs to be reviewed/completed
directive's module can store add'l data here
$ret = $conftree->data($newval);
- arg1:
$conftree
(Apache::Directive
) - arg2:
$newval
XXX - ret: XXX
filename
Returns the filename the configuration node was created from
$filename = $node->filename();
- arg1:
$node
(Apache::Directive
) - ret:
$filename
(string)
line_num
Returns the line number in filename
this node was created from
$lineno = $node->line_num();
- arg1:
$node
(Apache::Directive
) - arg2:
$lineno
(integer)
See Also
Copyright
mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 1.1.