diff options
Diffstat (limited to 'htetc/handler.pl')
| -rw-r--r-- | htetc/handler.pl | 108 | 
1 files changed, 108 insertions, 0 deletions
| diff --git a/htetc/handler.pl b/htetc/handler.pl new file mode 100644 index 000000000..952d6203b --- /dev/null +++ b/htetc/handler.pl @@ -0,0 +1,108 @@ +#!/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 +      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; | 
