diff options
Diffstat (limited to 'htetc/handler.pl')
-rw-r--r-- | htetc/handler.pl | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/htetc/handler.pl b/htetc/handler.pl new file mode 100644 index 000000000..94377cf34 --- /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; |