You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Richard Leopold <mo...@leo.0n3.org> on 2005/08/01 19:55:24 UTC
[mp2] custom configuration not initialised via SERVER_CREATE
MOIn !
The documentation explains how to do "Apache Server Configuration
Customization in Perl" and the SERVER_CREATE/DIR_CREATE mechanism
to set defaults.
But it only does work, if a customised directive would be be found
in the configuration. Just calling
Apache2::Module::add(__PACKAGE__, \@directives);
is not enough to create a initial configuration via the given
*_CREATE -method of __PACKAGE__
below I'll give you an example test.
Any suggestions or hints to get an initial configuration while
loading the __PACKAGE__ ? - or is it a bug ?
Regards - Richard
## my http.conf has the lines
PerlLoadModule kit::BaseConfig_XX
# remark/unremark the following line to show the effect ...
MOI_TestDefaultXX x
# lynx this location
<Location "/kit/XX">
SetHandler modperl
PerlResponseHandler kit::BaseConfig_XX
</Location>
## Here comes the test-module
package kit::BaseConfig_XX;
use 5.008;
use strict;
use warnings FATAL => 'all';
use Apache2::Module ();
use Apache2::CmdParms ();
use Apache2::ServerUtil ();
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::RequestUtil ();
use Apache2::Const -compile => qw(
OK
);
# ================================================
our $SRV_CFG = { Test_default => '_XX Hello server' };
our $DIR_CFG = { Test_default => '_XX Hello directory' };
my @directives = (
{
name => 'MOI_TestDefaultXX',
},
);
sub MOI_TestDefaultXX {
my($self, $parms, $arg) = @_;
my $key = 'TestDefaultXX';
$self->{_config}->{$key} = $arg;
unless ($parms->path) {
my $srv_cfg = Apache2::Module::get_config($self, $parms->server);
$srv_cfg->{_config}->{$key} = $arg;
}
return $self;
}
Apache2::Module::add(__PACKAGE__, \@directives);
# ================================================
sub SERVER_CREATE {
my($class, $parms) = @_;
my $default = eval '$' . $class . '::SRV_CFG' || {};
my $self = {
name => $class,
_config => $default,
};
return bless $self, $class;
}
sub DIR_CREATE {
my($class, $parms) = @_;
my $default = eval '$' . $class . '::DIR_CFG' || {};
my $self = {
name => $class,
_config => $default,
};
return bless $self, $class;
}
use Data::Dumper;
sub handler ($) {
my $r = shift;
my $srv_cfg = Apache2::Module::get_config(__PACKAGE__, $r->server());
my $dir_cfg = Apache2::Module::get_config(__PACKAGE__, $r->server(), $r->per_dir_config());
$r->content_type('text/plain');
$r->print( Dumper( $srv_cfg, $dir_cfg) );
return Apache2::Const::OK;
}
1;