package Apache::Inject; use strict; use warnings; use Apache2::CmdParms (); use Apache2::Module (); use Apache2::Const qw/OR_LIMIT OR_AUTHCFG TAKE12/; my @directives = ( { name => 'Inject', func => __PACKAGE__.'::Inject', req_override => OR_LIMIT|OR_AUTHCFG, args_how => TAKE12, errmsg => 'Inject HeadFile[!] FootFile[!]' } ); Apache2::Module::add(__PACKAGE__, \@directives); sub Inject { my ($self, $parms, @args) = @_; # Validate arguments and construct corresponding directives my @vars; my @names = qw/InjectHead InjectFoot/; for (@args) { die 'Arguments to Inject directive cannot contain quotes' if /"/; push @vars, 'PerlSetVar ' . (shift @names) . ' ' . $_; } # Add relevant directives to current configuration $parms->add_config(['SetHandler perl-script', 'PerlResponseHandler Apache::Inject::Handler', @vars]); } 1; __END__ =head1 NAME Apache::Inject - Apache directive for injecting HTML headers and footers =head1 SYNOPSIS DocumentRoot /uar/local/www/apache24/data PerlModule Apache::Inject Inject head.html foot.html =head1 DESCRIPTION Apache::Inject is a mod_perl module that adds the Inject directive. It injects a header before the body and (optionally) a footer after the body of any requested HTML file. =cut