From 3d8dc32afa0131e2ac0cd121b492aed8ad59fc11 Mon Sep 17 00:00:00 2001 From: Dylan William Hardison Date: Mon, 21 May 2018 14:14:53 -0400 Subject: working more --- Bugzilla/Quantum/Plugin/Glue.pm | 93 ----------------------------------------- 1 file changed, 93 deletions(-) (limited to 'Bugzilla/Quantum/Plugin/Glue.pm') diff --git a/Bugzilla/Quantum/Plugin/Glue.pm b/Bugzilla/Quantum/Plugin/Glue.pm index 17dc443c6..822987ad8 100644 --- a/Bugzilla/Quantum/Plugin/Glue.pm +++ b/Bugzilla/Quantum/Plugin/Glue.pm @@ -11,9 +11,6 @@ use Mojo::Base 'Mojolicious::Plugin'; use Try::Tiny; use Bugzilla::Constants; use Bugzilla::Quantum::Template; -use Socket qw(AF_INET inet_aton); -use Sys::Hostname; -use IO::String; sub register { my ( $self, $app, $conf ) = @_; @@ -44,99 +41,9 @@ sub register { or die $template->error; } ); - - $app->hook( - around_dispatch => sub { - my ($next, $c) = @_; - local %ENV = _ENV($c); - my $stdin = _STDIN($c); - my $stdout = ''; - try { - local $CGI::Compile::USE_REAL_EXIT = 0; - local *STDIN; ## no critic (local) - local *STDOUT; - open STDIN, '<', $stdin->path or die "STDIN @{[$stdin->path]}: $!" if -s $stdin->path; - open STDOUT, '>', \$stdout or die "STDOUT capture: $!"; - - Bugzilla::init_page(); - Bugzilla->request_cache->{mojo_controller} = $c; - Bugzilla->template( Bugzilla::Quantum::Template->new( controller => $c, template => $template ) ); - $next->(); - } - catch { - die $_ unless ref $_ eq 'ARRAY' && $_->[0] eq "EXIT\n" || /\bModPerl::Util::exit\b/; - } - finally { - if (length $stdout) { - warn "setting body\n"; - $c->res->body($stdout); - $c->rendered; - } - Bugzilla::_cleanup; ## no critic (private) - CGI::initialize_globals(); - }; - } - ); -} - -sub _ENV { - my ($c) = @_; - my $tx = $c->tx; - my $req = $tx->req; - my $headers = $req->headers; - my $content_length = $req->content->is_multipart ? $req->body_size : $headers->content_length; - my %env_headers = ( HTTP_COOKIE => '', HTTP_REFERER => '' ); - - for my $name ( @{ $headers->names } ) { - my $key = uc "http_$name"; - $key =~ s!\W!_!g; - $env_headers{$key} = $headers->header($name); - } - - my $remote_user; - if ( my $userinfo = $c->req->url->to_abs->userinfo ) { - $remote_user = $userinfo =~ /([^:]+)/ ? $1 : ''; - } - elsif ( my $authenticate = $headers->authorization ) { - $remote_user = $authenticate =~ /Basic\s+(.*)/ ? b64_decode $1 : ''; - $remote_user = $remote_user =~ /([^:]+)/ ? $1 : ''; - } - - return ( - CONTENT_LENGTH => $content_length || 0, - CONTENT_TYPE => $headers->content_type || '', - GATEWAY_INTERFACE => 'CGI/1.1', - HTTPS => $req->is_secure ? 'YES' : 'NO', - %env_headers, - QUERY_STRING => $c->stash('cgi.query_string') || $req->url->query->to_string, - REMOTE_ADDR => $tx->remote_address, - REMOTE_HOST => gethostbyaddr( inet_aton( $tx->remote_address || '127.0.0.1' ), AF_INET ) || '', - REMOTE_PORT => $tx->remote_port, - REMOTE_USER => $remote_user || '', - REQUEST_METHOD => $req->method, - SCRIPT_NAME => $req->env->{SCRIPT_NAME}, - SERVER_NAME => hostname, - SERVER_PORT => $tx->local_port, - SERVER_PROTOCOL => $req->is_secure ? 'HTTPS' : 'HTTP', # TODO: Version is missing - SERVER_SOFTWARE => __PACKAGE__, - ); } -sub _STDIN { - my $c = shift; - my $stdin; - - if ( $c->req->content->is_multipart ) { - $stdin = Mojo::Asset::File->new; - $stdin->add_chunk( $c->req->build_body ); - } - else { - $stdin = $c->req->content->asset; - } - return $stdin if $stdin->isa('Mojo::Asset::File'); - return Mojo::Asset::File->new->add_chunk( $stdin->slurp ); -} 1; \ No newline at end of file -- cgit v1.2.3-24-g4f1b