added a simple "gateway" servlet allowing us to redirect arbitrary URLs
through the Venice logon page
This commit is contained in:
parent
0bb2e795a4
commit
b105a43619
13
etc/web.xml
13
etc/web.xml
|
@ -246,6 +246,14 @@
|
|||
<servlet-class>com.silverwrist.venice.servlets.CommunityLogo</servlet-class>
|
||||
</servlet>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>gateway</servlet-name>
|
||||
<description>
|
||||
Gateways access to a specific URL through the Venice login screen.
|
||||
</description>
|
||||
<servlet-class>com.silverwrist.venice.servlets.Gateway</servlet-class>
|
||||
</servlet>
|
||||
|
||||
<!-- the following are test servlets, they should go away -->
|
||||
|
||||
<servlet>
|
||||
|
@ -374,6 +382,11 @@
|
|||
<url-pattern>/commlogo</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>gateway</servlet-name>
|
||||
<url-pattern>/gw</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<!-- the following are test servlets, they should go away -->
|
||||
<servlet-mapping>
|
||||
<servlet-name>testformdata</servlet-name>
|
||||
|
|
|
@ -38,7 +38,7 @@ public class Account extends VeniceServlet
|
|||
|
||||
private static final int COOKIE_LIFETIME = 60*60*24*365; // one year
|
||||
|
||||
private static Category logger = Category.getInstance(Account.class.getName());
|
||||
private static Category logger = Category.getInstance(Account.class);
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Internal functions
|
||||
|
@ -140,6 +140,9 @@ public class Account extends VeniceServlet
|
|||
protected String getMyLocation(HttpServletRequest request, VeniceEngine engine, UserContext user,
|
||||
RenderData rdat)
|
||||
{
|
||||
String rc = super.getMyLocation(request,engine,user,rdat);
|
||||
if (rc!=null)
|
||||
return rc;
|
||||
if (request.getAttribute(DISPLAY_LOGIN_ATTR)!=null)
|
||||
return "account?cmd=" + getStandardCommandParam(request);
|
||||
else
|
||||
|
@ -173,6 +176,7 @@ public class Account extends VeniceServlet
|
|||
// this is a Login command - display the Login page
|
||||
LoginDialog dlg = makeLoginDialog();
|
||||
dlg.setupNew(tgt);
|
||||
setMyLocation(request,tgt); // fake out the location so we can display the "Log In/Create Account" links
|
||||
return dlg;
|
||||
|
||||
} // end if ("L" command)
|
||||
|
|
71
src/com/silverwrist/venice/servlets/Gateway.java
Normal file
71
src/com/silverwrist/venice/servlets/Gateway.java
Normal file
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
||||
* (the "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
|
||||
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Venice Web Communities System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
||||
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
||||
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
package com.silverwrist.venice.servlets;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URLEncoder;
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.*;
|
||||
import org.apache.log4j.*;
|
||||
import com.silverwrist.venice.core.*;
|
||||
import com.silverwrist.venice.servlets.format.*;
|
||||
|
||||
public class Gateway extends VeniceServlet
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Static data members
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static Category logger = Category.getInstance(Gateway.class);
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class HttpServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
public String getServletInfo()
|
||||
{
|
||||
String rc = "Gateway servlet - \"Gates\" a URL request based on whether or not the user is logged in\n"
|
||||
+ "Part of the Venice Web Communities System\n";
|
||||
return rc;
|
||||
|
||||
} // end getServletInfo
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Overrides from class VeniceServlet
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
protected VeniceContent doVeniceGet(HttpServletRequest request, VeniceEngine engine,
|
||||
UserContext user, RenderData rdat)
|
||||
throws ServletException, IOException, VeniceServletResult
|
||||
{
|
||||
String target = request.getQueryString();
|
||||
if (target==null)
|
||||
throw new ErrorResult(HttpServletResponse.SC_BAD_REQUEST,"no parameter specified");
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("they want to redirect to: " + target);
|
||||
if (user.isLoggedIn())
|
||||
throw new RedirectResult(target);
|
||||
else
|
||||
throw new RedirectResult("account?cmd=L&tgt=" + URLEncoder.encode(target));
|
||||
|
||||
} // end doVeniceGet
|
||||
|
||||
} // end class Gateway
|
|
@ -22,6 +22,13 @@ import com.silverwrist.venice.servlets.format.RenderData;
|
|||
|
||||
public class RedirectResult extends ExecuteResult
|
||||
{
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Static data members
|
||||
*--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
private static final String[] absolute_prefixes = { "http://", "ftp://" };
|
||||
|
||||
/*--------------------------------------------------------------------------------
|
||||
* Attributes
|
||||
*--------------------------------------------------------------------------------
|
||||
|
@ -48,6 +55,14 @@ public class RedirectResult extends ExecuteResult
|
|||
|
||||
public void execute(RenderData rdat) throws IOException
|
||||
{
|
||||
for (int i=0; i<absolute_prefixes.length; i++)
|
||||
if (target.startsWith(absolute_prefixes[i]))
|
||||
{ // this is an absolute redirection...do it!
|
||||
rdat.redirectAbsolute(target);
|
||||
return;
|
||||
|
||||
} // end if and for
|
||||
|
||||
rdat.redirectTo(target);
|
||||
|
||||
} // end doRedirect
|
||||
|
|
|
@ -401,6 +401,12 @@ public class RenderData implements ColorSelectors
|
|||
|
||||
} // end redirectTo
|
||||
|
||||
public void redirectAbsolute(String url) throws IOException
|
||||
{
|
||||
response.sendRedirect(url);
|
||||
|
||||
} // end redirectAbsolute
|
||||
|
||||
public String getActivityString(Date date)
|
||||
{
|
||||
if (date==null)
|
||||
|
|
Loading…
Reference in New Issue
Block a user