From ab0a5a06af3c0cbce44efcaed6780357178cc64d Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 27 Nov 2009 13:26:38 +0000 Subject: [PATCH] add basic no-webapp handler --- .../i2p/router/web/RouterConsoleRunner.java | 22 ++++++++++++++++++- apps/routerconsole/jsp/nowebapp.jsp | 16 ++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 apps/routerconsole/jsp/nowebapp.jsp diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index ec2b10c24..bcd1f3cbd 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -1,5 +1,6 @@ package net.i2p.router.web; +import java.util.ArrayList; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; @@ -20,6 +21,7 @@ import org.mortbay.http.SecurityConstraint; import org.mortbay.http.handler.SecurityHandler; import org.mortbay.jetty.Server; import org.mortbay.jetty.servlet.WebApplicationContext; +import org.mortbay.jetty.servlet.WebApplicationHandler; public class RouterConsoleRunner { private Server _server; @@ -87,6 +89,8 @@ public class RouterConsoleRunner { if (!_webAppsDir.endsWith("/")) _webAppsDir += '/'; + List notStarted = new ArrayList(); + WebApplicationHandler baseHandler = null; try { StringTokenizer tok = new StringTokenizer(_listenHost, " ,"); int boundAddresses = 0; @@ -111,7 +115,8 @@ public class RouterConsoleRunner { File tmpdir = new File(workDir, ROUTERCONSOLE + "-" + _listenPort); tmpdir.mkdir(); wac.setTempDirectory(tmpdir); - wac.addHandler(0, new LocaleWebAppHandler(I2PAppContext.getGlobalContext())); + baseHandler = new LocaleWebAppHandler(I2PAppContext.getGlobalContext()); + wac.addHandler(0, baseHandler); initialize(wac); File dir = new File(_webAppsDir); String fileNames[] = dir.list(WarFilenameFilter.instance()); @@ -132,6 +137,8 @@ public class RouterConsoleRunner { props.setProperty(PREFIX + appName + ENABLED, "true"); rewrite = true; } + } else { + notStarted.add(appName); } } catch (IOException ioe) { System.err.println("Error resolving '" + fileNames[i] + "' in '" + dir); @@ -154,6 +161,19 @@ public class RouterConsoleRunner { "\"::1,\" in the \"clientApp.0.args\" line of the clients.config file.\n" + "Exception: " + me); } + + if (baseHandler != null) { + // map each not-started webapp to the error page + for (int i = 0; i < notStarted.size(); i++) { + try { + baseHandler.mapPathToServlet('/' + notStarted.get(i) + "/*", + "net.i2p.router.web.jsp.nowebapp_jsp"); + } catch (Throwable me) { + System.err.println(me); + } + } + } + try { SysTray tray = SysTray.getInstance(); } catch (Throwable t) { diff --git a/apps/routerconsole/jsp/nowebapp.jsp b/apps/routerconsole/jsp/nowebapp.jsp new file mode 100644 index 000000000..f62ae6b16 --- /dev/null +++ b/apps/routerconsole/jsp/nowebapp.jsp @@ -0,0 +1,16 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + +<% + response.setStatus(404, "Not Found"); +%> + +<%@include file="css.jsi" %> +<%=intl.title("WebApp Not Found")%> + +<%@include file="summary.jsi" %> +

<%=intl._("Web Application Not Running")%>

+
+<%=intl._("The requested web application is not running.")%> +<%=intl._("Please visit the config clients page to start it.")%> +