| Apache2::CmdParms - Perl API for Apache command parameters object |
add_configcheck_cmd_contextcmddirectiveinfomethod_is_limitedoverridepathpoolservertemp_pool
Apache2::CmdParms - Perl API for Apache command parameters object
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;
}
Apache2::CmdParms provides the Perl API for Apache command
parameters object.
Apache2::CmdParms provides the following functions and/or methods:
add_configDynamically add Apache configuration at request processing runtime:
$parms->add_config($lines);
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$lines (ARRAY ref)See also:
$s->add_config|docs::2.0::api::Apache2::ServerUtil/C_add_config_,
$r->add_config|docs::2.0::api::Apache2::RequestUtil/C_add_config_
check_cmd_contextCheck the current command against a context bitmask of forbidden contexts.
$error = $parms->check_cmd_context($check);
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$check ( Apache2::Const :context
constant|docs::2.0::api::Apache2::Const/C__context_> )$error ( string / undef )undef.
For example here is how to check whether a command is allowed in the
<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"
}
cmdThis module's command information
$cmd = $parms->cmd();
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$cmd
( Apache2::Command object|docs::2.0::api::Apache2::Command )
directiveThis command's directive object in the configuration tree
$directive = $parms->directive;
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$directive
( Apache2::Directive object|docs::2.0::api::Apache2::Directive )
infoThe extra information passed through cmd_data in
Apache2::Module::add()|docs::2.0::api::Apache2::Module/C_add_.
$info = $parms->info;
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$info ( string )cmd_data
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 $info will either be 'One' or 'Two' depending
on whether the directive was called as MyDirective1 or
MyDirective2.
method_is_limitedDiscover if a method is <Limit>ed in the current scope
$is_limited = $parms->method_is_limited($method);
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$method (string)$is_limited ( boolean )For example, to check if the GET method is being
<Limit>ed in the current scope, do:
if ($parms->method_is_limited('GET') {
die "...";
}
overrideWhich allow-override bits are set (AllowOverride directive)
$override = $parms->override;
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$override ( bitmask )Apache2::Const :override
constants|docs::2.0::api::Apache2::Const/C__override_>.
For example to check that the AllowOverride's AuthConfig and
FileInfo 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 "...";
}
pathThe current pathname/location/match of the block this command is in
$path = $parms->path;
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$path ( string / undef )undef is returned.
For example for a container block:
<Location /foo> ... </Location>
'/foo' will be returned.
poolPool associated with this command
$p = $parms->pool;
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$p
( APR::Pool object|docs::2.0::api::APR::Pool )
serverThe (vhost) server this command was defined in httpd.conf
$s = $parms->server;
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$s
( Apache2::Server object|docs::2.0::api::Apache2::ServerRec )
temp_poolPool for scratch memory; persists during configuration, but destroyed before the first request is served.
$temp_pool = $parms->temp_pool;
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$temp_pool
( APR::Pool object|docs::2.0::api::APR::Pool )Most likely you shouldn't use this pool object, unless you know what
you are doing. Use $parms->pool|/C_pool_ instead.
Apache2::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.
contextGet context containing pointers to modules' per-dir config structures.
$context = $parms->context;
$parms
( Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms )$newval
( Apache2::ConfVector object|docs::2.0::api::Apache2::ConfVector )
mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 2.0.
The mod_perl development team and numerous contributors.
| Apache2::CmdParms - Perl API for Apache command parameters object |