[rt-users] Issues with RT4.x and apache proxypass and white space in search results.

Peter Boguszewski pboguszewski at library.wisc.edu
Thu Apr 18 12:54:37 EDT 2013


I can replicate this problem with RT 4.0.11 in many ways.  I have tried 
apache 2.2.x and 2.4.x with ProxyPass and ReWrite rules with the 
NoEscape option [NE].  This does not fix the problem.  Here is the exact 
way to replicate the issue.

With ProxyPass enabled go to Query Builder and add any search term, 
select "Add these terms and Search".  This will blow up with a URL that 
contains escape characters like this:

Search/Results.html?Format=%2527%2520%2520%2520%253Cb%253E%253Ca%2520href%253D%2522__WebPath__%252FTicket%252FDisplay.html%253Fid%253D__id__%2522%253E__id__%253C%252Fa%253E%253C%252Fb%253E%252FTITLE%253A%2523%2527%252C%250A%2527%253Cb%253E%253Ca%2520href%253D%2522__WebPath__%252FTicket%252FDisplay.html%253Fid%253D__id__%2522%253E__Subject__%253C%252Fa%253E%253C%252Fb%253E%252FTITLE%253ASubject%2527%252C%250A%2527__Status__%2527%252C%250A%2527__QueueName__%2527%252C%250A%2527__OwnerName__%2527%252C%250A%2527__Priority__%2527%252C%250A%2527__NEWLINE__%2527%252C%250A%2527%2527%252C%250A%2527%253Csmall%253E__Requestors__%253C%252Fsmall%253E%2527%252C%250A%2527%253Csmall%253E__CreatedRelative__%253C%252Fsmall%253E%2527%252C%250A%2527%253Csmall%253E__ToldRelative__%253C%252Fsmall%253E%2527%252C%250A%2527%253Csmall%253E__LastUpdatedRelative__%253C%252Fsmall%253E%2527%252C%250A%2527%253Csmall%253E__TimeLeft__%253C%252Fsmall%253E%2527&Order=ASC%257CASC%257CASC%257CASC&OrderBy=id%257C%257C%257C&Query=id%2520%253C%25202000&RowsPerPage=50&SavedChartSearchId=new&SavedSearchId=new

Without changing anything I can get the search to work by going back to 
the query builder and adding a search term but instead of choosing "Add 
these terms and Search" I select "Add these terms" then the click the 
"Show Results" link that appears.  Here is the same exact search result URL:

Search/Results.html?SavedChartSearchId=new&RowsPerPage=50&Page=&Format='+++<b><a+href%3D"__WebPath__%2FTicket%2FDisplay.html%3Fid%3D__id__">__id__<%2Fa><%2Fb>%2FTITLE%3A%23'%2C%0A'<b><a+href%3D"__WebPath__%2FTicket%2FDisplay.html%3Fid%3D__id__">__Subject__<%2Fa><%2Fb>%2FTITLE%3ASubject'%2C%0A'__Status__'%2C%0A'__QueueName__'%2C%0A'__OwnerName__'%2C%0A'__Priority__'%2C%0A'__NEWLINE__'%2C%0A''%2C%0A'<small>__Requestors__<%2Fsmall>'%2C%0A'<small>__CreatedRelative__<%2Fsmall>'%2C%0A'<small>__ToldRelative__<%2Fsmall>'%2C%0A'<small>__LastUpdatedRelative__<%2Fsmall>'%2C%0A'<small>__TimeLeft__<%2Fsmall>'&Order=ASC|ASC|ASC|ASC&SavedSearchId=&Query=id+<+2000&OrderBy=id|||

The difference I notice in the code is that the "Add these terms and 
Search" button uses a perl url redirect where the "Show Results" link 
does not.  Here is the log output from the errored search (with server 
location starred out):

