aboutsummaryrefslogtreecommitdiff
path: root/lib/Apache
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Apache')
-rw-r--r--lib/Apache/Inject.pm18
-rw-r--r--lib/Apache/Inject/Handler.pm11
2 files changed, 21 insertions, 8 deletions
diff --git a/lib/Apache/Inject.pm b/lib/Apache/Inject.pm
index 09bf18a..89c0db8 100644
--- a/lib/Apache/Inject.pm
+++ b/lib/Apache/Inject.pm
@@ -180,6 +180,18 @@ file, as well as the contents of the C<InjectHeader> and C<InjectFooter>
files, concatenates them intelligently and prints their combined
contents.
+=head1 CAVEATS
+
+Apache::Inject::Handler uses regular expressions to determine the
+proper location of the injected header. It supports all valid HTML.
+However, it does not take into account that embedded CSS and
+JavaScript code can contain strings that look like valid opening
+and closing HTML tags.
+
+On FreeBSD, you may need to enable the accf_http kernel module in
+order for the tests to work. Note that Apache::Inject works fine
+without the module; it is only the tests that require it.
+
=head1 DIAGNOSTICS
Apache::Inject and Apache::Inject::Handler log all errors and
@@ -220,12 +232,6 @@ cannot retrieve the current document root from Apache.
=back
-=head1 CAVEATS
-
-On FreeBSD, you may need to enable the accf_http kernel module in
-order for the tests to work. Note that Apache::Inject works fine
-without the module; it is only the tests that require it.
-
=head1 AUTHOR
John Ankarström, E<lt>john [at] ankarstrom.seE<gt>
diff --git a/lib/Apache/Inject/Handler.pm b/lib/Apache/Inject/Handler.pm
index 0e054e7..ae81fbb 100644
--- a/lib/Apache/Inject/Handler.pm
+++ b/lib/Apache/Inject/Handler.pm
@@ -12,8 +12,11 @@ use Apache2::RequestUtil ();
my $doc = qr{
\A
(?<head> \s*
+ ( <!-- .*? --> )? \s*
( <!doctype[^>]*> )? \s*
+ ( <!-- .*? --> )? \s*
( <html[^>]*> )? \s*
+ ( <!-- .*? --> )? \s*
( <head[^>]*> .*? </head> \s*
| ( <meta[^>]*> \s*
| <link[^>]*> \s*
@@ -21,12 +24,16 @@ my $doc = qr{
| <style[^>]*> .*? </style> \s*
| <script[^>]*> .*? </script> \s*
| <base[^>]*> \s*
+ | <!-- .*? --> \s*
)+
)?
- (<body[^>]*>)?
+ ( <!-- .*? --> )? \s*
+ ( <body[^>]*> )? \s*
)?
(?<body> .*? )
- (?<rest> </html> \s* )?
+ (?<rest> </html> \s*
+ ( <!-- .*? --> )? \s*
+ )?
\z
}xmsi;