diff options
author | clemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2009-04-03 15:04:26 +0000 |
---|---|---|
committer | clemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2009-04-03 15:04:26 +0000 |
commit | 78728a96af022bae87e4d0d11855f420736d87b7 (patch) | |
tree | ee855aba3e8bbc988f72c361406c2c0013f8030a /BKUOnline/src | |
parent | 2dbf2347bc78fd835c857ad438514fb6251f6f7a (diff) | |
download | mocca-78728a96af022bae87e4d0d11855f420736d87b7.tar.gz mocca-78728a96af022bae87e4d0d11855f420736d87b7.tar.bz2 mocca-78728a96af022bae87e4d0d11855f420736d87b7.zip |
applet dispatcher (prevent applet caching)
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@326 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'BKUOnline/src')
4 files changed, 144 insertions, 23 deletions
diff --git a/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/AppletDispatcher.java b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/AppletDispatcher.java new file mode 100644 index 00000000..26349f7c --- /dev/null +++ b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/AppletDispatcher.java @@ -0,0 +1,111 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package at.gv.egiz.bku.online.webapp; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * prevent applet caching, + * could be removed once applet is loaded via jnlp + * + * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at> + */ +public class AppletDispatcher extends HttpServlet { + + protected final static Log log = LogFactory.getLog(AppletDispatcher.class); + + public static final String DISPATCH_CTX = "dispatch/"; + public static final String RAND_PREFIX = "__"; + public static final String RAND_ATTRIBUTE = "rand"; + public static final Pattern ctxPattern = Pattern.compile(DISPATCH_CTX); + public static final Pattern archivePattern = Pattern.compile(RAND_PREFIX + "[a-zA-Z0-9]*\\.jar$"); + + /** + * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + +// String suffix = (String) request.getSession().getAttribute(RAND_CTX_ATTRIBUTE); +// log.trace("expecting random suffix " + suffix); + + String uri = request.getRequestURI(); + uri = ctxPattern.matcher(uri).replaceAll(""); +// uri = uri.replaceAll(suffix, ""); //only the applet jar requests contains the randCtx + uri = archivePattern.matcher(uri).replaceAll(".jar"); + + if (log.isTraceEnabled()) { + log.trace("dispatching request URI " + request.getRequestURI() + + " to " + uri); + } + + RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(uri); + dispatcher.forward(request, response); + } + + // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> + /** + * Handles the HTTP <code>GET</code> method. + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Handles the HTTP <code>POST</code> method. + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Returns a short description of the servlet. + * @return a String containing servlet description + */ + @Override + public String getServletInfo() { + return "Short description"; + }// </editor-fold> + +} diff --git a/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java index 68a57fb5..1d0cb7e9 100644 --- a/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java +++ b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java @@ -51,7 +51,7 @@ public class BKURequestHandler extends SpringBKUServlet { private static final long serialVersionUID = 1L; - public final static String REDIRECT_URL_SESSION_ATTRIBUTE="redirectUrl"; + public final static String REDIRECT_URL_SESSION_ATTRIBUTE = "redirectUrl"; protected Log log = LogFactory.getLog(BKURequestHandler.class); diff --git a/BKUOnline/src/main/webapp/WEB-INF/web.xml b/BKUOnline/src/main/webapp/WEB-INF/web.xml index 1a9b7d78..2987ac57 100644 --- a/BKUOnline/src/main/webapp/WEB-INF/web.xml +++ b/BKUOnline/src/main/webapp/WEB-INF/web.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> - <!-- +<!-- Copyright 2008 Federal Chancellery Austria and Graz University of Technology Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the @@ -12,9 +12,7 @@ the specific language governing permissions and limitations under the License. --> -<web-app id="bkuonline" version="2.5" - xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> +<web-app id="bkuonline" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>http-security-layer-request</display-name> <!-- Begin Spring Config --> @@ -53,6 +51,10 @@ <jsp-file>/applet.jsp</jsp-file> </servlet> <servlet> + <servlet-name>AppletDispatcher</servlet-name> + <servlet-class>at.gv.egiz.bku.online.webapp.AppletDispatcher</servlet-class> + </servlet> + <servlet> <servlet-name>BKUAppletAlternative</servlet-name> <jsp-file>/appletAlternative.jsp</jsp-file> </servlet> @@ -76,6 +78,10 @@ <servlet-name>help</servlet-name> <url-pattern>/help/*</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>AppletDispatcher</servlet-name> + <url-pattern>/applet/dispatch/*</url-pattern> + </servlet-mapping> <!-- End BKU Config --> @@ -106,4 +112,4 @@ <session-config> <session-timeout>5</session-timeout> </session-config> -</web-app>
\ No newline at end of file +</web-app> diff --git a/BKUOnline/src/main/webapp/applet.jsp b/BKUOnline/src/main/webapp/applet.jsp index 591ed1bf..6af81578 100644 --- a/BKUOnline/src/main/webapp/applet.jsp +++ b/BKUOnline/src/main/webapp/applet.jsp @@ -15,7 +15,8 @@ limitations under the License. --> <%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> + pageEncoding="UTF-8" + import="at.gv.egiz.bku.online.webapp.AppletDispatcher, org.apache.commons.lang.RandomStringUtils" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> @@ -41,16 +42,19 @@ String guiStyle = (String) session.getAttribute("appletGuiStyle"); String locale = (String) session.getAttribute("locale"); String extension = (String) session.getAttribute("extension"); + String rand = AppletDispatcher.RAND_PREFIX + + RandomStringUtils.randomAlphanumeric(16); + //(String) session.getAttribute(AppletDispatcher.RAND_ATTRIBUTE); String appletClass, appletArchive; if ("activation".equals(extension)) { - appletArchive = "BKUAppletExt.jar"; + appletArchive = "BKUAppletExt"; appletClass = "at.gv.egiz.bku.online.applet.ActivationApplet.class"; } else if ("pin".equals(extension)) { - appletArchive = "BKUAppletExt.jar"; + appletArchive = "BKUAppletExt"; appletClass = "at.gv.egiz.bku.online.applet.PINManagementApplet.class"; } else { - appletArchive = "BKUApplet.jar"; + appletArchive = "BKUApplet"; appletClass = "at.gv.egiz.bku.online.applet.BKUApplet.class"; } %> @@ -61,21 +65,21 @@ .write('<b>Diese Anwendung benötigt die Java Platform Version 1.6.0_04 oder höher.</b>' + '<input type="submit" value="Java Platform 1.6.0_02 installieren" onclick="deployJava.installLatestJRE();">'); } else { var attributes = { - codebase :'applet', - code : '<%=appletClass%>', - archive : '<%=appletArchive + ", commons-logging.jar, iaik_jce_me4se.jar"%>', - width : <%=width%>, - height :<%=height%> + codebase :'<%="applet/" + AppletDispatcher.DISPATCH_CTX %>', + code : '<%=appletClass%>', + archive : '<%=appletArchive + rand +".jar, commons-logging.jar, iaik_jce_me4se.jar"%>', + width : <%=width%>, + height :<%=height%> }; var parameters = { - GuiStyle : '<%=guiStyle%>', - Locale : '<%=locale%>', - Background : '<%=backgroundImg%>', - WSDL_URL :'../stal;jsessionid=<%=session.getId()%>?wsdl', - HelpURL : '../help/', - SessionID : '<%=session.getId()%>', - RedirectURL : '../bkuResult', - RedirectTarget: '_parent' + GuiStyle : '<%=guiStyle%>', + Locale : '<%=locale%>', + Background : '<%=backgroundImg%>', + WSDL_URL :'../../stal;jsessionid=<%=session.getId()%>?wsdl', + HelpURL : '../../help/', + SessionID : '<%=session.getId()%>', + RedirectURL : '../../bkuResult', + RedirectTarget: '_parent' }; var version = '1.6.0_04'; deployJava.runApplet(attributes, parameters, version); |