package RWDE::Web::SCGIadapter; use strict; use warnings; use CGI; use SCGI::Request; use Error qw(:try); use RWDE::Exceptions; use base qw(RWDE::Web::CGIadapter); use vars qw($VERSION); $VERSION = sprintf "%d", q$Revision: 566 $ =~ /(\d+)/; # set up the SCGI interaction and return the new object. called from # superclass new() method. sub initialize { my $self = shift; my $params = shift; my $sock = $$params{sock}; my $req = SCGI::Request->_new($sock,1); # blocking socket mode $req->read_env; %ENV = %{$req->env}; my $cgi; if ($req->env->{REQUEST_METHOD} eq 'POST') { # read $req->connection, my $body, $req->env->{CONTENT_LENGTH}; local *STDIN = $req->connection; $cgi = CGI->new(); } else { $cgi = CGI->new(); } CGI->_reset_globals; $self->{req} = $cgi; return; } sub run_command { my ($self, $params) = @_; try{ RWDE::Web::CommandProxy->execute({ req => $self }); } catch Error with{ my $ex = shift; $self->syslog_msg('info', "dispatch caught: $ex"); $self->syslog_msg('info', "This is beyond unusual, exceptions are caught here to avoid server going down"); }; return(); } 1;