From 39427d75e5363cc3eec518333abcbbf34c39922a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Mon, 30 Jun 2014 04:28:12 +0200 Subject: [PATCH] implement effective policy redirector. --- src/org/cacert/gigi/Gigi.java | 2 -- src/org/cacert/gigi/Launcher.java | 12 +++++--- src/org/cacert/gigi/PolicyRedirector.java | 25 +++++++++++++++++ src/org/cacert/gigi/pages/PolicyRedir.java | 32 ---------------------- 4 files changed, 33 insertions(+), 38 deletions(-) create mode 100644 src/org/cacert/gigi/PolicyRedirector.java delete mode 100644 src/org/cacert/gigi/pages/PolicyRedir.java diff --git a/src/org/cacert/gigi/Gigi.java b/src/org/cacert/gigi/Gigi.java index 551c9be0..445fe365 100644 --- a/src/org/cacert/gigi/Gigi.java +++ b/src/org/cacert/gigi/Gigi.java @@ -20,7 +20,6 @@ import org.cacert.gigi.email.EmailProvider; import org.cacert.gigi.pages.LoginPage; import org.cacert.gigi.pages.MainPage; import org.cacert.gigi.pages.Page; -import org.cacert.gigi.pages.PolicyRedir; import org.cacert.gigi.pages.TestSecure; import org.cacert.gigi.pages.Verify; import org.cacert.gigi.pages.account.MailAdd; @@ -52,7 +51,6 @@ public class Gigi extends HttpServlet { pages.put(MailCertificates.PATH, new MailCertificates()); pages.put(MyDetails.PATH, new MyDetails()); pages.put(RegisterPage.PATH, new RegisterPage()); - pages.put(PolicyRedir.PATH, new PolicyRedir()); pages.put(MailOverview.DEFAULT_PATH, new MailOverview( "My email addresses")); pages.put(MailAdd.DEFAULT_PATH, new MailAdd("Add new email")); diff --git a/src/org/cacert/gigi/Launcher.java b/src/org/cacert/gigi/Launcher.java index 47530254..f8c7f783 100644 --- a/src/org/cacert/gigi/Launcher.java +++ b/src/org/cacert/gigi/Launcher.java @@ -7,7 +7,6 @@ import java.util.Properties; import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLParameters; import javax.net.ssl.TrustManagerFactory; - import org.cacert.gigi.natives.SetUID; import org.cacert.gigi.util.CipherInfo; import org.eclipse.jetty.server.Connector; @@ -21,6 +20,7 @@ import org.eclipse.jetty.server.SessionManager; import org.eclipse.jetty.server.SslConnectionFactory; import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.HandlerList; +import org.eclipse.jetty.server.handler.HandlerWrapper; import org.eclipse.jetty.server.handler.ResourceHandler; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; @@ -71,12 +71,16 @@ public class Launcher { return servlet; } - private static ContextHandler generateStaticContext() { - ResourceHandler rh = new ResourceHandler(); + private static Handler generateStaticContext() { + final ResourceHandler rh = new ResourceHandler(); rh.setResourceBase("static"); + HandlerWrapper hw = new PolicyRedirector(); + hw.setHandler(rh); + ContextHandler ch = new ContextHandler(); - ch.setHandler(rh); ch.setContextPath("/static"); + ch.setHandler(hw); + return ch; } diff --git a/src/org/cacert/gigi/PolicyRedirector.java b/src/org/cacert/gigi/PolicyRedirector.java new file mode 100644 index 00000000..8714d959 --- /dev/null +++ b/src/org/cacert/gigi/PolicyRedirector.java @@ -0,0 +1,25 @@ +package org.cacert.gigi; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.eclipse.jetty.server.Request; +import org.eclipse.jetty.server.handler.HandlerWrapper; + +public class PolicyRedirector extends HandlerWrapper { + @Override + public void handle(String target, Request baseRequest, + HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException { + if (target.startsWith("/policy/") && target.endsWith(".php")) { + target = target.replace(".php", ".html"); + response.sendRedirect("/static" + target); + baseRequest.setHandled(true); + return; + } + super.handle(target, baseRequest, request, response); + } +} diff --git a/src/org/cacert/gigi/pages/PolicyRedir.java b/src/org/cacert/gigi/pages/PolicyRedir.java deleted file mode 100644 index e4e065ca..00000000 --- a/src/org/cacert/gigi/pages/PolicyRedir.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.cacert.gigi.pages; - -import java.io.IOException; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -public class PolicyRedir extends Page { - public PolicyRedir() { - super("Policy"); - } - - public static final String PATH = "/policy/*"; - @Override - public boolean beforeTemplate(HttpServletRequest req, - HttpServletResponse resp) throws IOException { - String substring = req.getPathInfo().substring(PATH.length() - 1); - resp.sendRedirect("/static/policy/" - + substring.replace(".php", ".html")); - return true; - } - @Override - public boolean needsLogin() { - return false; - } - @Override - public void doGet(HttpServletRequest req, HttpServletResponse resp) - throws IOException { - - } - -} -- 2.39.2