[Rt-commit] rt branch, webmux-removal, created. rt-3.9.6-232-g9b8baf5

Chia-liang Kao clkao at bestpractical.com
Tue Nov 30 05:34:59 EST 2010


The branch, webmux-removal has been created
        at  9b8baf5b51723fdbaa17c770d0dc795d285e2e44 (commit)

- Log -----------------------------------------------------------------
commit e1c6d4a8cf29bccdc3e37022ddbf67ee9cbfbb63
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Sat Nov 27 11:07:18 2010 +0800

    Remove webmux and friends

diff --git a/Makefile.in b/Makefile.in
index 17ca548..14517ba 100755
--- a/Makefile.in
+++ b/Makefile.in
@@ -126,16 +126,6 @@ RT_READABLE_DIR_MODE	=	0755
 
 
 
-# RT_MODPERL_HANDLER is the mason handler script for mod_perl
-RT_MODPERL_HANDLER	=	webmux.pl
-# RT_SPEEDYCGI_HANDLER is the mason handler script for SpeedyCGI
-RT_SPEEDYCGI_HANDLER	=	mason_handler.scgi
-# RT_FASTCGI_HANDLER is the mason handler script for FastCGI
-RT_FASTCGI_HANDLER	=	mason_handler.fcgi
-# RT_FASTCGI_SERVER is the FastCGI server
-RT_FASTCGI_SERVER	=	fastcgi_server
-# RT_WIN32_FASTCGI_HANDLER is the mason handler script for FastCGI
-RT_WIN32_FASTCGI_HANDLER	=	mason_handler.svc
 # RT's CLI
 RT_CLI_BIN		=	rt
 # RT's mail gateway
@@ -145,18 +135,9 @@ RT_CRON_BIN		=	rt-crontool
 
 
 
-BINARIES		=	$(RT_MODPERL_HANDLER) \
-				$(RT_MAILGATE_BIN) \
+BINARIES		=	$(RT_MAILGATE_BIN) \
 				$(RT_CLI_BIN) \
-				$(RT_CRON_BIN) \
-				$(RT_SPEEDYCGI_HANDLER) \
-				$(RT_FASTCGI_HANDLER) \
-				$(RT_FASTCGI_SERVER) \
-				$(RT_WIN32_FASTCGI_HANDLER)
-
-
-
-
+				$(RT_CRON_BIN)
 
 SYSTEM_BINARIES		=	rt-attributes-viewer \
 				rt-clean-sessions \
