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

mod_perl 2.0 documentation.

Copyright

mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 1.1.

Authors

The mod_perl development team and numerous contributors.