additional change to cause crawlers to never get munged URLs, always get the
raw servlet URL
This commit is contained in:
parent
2b12c944d9
commit
17c12459a5
|
@ -31,6 +31,9 @@ if (binfo.hasCapability("crawler") || binfo.hasCapability("stripper"))
|
|||
logger.debug("this session is a crawler, it will be killed");
|
||||
sess.setMaxInactiveInterval(30);
|
||||
|
||||
// don't encode any servlet paths we send
|
||||
rinput.setSpecial("No-Session-Encode","true");
|
||||
|
||||
// the session will be killed at the end of the request anyway
|
||||
rinput.registerCleanup(new SessionKiller(sess));
|
||||
|
||||
|
|
|
@ -364,4 +364,6 @@ public interface RequestInput extends ServiceProvider
|
|||
|
||||
public String getConfigProperty(String name, String default_val);
|
||||
|
||||
public void setSpecial(String name, String value);
|
||||
|
||||
} // end interface RequestInput
|
||||
|
|
|
@ -17,10 +17,18 @@
|
|||
*/
|
||||
package com.silverwrist.venice.ui.helpers;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import com.silverwrist.venice.ui.*;
|
||||
|
||||
public class SessionKiller implements AutoCleanup
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Static data members
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static Logger logger = Logger.getLogger(SessionKiller.class);
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
|
@ -46,6 +54,8 @@ public class SessionKiller implements AutoCleanup
|
|||
|
||||
public void cleanup()
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("SessionKiller killing session " + m_sess.getID());
|
||||
m_sess.invalidate();
|
||||
|
||||
} // end cleanup
|
||||
|
|
|
@ -453,9 +453,26 @@ public class RequestImpl implements RequestInput
|
|||
if (type==ABSOLUTE)
|
||||
fmt_url = where;
|
||||
else if (type==SERVLET)
|
||||
fmt_url = response.encodeRedirectURL(request.getContextPath() + "/" + where);
|
||||
{ // servlet
|
||||
fmt_url = request.getContextPath() + "/" + where;
|
||||
if (!m_no_session_encode)
|
||||
fmt_url = response.encodeRedirectURL(fmt_url);
|
||||
|
||||
} // end else if
|
||||
else if (type==FRAME)
|
||||
fmt_url = response.encodeRedirectURL(request.getContextPath() + "/frame/" + where);
|
||||
{ // frame
|
||||
fmt_url = request.getContextPath() + "/frame/" + where;
|
||||
if (!m_no_session_encode)
|
||||
fmt_url = response.encodeRedirectURL(fmt_url);
|
||||
|
||||
} // end else if
|
||||
else if (type==FULLSERVLET)
|
||||
{ // full servlet
|
||||
fmt_url = expandServletPath(where,false);
|
||||
if (!m_no_session_encode)
|
||||
fmt_url = response.encodeRedirectURL(fmt_url);
|
||||
|
||||
} // end else if
|
||||
else
|
||||
throw new IndexOutOfBoundsException("invalid format type index for redirect");
|
||||
|
||||
|
@ -595,6 +612,7 @@ public class RequestImpl implements RequestInput
|
|||
private ScriptSupportImpl script_support = null; // script support interface
|
||||
private ResourceLoaderImpl m_resource_loader = null; // resource loader interface
|
||||
private BrowserInformationImpl m_browser_info = null; // browser information interface
|
||||
private boolean m_no_session_encode = false; // override session encoding?
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Constructor
|
||||
|
@ -838,7 +856,10 @@ public class RequestImpl implements RequestInput
|
|||
|
||||
final String encodeServletPath(String servlet)
|
||||
{
|
||||
return response.encodeURL(request.getContextPath() + "/" + servlet);
|
||||
if (m_no_session_encode)
|
||||
return request.getContextPath() + "/" + servlet;
|
||||
else
|
||||
return response.encodeURL(request.getContextPath() + "/" + servlet);
|
||||
|
||||
} // end encodeServletPath
|
||||
|
||||
|
@ -1638,6 +1659,20 @@ public class RequestImpl implements RequestInput
|
|||
|
||||
} // end getConfigProperty
|
||||
|
||||
public void setSpecial(String name, String value)
|
||||
{
|
||||
if (name.equals("No-Session-Encode"))
|
||||
{ // the special name "No-Session-Encode"
|
||||
if (StringUtil.isBooleanTrue(value))
|
||||
m_no_session_encode = true;
|
||||
else if (StringUtil.isBooleanFalse(value))
|
||||
m_no_session_encode = false;
|
||||
return;
|
||||
|
||||
} // end if
|
||||
|
||||
} // end setSpecial
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* External static operations
|
||||
*--------------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue
Block a user