man Apache2::CmdParms () - Perl API for Apache command parameters object
NAME
Apache2::CmdParms - Perl API for Apache command parameters object
Synopsis
use Apache2::CmdParms (); use Apache2::Module (); use Apache2::Const -compile => qw(NOT_IN_LOCATION);
my @directives = ( { name => 'MyDirective', cmd_data => 'some extra data', }, );
Apache2::Module::add(__PACKAGE__, \@directives);
sub MyDirective { my ($self, $parms, $args) = @_;
# push config $parms->add_config(['ServerTokens off']);
# this command's command object $cmd = $parms->cmd;
# check the current command's context $error = $parms->check_cmd_context(Apache2::Const::NOT_IN_LOCATION);
# this command's context $context = $parms->context;
# this command's directive object $directive = $parms->directive;
# the extra information passed thru cmd_data to # Apache2::Module::add() $info = $parms->info;
# which methods are <Limit>ed ? $is_limited = $parms->method_is_limited('GET');
# which allow-override bits are set $override = $parms->override;
# the path this command is being invoked in $path = $parms->path;
# this command's pool $p = $parms->pool;
# this command's configuration time pool $p = $parms->temp_pool; }
Description
CWApache2::CmdParms provides the Perl API for Apache command parameters object.
API
CWApache2::CmdParms provides the following functions and/or methods: Dynamically add Apache configuration at request processing runtime:
$parms->add_config($lines);An ARRAY reference containing configuration lines per element, without the new line terminators.
- ret: no return value
- since: 2.0.00
See also: CW$s->add_config, CW$r->add_config Check the current command against a context bitmask of forbidden contexts.
$error = $parms->check_cmd_context($check);the context to check against. If the context is forbidden, this method returns a textual description of why it was forbidden. If the context is permitted, this method returns CWundef.
- since: 2.0.00
For example here is how to check whether a command is allowed in the CW<Location> container:
use Apache2::Const -compile qw(NOT_IN_LOCATION); if (my $error = $parms->check_cmd_context(Apache2::Const::NOT_IN_LOCATION)) { die "directive ... not allowed in <Location> context" }This module's command information
$cmd = $parms->cmd();
- since: 2.0.00
- This command's directive object in the configuration tree
$directive = $parms->directive;The current directive node in the configuration tree
- since: 2.0.00
- The extra information passed through CWcmd_data in CWCIApache2::Module::add()CW.
$info = $parms->info;The string passed in CWcmd_data
- since: 2.0.00
For example here is how to pass arbitrary information to a directive subroutine:
my @directives = ( { name => 'MyDirective1', func => \&MyDirective, cmd_data => 'One', }, { name => 'MyDirective2', func => \&MyDirective, cmd_data => 'Two', }, ); Apache2::Module::add(__PACKAGE__, \@directives);
sub MyDirective { my ($self, $parms, $args) = @_; my $info = $parms->info; }
In this example CW$info will either be CW'One' or CW'Two' depending on whether the directive was called as MyDirective1 or MyDirective2. Discover if a method is <Limit>ed in the current scope
$is_limited = $parms->method_is_limited($method);The name of the method to check for
- since: 2.0.00
For example, to check if the CWGET method is being CW<Limit>ed in the current scope, do:
if ($parms->method_is_limited('GET') { die "..."; }Which allow-override bits are set (CWAllowOverride directive)
$override = $parms->override;the allow-override bits bitmask, which can be tested against CWApache2::Const :override constants.
- since: 2.0.00
For example to check that the CWAllowOverride's CWAuthConfig and CWFileInfo options are enabled for this command, do:
use Apache2::Const -compile qw(:override); $wanted = Apache2::Const::OR_AUTHCFG | Apache2::Const::OR_FILEINFO; $masked = $parms->override & $wanted; unless ($wanted == $masked) { die "..."; }The current pathname/location/match of the block this command is in
$path = $parms->path;If configuring for a block like <Location>, <LocationMatch>, <Directory>, etc., the pathname part of that directive. Otherwise, CWundef is returned.
- since: 2.0.00
For example for a container block:
<Location /foo> ... </Location>
'/foo' will be returned. Pool associated with this command
$p = $parms->pool;
- since: 2.0.00
- The (vhost) server this command was defined in httpd.conf
$s = $parms->server;
- since: 2.0.00
- Pool for scratch memory; persists during configuration, but destroyed before the first request is served.
$temp_pool = $parms->temp_pool;
- since: 2.0.00
Most likely you shouldn't use this pool object, unless you know what you are doing. Use CW$parms->pool instead.
Unsupported API
CWApache2::CmdParms also provides auto-generated Perl interface for a few other methods which aren't tested at the moment and therefore their API is a subject to change. These methods will be finalized later as a need arises. If you want to rely on any of the following methods please contact the the mod_perl development mailing list so we can help each other take the steps necessary to shift the method to an officially supported API. Get context containing pointers to modules' per-dir config structures.
$context = $parms->context;Returns the commands' per-dir config structures
- since: 2.0.00
See Also
mod_perl 2.0 documentation.
Copyright
mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 2.0.
Authors
The mod_perl development team and numerous contributors.