[Thu Apr 18 16:52:51 2013] [error]: The 'message' parameter ("Wrong 
query, expecting a OPERATOR in 'id%>20<--here%3C%202000' at 
/*****//rt-4.0.11/sbin/../lib/RT/SQL.pm line 135.

Stack:
   [/*****//rt-4.0.11/sbin/../lib/RT/SQL.pm:135]
   [/*****//rt-4.0.11/sbin/../lib/RT/Tickets_SQL.pm:237]
   [/*****//rt-4.0.11/sbin/../lib/RT/Tickets_SQL.pm:293]
   [/*****//rt-4.0.11/share/html/Search/Results.html:109]
   [/*****//rt-4.0.11/sbin/../lib/RT/Interface/Web.pm:635]
   [/*****//rt-4.0.11/sbin/../lib/RT/Interface/Web.pm:336]
   [/*****//rt-4.0.11/share/html/autohandler:53]
") to Log::Dispatch::Output::log was a 'hashref object', which is not 
one of the allowed types: scalar
  at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/x86_64-linux/Params/Validate/XS.pm 
line 11.
         Params::Validate::XS::__ANON__('The \'message\' parameter 
("Wrong query, expecting a OPERATOR...') called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Log/Dispatch/Output.pm line 39
         Log::Dispatch::Output::log(undef, 'level', 'error', 'name', 
'screen', 'message', 'HTML::Mason::Exception=HASH(0x6a95280)') called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Log/Dispatch.pm line 214
         Log::Dispatch::_log_to('Log::Dispatch=HASH(0xb84808)', 'level', 
'error', 'name', 'screen', 'message', 
'HTML::Mason::Exception=HASH(0x6a95280)') called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Log/Dispatch.pm line 167
Log::Dispatch::_log_to_outputs('Log::Dispatch=HASH(0xb84808)', 'level', 
'error', 'message', 'HTML::Mason::Exception=HASH(0x6a95280)') called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Log/Dispatch.pm line 145
         Log::Dispatch::log('Log::Dispatch=HASH(0xb84808)', 'level', 
'error', 'message', '') called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Log/Dispatch.pm line 42
         Log::Dispatch::__ANON__('Log::Dispatch=HASH(0xb84808)', '') 
called at /*****//rt-4.0.11/sbin/../lib/RT/Tickets_SQL.pm line 295
         RT::Tickets::FromSQL('RT::Tickets=HASH(0x689e1a0)', 
'id%20%3C%202000') called at 
/*****//rt-4.0.11/share/html/Search/Results.html line 109
         HTML::Mason::Commands::__ANON__('Order', 
'ASC%7CASC%7CASC%7CASC', 'Query', 'id%20%3C%202000', 'SavedSearchId', 
'new', 'SavedChartSearchId', 'new', 'OrderBy', ...) called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/Component.pm 
line 138
HTML::Mason::Component::run('HTML::Mason::Component::FileBased=HASH(0x6a72f58)', 
'Order', 'ASC%7CASC%7CASC%7CASC', 'Query', 'id%20%3C%202000', 
'SavedSearchId', 'new', 'SavedChartSearchId', 'new', ...) called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/Request.pm line 1305
         eval {...} called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/Request.pm line 1295
         HTML::Mason::Request::comp(undef, undef, undef, 'Order', 
'ASC%7CASC%7CASC%7CASC', 'Query', 'id%20%3C%202000', 'SavedSearchId', 
'new', ...) called at /*****//rt-4.0.11/sbin/../lib/RT/Interface/Web.pm 
line 635
         RT::Interface::Web::ShowRequestedPage('HASH(0x69bb6a8)') called 
at /*****//rt-4.0.11/sbin/../lib/RT/Interface/Web.pm line 336
         RT::Interface::Web::HandleRequest('HASH(0x69bb6a8)') called at 
/*****//rt-4.0.11/share/html/autohandler line 53
         HTML::Mason::Commands::__ANON__('SavedChartSearchId', 'new', 
'Format', 
'%27%20%20%20%3Cb%3E%3Ca%20href%3D%22__WebPath__%2FTicket%2FDi...', 
'Query', 'id%20%3C%202000', 'Order', 'ASC%7CASC%7CASC%7CASC', 
'SavedSearchId', ...) called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/Component.pm 
line 138
HTML::Mason::Component::run('HTML::Mason::Component::FileBased=HASH(0x673e0b0)', 
'SavedChartSearchId', 'new', 'Format', 
'%27%20%20%20%3Cb%3E%3Ca%20href%3D%22__WebPath__%2FTicket%2FDi...', 
'Query', 'id%20%3C%202000', 'Order', 'ASC%7CASC%7CASC%7CASC', ...) 
called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/Request.pm line 1300
         eval {...} called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/Request.pm line 1295
         HTML::Mason::Request::comp(undef, undef, undef, 
'SavedChartSearchId', 'new', 'Format', 
'%27%20%20%20%3Cb%3E%3Ca%20href%3D%22__WebPath__%2FTicket%2FDi...', 
'Query', 'id%20%3C%202000', ...) called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/Request.pm line 484
         eval {...} called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/Request.pm line 484
         eval {...} called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/Request.pm line 436
HTML::Mason::Request::exec('RT::Interface::Web::Request=HASH(0x69b4e08)') called 
at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/PSGIHandler.pm 
line 85
         eval {...} called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/PSGIHandler.pm 
line 85
HTML::Mason::Request::PSGI::exec('RT::Interface::Web::Request=HASH(0x69b4e08)') 
called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/Interp.pm line 345
         HTML::Mason::Interp::exec(undef, undef, 'SavedChartSearchId', 
'new', 'Format', 
'%27%20%20%20%3Cb%3E%3Ca%20href%3D%22__WebPath__%2FTicket%2FDi...', 
'Query', 'id%20%3C%202000', 'Order', ...) called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/PSGIHandler.pm 
line 48
         eval {...} called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/PSGIHandler.pm 
line 48
HTML::Mason::PSGIHandler::invoke_mason('HTML::Mason::PSGIHandler::Streamy=HASH(0x663ceb0)', 
'HTML::Mason::FakeApache=HASH(0x69ad848)', 'HASH(0x69adb48)') called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/HTML/Mason/PSGIHandler/Streamy.pm 
line 52
HTML::Mason::PSGIHandler::Streamy::__ANON__('CODE(0x6a770c8)') called at 
/*****//rt-4.0.11/sbin/../lib/RT/Interface/Web/Handler.pm line 303
         RT::Interface::Web::Handler::__ANON__('CODE(0x6a770c8)') called 
at /*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Plack/Util.pm line 301
         Plack::Util::__ANON__('CODE(0x6a77200)') called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Plack/Handler/FCGI.pm line 136
Plack::Handler::FCGI::run('Plack::Handler::FCGI=HASH(0x6654470)', 
'CODE(0x6306f08)') called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Plack/Loader.pm line 84
         Plack::Loader::run('Plack::Loader=HASH(0x6654668)', 
'Plack::Handler::FCGI=HASH(0x6654470)') called at 
/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Plack/Runner.pm line 277
         Plack::Runner::run('Plack::Runner=HASH(0x6307b38)', 
'CODE(0x6306f08)') called at /*****//rt-4.0.11/sbin/rt-server.fcgi line 233
         eval {...} called at /*****//rt-4.0.11/sbin/rt-server.fcgi line 233

Stack:
   [/*****/perl/perl-5.16.3/lib/5.16.3/Carp.pm:101]
[/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/x86_64-linux/Params/Validate/XS.pm:11]
[/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Log/Dispatch/Output.pm:39]
   [/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Log/Dispatch.pm:214]
   [/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Log/Dispatch.pm:167]
   [/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Log/Dispatch.pm:145]
   [/*****/perl/perl-5.16.3/lib/site_perl/5.16.3/Log/Dispatch.pm:42]
   [/*****//rt-4.0.11/sbin/../lib/RT/Tickets_SQL.pm:295]
   [/*****//rt-4.0.11/share/html/Search/Results.html:109]
   [/*****//rt-4.0.11/sbin/../lib/RT/Interface/Web.pm:635]
   [/*****//rt-4.0.11/sbin/../lib/RT/Interface/Web.pm:336]
   [/*****//rt-4.0.11/share/html/autohandler:53] 
(/*****//rt-4.0.11/sbin/../lib/RT/Interface/Web/Handler.pm:208)

On 4/16/2013 9:52 AM, Peter Boguszewski wrote:
> Hi all,
>     We would like to proxypass traffic for RT for various reasons. 
> This works perfectly for most applications and for about 95% of RT. 
> The issue is in the Query Builder.  The Results.html contains spaces 
> in the URL.  This causes problems for Apache's proxypass / 
> proxypassreverse.  It replaces white spaces with %2x and RT blows up 
> with this error: "An internal RT error has occurred. Your 
> administrator can find more details in RT's log files."  Does anyone 
> know how to fix this issue?
>
> Thanks,
>
> Pete
>

-- 
Peter Boguszewski
Technical Manager of Library Systems
UW Madison - Library Technology Group
pboguszewski at library.wisc.edu
608.262.4768





More information about the rt-users mailing list