[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