summaryrefslogtreecommitdiff
path: root/htetc/handler.pl
diff options
context:
space:
mode:
Diffstat (limited to 'htetc/handler.pl')
-rw-r--r--htetc/handler.pl111
1 files changed, 111 insertions, 0 deletions
diff --git a/htetc/handler.pl b/htetc/handler.pl
new file mode 100644
index 0000000..94377cf
--- /dev/null
+++ b/htetc/handler.pl
@@ -0,0 +1,111 @@
+#!/usr/bin/perl
+
+package HTML::Mason;
+
+use strict;
+use warnings;
+use FS::Mason qw( mason_interps );
+
+#use vars qw($r);
+
+# Bring in ApacheHandler, necessary for mod_perl integration.
+# Uncomment the second line (and comment the first) to use
+# Apache::Request instead of CGI.pm to parse arguments.
+use HTML::Mason::ApacheHandler;
+# use HTML::Mason::ApacheHandler (args_method=>'mod_perl');
+
+###use Module::Refresh;###
+
+# Create Mason objects
+
+my( $fs_interp, $rt_interp ) = mason_interps('apache');
+
+my $ah = new HTML::Mason::ApacheHandler (
+ interp => $fs_interp,
+ request_class => 'FS::Mason::Request',
+ args_method => 'CGI', #(and FS too)
+);
+
+# Activate the following if running httpd as root (the normal case).
+# Resets ownership of all files created by Mason at startup.
+#
+#chown (Apache->server->uid, Apache->server->gid, $interp->files_written);
+
+sub handler
+{
+ #($r) = @_;
+ my $r = shift;
+
+ # If you plan to intermix images in the same directory as
+ # components, activate the following to prevent Mason from
+ # evaluating image files as components.
+ #
+ #return -1 if $r->content_type && $r->content_type !~ m|^text/|i;
+
+ ###Module::Refresh->refresh;###
+
+ #$r->content_type('text/html; charset=utf-8');
+ $r->content_type('text/html; charset=iso-8859-1');
+ #eorar
+
+ my $headers = $r->headers_out;
+ $headers->{'Cache-control'} = 'no-cache';
+ #$r->no_cache(1);
+ $headers->{'Expires'} = '0';
+
+# $r->send_http_header;
+
+ if ( $r->filename =~ /\/rt\// ) { #RT
+
+ $ah->interp($rt_interp);
+
+ local $SIG{__WARN__};
+ local $SIG{__DIE__};
+
+ RT::Init();
+
+ # We don't need to handle non-text, non-xml items
+ return -1 if defined( $r->content_type )
+ && $r->content_type !~ m!(^text/|\bxml\b)!io;
+
+ } else {
+
+ local $SIG{__WARN__};
+ local $SIG{__DIE__};
+
+ RT::Init() if $RT::VERSION; #for lack of something else
+
+ #we don't want the RT error handlers under FS
+ {
+ no warnings 'uninitialized';
+ undef($SIG{__WARN__}) if defined($SIG{__WARN__});
+ undef($SIG{__DIE__}) if defined($SIG{__DIE__} );
+ }
+
+ $ah->interp($fs_interp);
+
+ }
+
+ my %session;
+ my $status;
+ eval { $status = $ah->handle_request($r); };
+#!!
+# if ( $@ ) {
+# $RT::Logger->crit($@);
+# }
+ warn $@ if $@;
+
+ undef %session;
+
+#!!
+# if ($RT::Handle->TransactionDepth) {
+# $RT::Handle->ForceRollback;
+# $RT::Logger->crit(
+#"Transaction not committed. Usually indicates a software fault. Data loss may have occurred"
+# );
+# }
+
+ $status;
+}
+
+1;