diff options
Diffstat (limited to 'htetc')
-rw-r--r-- | htetc/freeside-base1.99.conf | 24 | ||||
-rw-r--r-- | htetc/freeside-base1.conf | 21 | ||||
-rw-r--r-- | htetc/freeside-base2.conf | 24 | ||||
-rw-r--r-- | htetc/freeside-rt.conf | 36 | ||||
-rw-r--r-- | htetc/handler.pl | 108 |
5 files changed, 213 insertions, 0 deletions
diff --git a/htetc/freeside-base1.99.conf b/htetc/freeside-base1.99.conf new file mode 100644 index 000000000..ce3c3f240 --- /dev/null +++ b/htetc/freeside-base1.99.conf @@ -0,0 +1,24 @@ +PerlModule Apache::compat + +#PerlModule Apache::DBI + +PerlModule HTML::Mason +PerlSetVar MasonArgsMethod CGI +PerlModule HTML::Mason::ApacheHandler + +PerlRequire "%%%MASON_HANDLER%%%" + +#Locale::SubCountry +AddDefaultCharset ISO-8859-1 + +<Directory %%%FREESIDE_DOCUMENT_ROOT%%%> +AuthName Freeside +AuthType Basic +AuthUserFile %%%FREESIDE_CONF%%%/htpasswd +require valid-user +<Files ~ (\.cgi|\.html)> +SetHandler perl-script +PerlHandler HTML::Mason +</Files> +</Directory> + diff --git a/htetc/freeside-base1.conf b/htetc/freeside-base1.conf new file mode 100644 index 000000000..7b8d9da68 --- /dev/null +++ b/htetc/freeside-base1.conf @@ -0,0 +1,21 @@ +#PerlModule Apache::DBI + +PerlModule HTML::Mason + +#Locale::SubCountry +AddDefaultCharset ISO-8859-1 + +<Directory %%%FREESIDE_DOCUMENT_ROOT%%%> +AuthName Freeside +AuthType Basic +AuthUserFile %%%FREESIDE_CONF%%%/htpasswd +require valid-user +<Files ~ (\.cgi|\.html)> +AddHandler perl-script .cgi .html +PerlHandler HTML::Mason +</Files> +<Perl> +require "%%%MASON_HANDLER%%%"; +</Perl> +</Directory> + diff --git a/htetc/freeside-base2.conf b/htetc/freeside-base2.conf new file mode 100644 index 000000000..1cd1cc550 --- /dev/null +++ b/htetc/freeside-base2.conf @@ -0,0 +1,24 @@ +PerlModule Apache2::compat + +#PerlModule Apache::DBI + +PerlModule HTML::Mason +PerlSetVar MasonArgsMethod CGI +PerlModule HTML::Mason::ApacheHandler + +PerlRequire "%%%MASON_HANDLER%%%" + +#Locale::SubCountry +AddDefaultCharset ISO-8859-1 + +<Directory %%%FREESIDE_DOCUMENT_ROOT%%%> +AuthName Freeside +AuthType Basic +AuthUserFile %%%FREESIDE_CONF%%%/htpasswd +require valid-user +<Files ~ (\.cgi|\.html)> +SetHandler perl-script +PerlHandler HTML::Mason +</Files> +</Directory> + diff --git a/htetc/freeside-rt.conf b/htetc/freeside-rt.conf new file mode 100644 index 000000000..9b5ccf807 --- /dev/null +++ b/htetc/freeside-rt.conf @@ -0,0 +1,36 @@ +<Directory %%%FREESIDE_DOCUMENT_ROOT%%%/rt/NoAuth> +<Limit GET POST> +allow from all +Satisfy any +SetHandler perl-script +PerlHandler HTML::Mason +</Limit> +</Directory> + +<Directory %%%FREESIDE_DOCUMENT_ROOT%%%/rt/REST/1.0/NoAuth> +<Limit GET POST> +allow from all +Satisfy any +SetHandler perl-script +PerlHandler HTML::Mason +</Limit> +</Directory> + +<DirectoryMatch "^%%%FREESIDE_DOCUMENT_ROOT%%%/rt/.*NoAuth/images"> +SetHandler None +</DirectoryMatch> + +<Directory %%%FREESIDE_DOCUMENT_ROOT%%%/rt/Ticket/Attachment> +SetHandler perl-script +PerlHandler HTML::Mason +</Directory> + +<Directory %%%FREESIDE_DOCUMENT_ROOT%%%/rt/Search> +SetHandler perl-script +PerlHandler HTML::Mason +</Directory> + +<DirectoryMatch "^%%%FREESIDE_DOCUMENT_ROOT%%%/rt/RTx/Statistics/.*/Elements> +SetHandler perl-script +PerlHandler HTML::Mason +</DirectoryMatch> 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; |