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");
|
logger.debug("this session is a crawler, it will be killed");
|
||||||
sess.setMaxInactiveInterval(30);
|
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
|
// the session will be killed at the end of the request anyway
|
||||||
rinput.registerCleanup(new SessionKiller(sess));
|
rinput.registerCleanup(new SessionKiller(sess));
|
||||||
|
|
||||||
|
|
|
@ -364,4 +364,6 @@ public interface RequestInput extends ServiceProvider
|
||||||
|
|
||||||
public String getConfigProperty(String name, String default_val);
|
public String getConfigProperty(String name, String default_val);
|
||||||
|
|
||||||
|
public void setSpecial(String name, String value);
|
||||||
|
|
||||||
} // end interface RequestInput
|
} // end interface RequestInput
|
||||||
|
|
|
@ -17,10 +17,18 @@
|
||||||
*/
|
*/
|
||||||
package com.silverwrist.venice.ui.helpers;
|
package com.silverwrist.venice.ui.helpers;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
import com.silverwrist.venice.ui.*;
|
import com.silverwrist.venice.ui.*;
|
||||||
|
|
||||||
public class SessionKiller implements AutoCleanup
|
public class SessionKiller implements AutoCleanup
|
||||||
{
|
{
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Static data members
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static Logger logger = Logger.getLogger(SessionKiller.class);
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------------
|
||||||
* Attributes
|
* Attributes
|
||||||
*--------------------------------------------------------------------------------
|
*--------------------------------------------------------------------------------
|
||||||
|
@ -46,6 +54,8 @@ public class SessionKiller implements AutoCleanup
|
||||||
|
|
||||||
public void cleanup()
|
public void cleanup()
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
logger.debug("SessionKiller killing session " + m_sess.getID());
|
||||||
m_sess.invalidate();
|
m_sess.invalidate();
|
||||||
|
|
||||||
} // end cleanup
|
} // end cleanup
|
||||||
|
|
|
@ -453,9 +453,26 @@ public class RequestImpl implements RequestInput
|
||||||
if (type==ABSOLUTE)
|
if (type==ABSOLUTE)
|
||||||
fmt_url = where;
|
fmt_url = where;
|
||||||
else if (type==SERVLET)
|
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)
|
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
|
else
|
||||||
throw new IndexOutOfBoundsException("invalid format type index for redirect");
|
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 ScriptSupportImpl script_support = null; // script support interface
|
||||||
private ResourceLoaderImpl m_resource_loader = null; // resource loader interface
|
private ResourceLoaderImpl m_resource_loader = null; // resource loader interface
|
||||||
private BrowserInformationImpl m_browser_info = null; // browser information interface
|
private BrowserInformationImpl m_browser_info = null; // browser information interface
|
||||||
|
private boolean m_no_session_encode = false; // override session encoding?
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------------
|
||||||
* Constructor
|
* Constructor
|
||||||
|
@ -838,7 +856,10 @@ public class RequestImpl implements RequestInput
|
||||||
|
|
||||||
final String encodeServletPath(String servlet)
|
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
|
} // end encodeServletPath
|
||||||
|
|
||||||
|
@ -1638,6 +1659,20 @@ public class RequestImpl implements RequestInput
|
||||||
|
|
||||||
} // end getConfigProperty
|
} // 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
|
* External static operations
|
||||||
*--------------------------------------------------------------------------------
|
*--------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue
Block a user