aboutsummaryrefslogtreecommitdiff
path: root/lib/Apache/Inject.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Apache/Inject.pm')
-rw-r--r--lib/Apache/Inject.pm58
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/Apache/Inject.pm b/lib/Apache/Inject.pm
new file mode 100644
index 0000000..a9f1a61
--- /dev/null
+++ b/lib/Apache/Inject.pm
@@ -0,0 +1,58 @@
+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
+<Directory /usr/local/www/apache24/data>
+ Inject head.html foot.html
+</Directory>
+
+=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
+