diff --git a/bin/fastcgi_server.in b/bin/fastcgi_server.in
deleted file mode 100644
index e120758..0000000
--- a/bin/fastcgi_server.in
+++ /dev/null
@@ -1,234 +0,0 @@
-#!@PERL@
-# BEGIN BPS TAGGED BLOCK {{{
-#
-# COPYRIGHT:
-#
-# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-#                                          <jesse at bestpractical.com>
-#
-# (Except where explicitly superseded by other copyright notices)
-#
-#
-# LICENSE:
-#
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-#
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 or visit their web page on the internet at
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-#
-#
-# CONTRIBUTION SUBMISSION POLICY:
-#
-# (The following paragraph is not intended to limit the rights granted
-# to you to modify and distribute this software under the terms of
-# the GNU General Public License and is only of importance to you if
-# you choose to contribute your changes and enhancements to the
-# community by submitting them to Best Practical Solutions, LLC.)
-#
-# By intentionally submitting any modifications, corrections or
-# derivatives to this work, or any other work intended for use with
-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-# you are the copyright holder for those contributions and you grant
-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-# royalty-free, perpetual, license to use, copy, create derivative
-# works based on those contributions, and sublicense and distribute
-# those contributions and any derivatives thereof.
-#
-# END BPS TAGGED BLOCK }}}
-=head1 NAME
-
-fastcgi_server - external FastCGI server for RT
-
-=head1 USAGE
-
-    # get help
-    fastcgi_server -h
-
-    # start a server using defaults
-    fastcgi_server
-
-    # start server with custom option
-    fastcgi_server --socket /path/to/socket -n 5
-    fastcgi_server --port 12345 -n 5
-
-=head1 DESCRIPTION
-
-This is a forking external FastCGI server for RT, it can be used
-with apache and other servers supporting FastCGI technology.
-
-An advantage is lower memory usage because of sharing memory
-between process. It's easier to setup this with nginx and other
-servers that can not maintain pool of fastcgi servers, apache
-can do this.
-
-Disadvantage is that you have to start this server yourself and
-monitor it, web servers wouldn't be able to restart it on crash.
-
-=head1 OPTIONS
-
-=over 4
-
-=item -h, --help - get help
-
-=item -n, --nprocesses - number of processes to start, by default 10
-
-=item -s, --socket - socket path, by default F<RT/var/path/fastcgi.sock>
-usually F</opt/rt3/var/fastcgi.sock>.
-
-=item -p, --port - port to use instead of socket, by default socket is
-used.
-
-=item --pidfile - pid file path, by default F<RT/var/path/fastcgi.pid>.
-
-=back
-
-=head1 SERVER CONFIGURATION
-
-=head2 nginx
-
-Below you can find example of minimal config for nginx to run RT
-with this FastCGI server. It's not ideal, but a good enough start.
-
-    worker_processes  1;
-    events { worker_connections  1024; }
-
-    pid         /opt/rt3/var/nginx/server.pid;
-    error_log   /opt/rt3/var/nginx/error.log debug;
-
-    http {
-        access_log  /opt/rt3/var/nginx/access.log;
-
-        server {
-            listen       8080;
-            server_name  localhost;
-
-            location / {
-                root           /opt/rt3/share/html;
-                fastcgi_pass   unix:/opt/rt3/var/fastcgi.sock;
-
-                fastcgi_param  QUERY_STRING       $query_string;
-                fastcgi_param  REQUEST_METHOD     $request_method;
-                fastcgi_param  CONTENT_TYPE       $content_type;
-                fastcgi_param  CONTENT_LENGTH     $content_length;
-                fastcgi_param  PATH_INFO          $fastcgi_script_name;
-            }
-
-            location /NoAuth/images/ {
-                alias   /opt/rt3/share/html/NoAuth/images/;
-            }
-        }
-    }
-
-=head1 lighttpd
-
-Server config:
-
-    server.name = "localhost"
-    server.port = 80
-
-    server.username  = "rt_web_user"
-    server.groupname = "rt_web_group"
-
-    server.pid-file = "/opt/rt3/var/lighthttpd/server.pid"
-    server.errorlog = "/opt/rt3/var/lighthttpd/error.log"
-
-    server.document-root = "/opt/rt3/share/html"
-
-    server.modules = ( "mod_fastcgi" )
-    fastcgi.server = (
-        "/" => ((
-            "socket" => "/opt/rt3/var/fastcgi.sock",
-            "check-local" => "disable",
-            "fix-root-scriptname" => "enable",
-        ))
-    )
-
-=cut
-
-
-use strict;
-use warnings;
-no warnings qw(once);
-
-package RT::Interface::Web::FCGI::Server;
-use base qw(FCGI::ProcManager);
-
-package main;
-
-use Getopt::Long;
-
-my %opt = (
-    help       => 0,
-    socket     => '',
-    port       => 0,
-    nprocesses => 10,
-    pidfile    => '',
-);
-
-GetOptions(
-    'h|help!'        => \$opt{'help'},
-    's|socket=s'     => \$opt{'socket'},
-    'p|port=s'       => \$opt{'port'},
-    'n|nprocesses=s' => \$opt{'nprocesses'},
-    'pidfile=s'      => \$opt{'pidfile'},
-);
-
-if ( $opt{'help'} ) {
-    require Pod::Usage;
-    Pod::Usage::pod2usage(
-        -message => "",
-        -exitval => $opt{'help'}? 0 : 1,
-        -verbose => 99,
-        -sections => $opt{'help'}? 'NAME|USAGE|DESCRIPTION|OPTIONS' : 'NAME|USAGE',
-    );
-}
-
-$ENV{'RT_WEBMUX_HEAVY_LOAD'} = 1;
-use File::Basename;
-require (dirname(__FILE__) .'/webmux.pl');
-
-unless ( $opt{'socket'} || $opt{'port'} ) {
-    require File::Spec;
-    $opt{'socket'} = File::Spec->catfile($RT::VarPath, 'fastcgi.sock');
-}
-elsif ( $opt{'port'} ) {
-    $opt{'socket'} = ':'. $opt{'port'};
-}
-$ENV{'FCGI_SOCKET_PATH'} = $opt{'socket'};
-
-$opt{'pidfile'} ||= File::Spec->catfile($RT::VarPath, 'fastcgi.pid');
-
-require CGI::Fast;
-
-my $proc_manager = RT::Interface::Web::FCGI::Server->new({
-    n_processes => $opt{'nprocesses'} || 10,
-    pid_fname   => $opt{'pidfile'},
-});
-
-$proc_manager->pm_manage();
-
-while ( my $cgi = CGI::Fast->new ) {
-    $proc_manager->pm_pre_dispatch;
-
-    $ENV{'PATH'}   = '/bin:/usr/bin';
-    $ENV{'CDPATH'} = '' if defined $ENV{'CDPATH'};
-    $ENV{'SHELL'}  = '/bin/sh' if defined $ENV{'SHELL'};
-    $ENV{'ENV'}    = '' if defined $ENV{'ENV'};
-    $ENV{'IFS'}    = '' if defined $ENV{'IFS'};
-
-    RT::Interface::Web::Handler->HandleRequest($cgi);
-    $proc_manager->pm_post_dispatch;
-}
-
-1;
diff --git a/bin/mason_handler.fcgi.in b/bin/mason_handler.fcgi.in
deleted file mode 100755
index e4040bc..0000000
--- a/bin/mason_handler.fcgi.in
+++ /dev/null
@@ -1,72 +0,0 @@
-#!@PERL@
-# BEGIN BPS TAGGED BLOCK {{{
-#
-# COPYRIGHT:
-#
-# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-#                                          <jesse at bestpractical.com>
-#
-# (Except where explicitly superseded by other copyright notices)
-#
-#
-# LICENSE:
-#
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-#
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 or visit their web page on the internet at
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-#
-#
-# CONTRIBUTION SUBMISSION POLICY:
-#
-# (The following paragraph is not intended to limit the rights granted
-# to you to modify and distribute this software under the terms of
-# the GNU General Public License and is only of importance to you if
-# you choose to contribute your changes and enhancements to the
-# community by submitting them to Best Practical Solutions, LLC.)
-#
-# By intentionally submitting any modifications, corrections or
-# derivatives to this work, or any other work intended for use with
-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-# you are the copyright holder for those contributions and you grant
-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-# royalty-free, perpetual, license to use, copy, create derivative
-# works based on those contributions, and sublicense and distribute
-# those contributions and any derivatives thereof.
-#
-# END BPS TAGGED BLOCK }}}
-use strict;
-use warnings;
-no warnings qw(once);
-
-use File::Basename;
-require (dirname(__FILE__) .'/webmux.pl');
-
-# Enter CGI::Fast mode, which should also work as a vanilla CGI script.
-require CGI::Fast;
-
-while ( my $cgi = CGI::Fast->new ) {
-    # the whole point of fastcgi requires the env to get reset here..
-    # So we must squash it again
-    $ENV{'PATH'}   = '/bin:/usr/bin';
-    $ENV{'CDPATH'} = '' if defined $ENV{'CDPATH'};
-    $ENV{'SHELL'}  = '/bin/sh' if defined $ENV{'SHELL'};
-    $ENV{'ENV'}    = '' if defined $ENV{'ENV'};
-    $ENV{'IFS'}    = '' if defined $ENV{'IFS'};
-
-    RT::Interface::Web::Handler->HandleRequest($cgi);
-
-}
-
-1;
diff --git a/bin/mason_handler.scgi.in b/bin/mason_handler.scgi.in
deleted file mode 100755
index b229fa1..0000000
--- a/bin/mason_handler.scgi.in
+++ /dev/null
@@ -1,61 +0,0 @@
-#!@SPEEDY_BIN@
-# BEGIN BPS TAGGED BLOCK {{{
-#
-# COPYRIGHT:
-#
-# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-#                                          <jesse at bestpractical.com>
-#
-# (Except where explicitly superseded by other copyright notices)
-#
-#
-# LICENSE:
-#
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-#
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 or visit their web page on the internet at
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-#
-#
-# CONTRIBUTION SUBMISSION POLICY:
-#
-# (The following paragraph is not intended to limit the rights granted
-# to you to modify and distribute this software under the terms of
-# the GNU General Public License and is only of importance to you if
-# you choose to contribute your changes and enhancements to the
-# community by submitting them to Best Practical Solutions, LLC.)
-#
-# By intentionally submitting any modifications, corrections or
-# derivatives to this work, or any other work intended for use with
-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-# you are the copyright holder for those contributions and you grant
-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-# royalty-free, perpetual, license to use, copy, create derivative
-# works based on those contributions, and sublicense and distribute
-# those contributions and any derivatives thereof.
-#
-# END BPS TAGGED BLOCK }}}
-package RT::Mason;
-
-use warnings;
-use strict;
-use File::Basename;
-
-require (dirname(__FILE__) . '/webmux.pl');
-
-require CGI;
-
-my $cgi = CGI->new;
-RT::Interface::Web::Handler->HandleRequest($cgi);
-1;
diff --git a/bin/mason_handler.svc.in b/bin/mason_handler.svc.in
deleted file mode 100755
index 097b64a..0000000
--- a/bin/mason_handler.svc.in
+++ /dev/null
@@ -1,251 +0,0 @@
-#!@PERL@
-# BEGIN BPS TAGGED BLOCK {{{
-#
-# COPYRIGHT:
-#
-# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-#                                          <jesse at bestpractical.com>
-#
-# (Except where explicitly superseded by other copyright notices)
-#
-#
-# LICENSE:
-#
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-#
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 or visit their web page on the internet at
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-#
-#
-# CONTRIBUTION SUBMISSION POLICY:
-#
-# (The following paragraph is not intended to limit the rights granted
-# to you to modify and distribute this software under the terms of
-# the GNU General Public License and is only of importance to you if
-# you choose to contribute your changes and enhancements to the
-# community by submitting them to Best Practical Solutions, LLC.)
-#
-# By intentionally submitting any modifications, corrections or
-# derivatives to this work, or any other work intended for use with
-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-# you are the copyright holder for those contributions and you grant
-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-# royalty-free, perpetual, license to use, copy, create derivative
-# works based on those contributions, and sublicense and distribute
-# those contributions and any derivatives thereof.
-#
-# END BPS TAGGED BLOCK }}}
-=head1 NAME
-
-mason_handler.svc - Win32 IIS Service handler for RT
-
-=head1 SYNOPSIS
-
-    perl mason_handler.svc --install	# install as service
-    perl mason_handler.svc --deinstall	# deinstall this service
-    perl mason_handler.svc --help	# show this help
-    perl mason_handler.svc 		# launch handler from command line
-
-=head1 DESCRIPTION
-
-This script manages a stand-alone FastCGI server, and populates the necessary
-registry settings to run it with Microsoft IIS Server 4.0 or above.
-
-Before running it, you need to install the B<FCGI> module from CPAN, as well as
-B<Win32::Daemon> from L<http://www.roth.net/perl/Daemon/> if you want to install
-itself as a service.
-
-This script will automatically create a virtual directory under the IIS root;
-its name is taken from C<$WebPath> in the F<RT_Config.pm> file.  Additionally,
-please install the ISAPI binary from L<http://www.caraveo.com/fastcgi/> and set
-up an ISAPI Script Map that maps F<.html> files to F<isapi_fcgi.dll>.
-
-Once the service is launched (either via C<net start RTFastCGI> or by running
-C<perl mason_handler.svc>), a FCGI server will start and bind to port C<8284>
-(mnemonics: the ASCII value of C<R> and C<T>); the ISAPI handler's C<BindPath>
-registry setting will also be automatically populated.
-
-=cut
-
-package RT::Mason;
-
-use strict;
-use File::Basename;
-use vars '$Handler';
-require (dirname(__FILE__) . '/webmux.pl');
-
-use Cwd;
-use File::Spec;
-
-use Win32;
-use Win32::Process;
-use Win32::Service;
-use Win32::TieRegistry;
-
-my $ProcessObj;
-
-BEGIN {
-    my $runsvc = sub {
-	Win32::Process::Create(
-	    $ProcessObj, $^X, "$^X $0 --run", 0, NORMAL_PRIORITY_CLASS, "."
-	) or do {
-	    die Win32::FormatMessage( Win32::GetLastError() );
-	};
-
-	chdir File::Basename::dirname($0);
-	my $path = Cwd::cwd();
-	$path =~ s|/|\\|g;
-	$path =~ s|bin$|share\\html|;
-
-	$Win32::TieRegistry::Registry->{
-	    'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\\'.
-	    'W3SVC\Parameters\Virtual Roots\\'
-	}->{RT->Config->Get('WebPath') || '/'} = "$path,,205";
-	    
-	$Win32::TieRegistry::Registry->{
-	    'HKEY_LOCAL_MACHINE\Software\FASTCGI\.html\\'
-	}->{'BindPath'} = $ENV{'FCGI_SOCKET_PATH'};
-
-	Win32::Service::StartService(Win32::NodeName, 'W3SVC');
-    };
-    
-    if ($ARGV[0] eq '--deinstall') {
-	chdir File::Basename::dirname($0);
-	my $path = Cwd::cwd();
-	$path =~ s|/|\\|g;
-
-	require Win32::Daemon;
-	Win32::Daemon::DeleteService('RTFastCGI');
-	warn "Service 'RTFastCGI' successfully deleted.\n";
-	exit;
-    }
-    elsif ($ARGV[0] eq '--install') {
-	chdir File::Basename::dirname($0);
-	my $path = Cwd::cwd();
-	$path =~ s|/|\\|g;
-
-	require Win32::Daemon;
-	Win32::Daemon::DeleteService('RTFastCGI');
-	
-	my $rv = Win32::Daemon::CreateService( {
-	    machine =>  '',
-	    name    =>  'RTFastCGI',
-	    display =>  'RT FastCGI Handler',
-	    path    =>  $^X,
-	    user    =>  '',
-	    pwd     =>  $path,
-	    description => 'Enables port 8284 as the RT FastCGI handler.',
-	    parameters  => File::Spec->catfile(
-		    $path, File::Basename::basename($0)
-	    ) . ' --service',
-	} );
-    
-	if ($rv) {
-	    warn "Service 'RTFastCGI' successfully created.\n";
-	}
-	else {
-	    warn "Failed to add service: " . Win32::FormatMessage(
-		Win32::Daemon::GetLastError()
-	    ) . "\n";
-	}
-	exit;
-    }
-    elsif ($ARGV[0] eq '--service') {
-	require Win32::Daemon;
-
-	my $PrevState = Win32::Daemon::SERVICE_START_PENDING();
-	Win32::Daemon::StartService() or die $^E;
-
-	while ( 1 ) {
-	    my $State = Win32::Daemon::State();
-	    last if $State == Win32::Daemon::SERVICE_STOPPED();
-	    
-	    if ( $State == Win32::Daemon::SERVICE_START_PENDING() ) {
-		$runsvc->();
-		Win32::Daemon::State( Win32::Daemon::SERVICE_RUNNING() );
-		$PrevState = Win32::Daemon::SERVICE_RUNNING();
-	    }
-	    elsif ( $State == Win32::Daemon::SERVICE_CONTINUE_PENDING() ) {
-		$ProcessObj->Resume;
-		Win32::Daemon::State( Win32::Daemon::SERVICE_RUNNING() );
-		$PrevState = Win32::Daemon::SERVICE_RUNNING();
-	    }
-	    elsif ( $State == Win32::Daemon::SERVICE_STOP_PENDING() ) {
-	    $ProcessObj->Kill(0);
-		Win32::Daemon::State( Win32::Daemon::SERVICE_STOPPED() );
-		$PrevState = Win32::Daemon::SERVICE_STOPPED();
-	    }
-	    elsif ( $State == Win32::Daemon::SERVICE_RUNNING() ) {
-		my $Message = Win32::Daemon::QueryLastMessage(1);
-		if ( $Message == Win32::Daemon::SERVICE_CONTROL_INTERROGATE() ) {
-		    Win32::Daemon::State( $PrevState );
-		}
-		elsif ( $Message == Win32::Daemon::SERVICE_CONTROL_SHUTDOWN() ) {
-		    Win32::Daemon::State( Win32::Daemon::SERVICE_STOP_PENDING(), 15000 );
-		}
-		elsif ( $Message != Win32::Daemon::SERVICE_CONTROL_NONE() ) {
-		    Win32::Daemon::State( $PrevState );
-		}
-	    }
-	    
-	    Win32::Sleep( 1000 );
-	}
-		
-	Win32::Daemon::StopService();
-	exit;
-    }
-    elsif ($ARGV[0] eq '--help') {
-	system("perldoc $0");
-	exit;
-    }
-    elsif ($ARGV[0] ne '--run') {
-	$SIG{__DIE__} = sub { $ProcessObj->Kill(0) if $ProcessObj };
-	$runsvc->();
-	warn "RT FastCGI Handler launched. Press [Enter] to terminate...\n";
-	<STDIN>;
-	exit;
-    }
-}
-
-###############################################################################
-
-warn "Begin listening on $ENV{'FCGI_SOCKET_PATH'}\n";
-
-require CGI::Fast;
-
-RT::Init();
-$Handler ||= RT::Interface::Web::Handler->new( RT->Config->Get('MasonParameters'));
-
-
-# Response loop
-while( my $cgi = CGI::Fast->new ) {
-    $Handler->HandleRequest($cgi);
-}
-
-1;
-
-=head1 AUTHORS
-
-Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
-
-=head1 COPYRIGHT
-
-Copyright 2002 by Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>.
-
-This program is free software; you can redistribute it and/or 
-modify it under the same terms as Perl itself.
-
-See L<http://www.perl.com/perl/misc/Artistic.html>
-
-=cut
diff --git a/bin/webmux.pl.in b/bin/webmux.pl.in
deleted file mode 100755
index 7fef7db..0000000
--- a/bin/webmux.pl.in
+++ /dev/null
@@ -1,174 +0,0 @@
-#!@PERL@
-# BEGIN BPS TAGGED BLOCK {{{
-#
-# COPYRIGHT:
-#
-# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-#                                          <jesse at bestpractical.com>
-#
-# (Except where explicitly superseded by other copyright notices)
-#
-#
-# LICENSE:
-#
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-#
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 or visit their web page on the internet at
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-#
-#
-# CONTRIBUTION SUBMISSION POLICY:
-#
-# (The following paragraph is not intended to limit the rights granted
-# to you to modify and distribute this software under the terms of
-# the GNU General Public License and is only of importance to you if
-# you choose to contribute your changes and enhancements to the
-# community by submitting them to Best Practical Solutions, LLC.)
-#
-# By intentionally submitting any modifications, corrections or
-# derivatives to this work, or any other work intended for use with
-# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-# you are the copyright holder for those contributions and you grant
-# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-# royalty-free, perpetual, license to use, copy, create derivative
-# works based on those contributions, and sublicense and distribute
-# those contributions and any derivatives thereof.
-#
-# END BPS TAGGED BLOCK }}}
-use strict;
-local $ENV{'PATH'}   = '/bin:/usr/bin';                   # or whatever you need
-local $ENV{'CDPATH'} = '' if defined $ENV{'CDPATH'};
-local $ENV{'SHELL'}  = '/bin/sh' if defined $ENV{'SHELL'};
-local $ENV{'ENV'}    = '' if defined $ENV{'ENV'};
-local $ENV{'IFS'}    = '' if defined $ENV{'IFS'};
-
-package HTML::Mason::Commands;
-our %session;
-
-package RT::Mason;
-
-our ($Nobody, $SystemUser, $Handler, $r);
-
-sub handler {
-    ($r) = @_;
-
-    local $SIG{__WARN__};
-    local $SIG{__DIE__};
-    RT::InitSignalHandlers();
-
-    if ($r->content_type =~ m/^httpd\b.*\bdirectory/i) {
-        use File::Spec::Unix;
-        # Our DirectoryIndex is always index.html, regardless of httpd settings
-        $r->filename( File::Spec::Unix->catfile( $r->filename, 'index.html' ) );
-    }
-
-    Module::Refresh->refresh if RT->Config->Get('DevelMode');
-
-    RT::ConnectToDatabase();
-
-    my (%session, $status);
-    {
-        local $@;
-        $status = eval { $Handler->handle_request($r) };
-        $RT::Logger->crit( $@ ) if $@;
-    }
-    undef %session;
-
-    RT::Interface::Web::Handler->CleanupRequest();
-
-    return $status;
-}
-
-package main;
-
-# check mod_perl version if it's mod_perl
-BEGIN {
-    die "RT does not support mod_perl 1.99. Please upgrade to mod_perl 2.0"
-        if $ENV{'MOD_PERL'}
-        and $ENV{'MOD_PERL'} =~ m{mod_perl/(?:1\.9)};
-}
-
-require CGI;
-CGI->import(qw(-private_tempfiles));
-
-# fix lib paths, some may be relative
-BEGIN {
-    require File::Spec;
-    my @libs = ("@RT_LIB_PATH@", "@LOCAL_LIB_PATH@");
-    my $bin_path;
-
-    for my $lib (@libs) {
-        unless ( File::Spec->file_name_is_absolute($lib) ) {
-            unless ($bin_path) {
-                if ( File::Spec->file_name_is_absolute(__FILE__) ) {
-                    $bin_path = ( File::Spec->splitpath(__FILE__) )[1];
-                }
-                else {
-                    require FindBin;
-                    no warnings "once";
-                    $bin_path = $FindBin::Bin;
-                }
-            }
-            $lib = File::Spec->catfile( $bin_path, File::Spec->updir, $lib );
-        }
-        unshift @INC, $lib;
-    }
-
-}
-
-require RT;
-die "Wrong version of RT $RT::Version found; need @RT_VERSION_MAJOR at .@RT_VERSION_MINOR at .*"
-    unless $RT::VERSION =~ /^@RT_VERSION_MAJOR@\. at RT_VERSION_MINOR@\./;
-RT::LoadConfig();
-if ( RT->Config->Get('DevelMode') ) {
-    require Module::Refresh;
-}
-RT::Init();
-
-# check compatibility of the DB
-{
-    my $dbh = $RT::Handle->dbh;
-    if ( $dbh ) {
-        my ($status, $msg) = $RT::Handle->CheckCompatibility( $dbh, 'post' );
-        die $msg unless $status;
-    }
-}
-
-require RT::Interface::Web::Handler;
-# XXX: this is for the maybe-used package variable of the modperl handler: RT::Mason
-$RT::Mason::Handler = RT::Interface::Web::Handler->Init(undef,
-                                                        RT->Config->Get('MasonParameters'));
-
-# load more for mod_perl before forking
-RT::InitClasses( Heavy => 1 ) if $ENV{'MOD_PERL'} || $ENV{RT_WEBMUX_HEAVY_LOAD};
-
-# we must disconnect DB before fork
-$RT::Handle->dbh(undef);
-undef $RT::Handle;
-
-if ( $ENV{'MOD_PERL'} && !RT->Config->Get('DevelMode')) {
-    # Under static_source, we need to purge the component cache
-    # each time we restart, so newer components may be reloaded.
-    #
-    # We can't do this in FastCGI or we'll blow away the component
-    # root _every_ time a new server starts which happens every few
-    # hits.
-    
-    require File::Path;
-    require File::Glob;
-    my @files = File::Glob::bsd_glob("$RT::MasonDataDir/obj/*");
-    File::Path::rmtree([ @files ], 0, 1) if @files;
-}
-
-1;
diff --git a/configure.ac b/configure.ac
index ceea142..fe4b826 100755
--- a/configure.ac
+++ b/configure.ac
@@ -415,9 +415,6 @@ AC_CONFIG_FILES([
                  sbin/standalone_httpd
                  sbin/rt-setup-fulltext-index
                  sbin/rt-fulltext-indexer
-                 bin/fastcgi_server
-                 bin/mason_handler.fcgi
-                 bin/mason_handler.scgi
                  bin/rt-crontool
                  bin/rt-mailgate
                  bin/rt],
@@ -429,8 +426,6 @@ AC_CONFIG_FILES([
                  Makefile
                  etc/RT_Config.pm
                  lib/RT/Generated.pm
-                 bin/mason_handler.svc
-                 bin/webmux.pl
                  t/data/configs/apache2.2+mod_perl.conf
                  t/data/configs/apache2.2+fastcgi.conf],
                )

commit 00ed3adff315710d067192381ca3971b3efe4d7d
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Sat Nov 27 11:14:15 2010 +0800

    Remove non-psgi web interface codepath

diff --git a/lib/RT/Interface/Web/Handler.pm b/lib/RT/Interface/Web/Handler.pm
index c7b5e16..f3ba409 100644
--- a/lib/RT/Interface/Web/Handler.pm
+++ b/lib/RT/Interface/Web/Handler.pm
@@ -82,57 +82,6 @@ sub DefaultHandlerArgs  { (
     named_component_subs => $INC{'Devel/Cover.pm'} ? 1 : 0,
 ) };
 
-
-=head2 new
-
-DEPRECATED: this method is to be removed as it's not the constructor of the class which is confusing
-
-  Constructs a web handler of the appropriate class.
-  Takes options to pass to the constructor.
-
-=cut
-
-sub new {
-    Carp::carp "DEPRECATED: call RT::Interface::Handler->Init instead";
-    my $class = shift;
-    $class->InitSessionDir;
-
-    if ( ($mod_perl::VERSION && $mod_perl::VERSION >= 1.9908) || $CGI::MOD_PERL) {
-        goto &NewApacheHandler;
-    }
-    else {
-        goto &NewCGIHandler;
-    }
-}
-
-=head2 Init
-
-  Initialize and return the mason web handler for current environment.
-
-=cut
-
-my $_handler;
-
-sub Init {
-    my $class = shift;
-    my $handler_class = shift;
-    my @handler_args = @_;
-
-    $class->InitSessionDir;
-
-    unless ($handler_class) {
-        if ( ($mod_perl::VERSION && $mod_perl::VERSION >= 1.9908) || $CGI::MOD_PERL) {
-            $handler_class = 'HTML::Mason::ApacheHandler';
-            unshift @handler_args, args_method => "CGI";
-        }
-        else {
-            $handler_class = 'HTML::Mason::CGIHandler';
-        }
-    }
-
-    $_handler = NewHandler($handler_class, @handler_args);
-}
-
 sub InitSessionDir {
     # Activate the following if running httpd as root (the normal case).
     # Resets ownership of all files created by Mason at startup.
@@ -158,72 +107,6 @@ sub InitSessionDir {
 }
 
 
-
-=head2 NewApacheHandler
-
-  Takes extra options to pass to HTML::Mason::ApacheHandler->new
-  Returns a new Mason::ApacheHandler object
-
-=cut
-
-sub NewApacheHandler {
-    require HTML::Mason::ApacheHandler;
-    return NewHandler('HTML::Mason::ApacheHandler', args_method => "CGI", @_);
-}
-
-
-
-=head2 NewCGIHandler
-
-  Returns a new Mason::CGIHandler object
-
-=cut
-
-sub NewCGIHandler {
-    require HTML::Mason::CGIHandler;
-    return NewHandler(
-        'HTML::Mason::CGIHandler',
-        out_method => sub {
-            my $m = HTML::Mason::Request->instance;
-            my $r = $m->cgi_request;
-
-            # Send headers if they have not been sent by us or by user.
-            $r->send_http_header unless $r->http_header_sent;
-
-            # Set up a default
-            $r->content_type('text/html; charset=utf-8')
-                unless $r->content_type;
-
-            if ( $r->content_type =~ /charset=([\w-]+)$/ ) {
-                my $enc = $1;
-                if ( lc $enc !~ /utf-?8$/ ) {
-                    for my $str (@_) {
-                        next unless $str;
-
-                        # only encode perl internal strings
-                        next unless utf8::is_utf8($str);
-                        $str = Encode::encode( $enc, $str );
-                    }
-                }
-            }
-
-            # default to utf8 encoding
-            for my $str (@_) {
-                next unless $str;
-                next unless utf8::is_utf8($str);
-                $str = Encode::encode( 'utf8', $str );
-            }
-
-            # We could perhaps install a new, faster out_method here that
-            # wouldn't have to keep checking whether headers have been
-            # sent and what the $r->method is.  That would require
-            # additions to the Request interface, though.
-            print STDOUT grep {defined} @_;
-        },
-        @_
-    );
-}
-
 use UNIVERSAL::require;
 sub NewHandler {
     my $class = shift;
@@ -253,30 +136,6 @@ sub _mason_dir_index {
     return $path;
 }
 
-=head2 HandleRequest
-
-
-=cut
-
-sub HandleRequest {
-    my $self = shift;
-    my $cgi = shift;
-
-    Module::Refresh->refresh if RT->Config->Get('DevelMode');
-    RT::ConnectToDatabase() unless RT->InstallMode;
-
-    my $interp = $_handler->interp;
-    $cgi->path_info( $self->_mason_dir_index($interp, $cgi->path_info));
-
-    local $@;
-    eval { $_handler->handle_cgi_object($cgi); };
-    if ($@) {
-        $RT::Logger->crit($@);
-    }
-    $self->CleanupRequest();
-
-}
-
 
 =head2 CleanupRequest
 

commit a6711ec0cde3e55b3a17311b29a6221fdebfbc20
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Sat Nov 27 11:16:32 2010 +0800

    remove crazy alter_superclass for web::request

diff --git a/lib/RT/Interface/Web/Request.pm b/lib/RT/Interface/Web/Request.pm
index 4e68740..30df5a3 100644
--- a/lib/RT/Interface/Web/Request.pm
+++ b/lib/RT/Interface/Web/Request.pm
@@ -52,52 +52,16 @@ use strict;
 use warnings;
 
 our $VERSION = '0.30';
-use base qw(HTML::Mason::Request);
+use HTML::Mason::PSGIHandler;
+use base qw(HTML::Mason::Request::PSGI);
 use Params::Validate qw(:all);
 
 sub new {
     my $class = shift;
-
-    my $new_class =
-         $HTML::Mason::ApacheHandler::VERSION ? 'HTML::Mason::Request::ApacheHandler' :
-         $HTML::Mason::PSGIHandler::VERSION   ? 'HTML::Mason::Request::PSGI' :
-         $HTML::Mason::CGIHandler::VERSION    ? 'HTML::Mason::Request::CGI' :
-                                                'HTML::Mason::Request';
-
-    $class->alter_superclass( $new_class );
-    $class->valid_params( %{ $new_class->valid_params },cgi_request => { type => OBJECT, optional => 1 } );
+    $class->valid_params( %{ $class->valid_params },cgi_request => { type => OBJECT, optional => 1 } );
     return $class->SUPER::new(@_);
 }
 
-# XXX TODO: This alter_superclass replaces teh funcitonality in Mason 1.39 
-# with code which doesn't trigger a bug in Perl 5.10. 
-# (Perl 5.10.0 does NOT take kindly to having its @INC entries changed)
-# http://rt.perl.org/rt3/Public/Bug/Display.html?id=54566
-#
-# This routine can be removed when either: 
-#   * RT depends on a version of mason which contains this fix
-#   * Perl 5.10.0 is not supported for running RT
-sub alter_superclass {
-    my $class = shift;
-    my $new_super = shift;
-    my $isa_ref;
-    { no strict 'refs'; my @entries = @{$class."::ISA"}; $isa_ref = \@entries; }
-
-    # handles multiple inheritance properly and preserve
-    # inheritance order
-    for ( my $x = 0; $x <= $#{$isa_ref} ; $x++ ) {
-        if ( $isa_ref->[$x]->isa('HTML::Mason::Request') ) {
-            my $old_super = $isa_ref->[$x];
-                $isa_ref->[$x] = $new_super
-            if ( $old_super ne $new_super );
-            last;
-        }
-    } 
-
-    { no strict 'refs'; @{$class."::ISA"} = @$isa_ref; }
-    $class->valid_params( %{ $class->valid_params } );
-}
-
 
 =head2 callback
 

commit 7e3d19933be5212f3724a440b9139c60e94ced46
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Tue Nov 30 18:22:08 2010 +0800

    remove speedycgi and fastcgi-server in rt-test-dependencies.

diff --git a/configure.ac b/configure.ac
index fe4b826..90d11b5 100755
--- a/configure.ac
+++ b/configure.ac
@@ -35,29 +35,17 @@ dnl WEB_HANDLER
 AC_ARG_WITH(web-handler,
     AC_HELP_STRING([--with-web-handler=LIST],
 	[comma separated list of web-handlers RT will be able to use.
-         Default is fastcgi when modperl1, modperl2, fastcgi, fastcgi-server,
-         and speedycgi are valid. To successfuly run RT you need only one.
-         only one.
+         Default is fastcgi when modperl1, modperl2, and fastcgi are valid.
+         To successfully run RT you need only one.
         ]),
     WEB_HANDLER=$withval,
     WEB_HANDLER=fastcgi)
-my_web_handler_test=$($PERL -e 'print "ok" unless grep $_ !~ /^(modperl1|modperl2|fastcgi(?:-server)?|speedycgi|standalone)$/i, grep defined && length, split /\s*,\s*/, $ARGV@<:@0@:>@' $WEB_HANDLER)
+my_web_handler_test=$($PERL -e 'print "ok" unless grep $_ !~ /^(modperl1|modperl2|fastcgi|standalone)$/i, grep defined && length, split /\s*,\s*/, $ARGV@<:@0@:>@' $WEB_HANDLER)
 if test "$my_web_handler_test" != "ok"; then
-	AC_MSG_ERROR([Only modperl1, modperl2, fastcgi, fastcgi-server, speedycgi and standalone are valid web-handlers])
+	AC_MSG_ERROR([Only modperl1, modperl2, fastcgi and standalone are valid web-handlers])
 fi
 AC_SUBST(WEB_HANDLER)
 
-dnl SPEED_BIN
-AC_ARG_WITH(speedycgi,
-	    AC_HELP_STRING([--with-speedycgi=/path/to/speedy],
-	    		   [path to your speedycgi binary, if it exists]),
-            SPEEDY_BIN=$withval,
-            SPEEDY_BIN=/usr/local/bin/speedy) 
-if test "$WEB_HANDLER" = 'speedycgi' -a ! -x "$SPEEDY_BIN"; then
-	AC_MSG_ERROR([cannot find speedycgi binary])
-fi
-AC_SUBST(SPEEDY_BIN)
-
 dnl Defaults paths for installation
 AC_PREFIX_DEFAULT([/opt/rt3])
 RT_ENABLE_LAYOUT
diff --git a/sbin/rt-test-dependencies.in b/sbin/rt-test-dependencies.in
index d47bc8c..75c6781 100755
--- a/sbin/rt-test-dependencies.in
+++ b/sbin/rt-test-dependencies.in
@@ -60,9 +60,10 @@ GetOptions(
     \%args,                               'v|verbose',
     'install',                            'with-MYSQL',
     'with-POSTGRESQL|with-pg|with-pgsql', 'with-SQLITE',
-    'with-ORACLE',                        'with-FASTCGI', 'with-FASTCGI-SERVER',
-    'with-SPEEDYCGI',                     'with-MODPERL1',
-    'with-MODPERL2',                      'with-DEV',
+    'with-ORACLE',                        'with-FASTCGI',
+    'with-MODPERL1',                      'with-MODPERL2',
+
+    'with-DEV',
 
     'with-GPG',
     'with-ICAL',
@@ -232,6 +233,7 @@ IPC::Run3
 .
 
 $deps{'PSGI'} = [ text_to_hash( << '.') ];
+CGI 3.38
 CGI::PSGI 0.12
 HTML::Mason::PSGIHandler 0.52
 Plack 0.9942
@@ -280,35 +282,16 @@ Plack::Middleware::Test::StashWarnings
 .
 
 $deps{'FASTCGI'} = [ text_to_hash( << '.') ];
-CGI 3.38
 FCGI
-CGI::Fast 
-.
-
-$deps{'FASTCGI-SERVER'} = [ text_to_hash( << '.') ];
-CGI 3.38
-CGI::Fast
 FCGI::ProcManager
-File::Basename
-File::Spec
-Getopt::Long
-Pod::Usage
 .
 
-$deps{'SPEEDYCGI'} = [ text_to_hash( << '.') ];
-CGI 3.38
-CGI::SpeedyCGI
-.
-
-
 $deps{'MODPERL1'} = [ text_to_hash( << '.') ];
-CGI 3.38
 Apache::Request
 Apache::DBI 0.92
 .
 
 $deps{'MODPERL2'} = [ text_to_hash( << '.') ];
-CGI 3.38
 Apache::DBI
 HTML::Mason 1.36
 .
@@ -647,18 +630,10 @@ list the status of all dependencies, rather than just the missing ones.
 
     database interface and driver for sqlite (unsupported)
 
-=item with-fastcgi-server
-
-    libraries needed to support the external fastcgi server
- 
 =item with-fastcgi 
 
     libraries needed to support the fastcgi handler
 
-=item with-speedycgi
-
-    libraries needed to support the speedycgi handler
-
 =item with-modperl1
 
     libraries needed to support the modperl 1 handler
diff --git a/share/html/index.html b/share/html/index.html
index be06330..24cc9da 100755
--- a/share/html/index.html
+++ b/share/html/index.html
@@ -20,7 +20,7 @@ You appear to have installed RT's web interface correctly, but haven't yet confi
 server to "run" the RT server which powers the web interface.
 
 The next step is to edit your webserver's configuration file to instruct it to use
-RT's <strong>mod_perl</strong>, <strong>FastCGI</strong> or <strong>SpeedyCGI</strong> handler.
+RT's <strong>mod_perl</strong> or <strong>FastCGI</strong> handler.
 
 If you need commercial support, please contact us at sales at bestpractical.com.
 

commit 9b8baf5b51723fdbaa17c770d0dc795d285e2e44
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Tue Nov 30 18:29:09 2010 +0800

    note about running other psgi servers

diff --git a/docs/web_deployment.pod b/docs/web_deployment.pod
index e9e3b77..828a364 100644
--- a/docs/web_deployment.pod
+++ b/docs/web_deployment.pod
@@ -17,6 +17,11 @@ server with:
 
     /opt/rt3/sbin/rt-server --port 8080
 
+You can also run C<rt-server> with any other PSGI server, for example,
+to use L<Starman>, a high performance preforking server:
+
+    /opt/rt3/sbin/rt-server --server Starman --port 8080
+
 =head2 mod_perl
 
 =head3 mod_perl 1.xx

-----------------------------------------------------------------------


More information about the Rt-commit mailing list