From bb0531053dca4abe57978996b6c17ece81a8834d Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Fri, 3 Apr 2009 21:33:35 +0000
Subject: [PATCH] Console: Fix bug with IE buttons not working, because it
 sends the label instead of the value

---
 .../java/src/net/i2p/i2ptunnel/web/IndexBean.java    |  2 +-
 .../src/net/i2p/router/web/ConfigClientsHandler.java | 12 ++++++++++++
 .../src/net/i2p/router/web/ConfigClientsHelper.java  |  6 +++---
 .../src/net/i2p/router/web/ConfigRestartBean.java    | 11 ++++++-----
 apps/routerconsole/jsp/configclients.jsp             |  5 +++++
 5 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
index fcf45d94d3..ce547cd029 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
@@ -142,7 +142,7 @@ public class IndexBean {
     }
     
     private String processAction() {
-        if ( (_action == null) || (_action.trim().length() <= 0) )
+        if ( (_action == null) || (_action.trim().length() <= 0) || ("Cancel".equals(_action)))
             return "";
         if ( (_prevNonce != _curNonce) && (!validPassphrase(_passphrase)) )
             return "Invalid nonce, are you being spoofed?";
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
index 7af6125d65..b612c005b2 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
@@ -41,6 +41,18 @@ public class ConfigClientsHandler extends FormHandler {
                 startClient(appnum);
             else
                 startWebApp(app);
+        } else if (_action.toLowerCase().startsWith("start<span class=hide> ") &&
+                   _action.toLowerCase().endsWith("</span>")) {
+            // IE sucks
+            String app = _action.substring(23, _action.length() - 7);
+            int appnum = -1;
+            try {
+                appnum = Integer.parseInt(app);
+            } catch (NumberFormatException nfe) {}
+            if (appnum >= 0)
+                startClient(appnum);
+            else
+                startWebApp(app);
         } else {
             addFormError("Unsupported " + _action);
         }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
index 2bee435335..984569b967 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
@@ -62,10 +62,10 @@ public class ConfigClientsHelper extends HelperBase {
             if (ro)
                 buf.append("disabled=\"true\" ");
         }
-        buf.append("/></td><td>&nbsp");
+        buf.append("/></td><td>&nbsp;");
         if (!enabled) {
-            buf.append("<button type=\"submit\" name=\"action\" value=\"Start ").append(index).append("\" >Start</button>");
+            buf.append("<button type=\"submit\" name=\"action\" value=\"Start ").append(index).append("\" >Start<span class=hide> ").append(index).append("</span></button>");
         }
-        buf.append("&nbsp</td><td>").append(desc).append("</td></tr>\n");
+        buf.append("&nbsp;</td><td>").append(desc).append("</td></tr>\n");
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigRestartBean.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigRestartBean.java
index e8eb6b26d3..7ae7181bc2 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigRestartBean.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigRestartBean.java
@@ -24,20 +24,21 @@ public class ConfigRestartBean {
         RouterContext ctx = ContextHelper.getContext(null);
         String systemNonce = getNonce();
         if ( (nonce != null) && (systemNonce.equals(nonce)) && (action != null) ) {
-            if ("shutdownImmediate".equals(action)) {
+            // Normal browsers send value, IE sends button label
+            if ("shutdownImmediate".equals(action) || "Shutdown immediately".equals(action)) {
                 ctx.addShutdownTask(new ConfigServiceHandler.UpdateWrapperManagerTask(Router.EXIT_HARD));
                 //ctx.router().shutdown(Router.EXIT_HARD); // never returns
                 ctx.router().shutdownGracefully(Router.EXIT_HARD); // give the UI time to respond
-            } else if ("cancelShutdown".equals(action)) {
+            } else if ("cancelShutdown".equals(action) || "Cancel shutdown".equals(action)) {
                 ctx.router().cancelGracefulShutdown();
-            } else if ("restartImmediate".equals(action)) {
+            } else if ("restartImmediate".equals(action) || "Restart immediately".equals(action)) {
                 ctx.addShutdownTask(new ConfigServiceHandler.UpdateWrapperManagerTask(Router.EXIT_HARD_RESTART));
                 //ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
                 ctx.router().shutdownGracefully(Router.EXIT_HARD_RESTART); // give the UI time to respond
-            } else if ("restart".equals(action)) {
+            } else if ("restart".equalsIgnoreCase(action)) {
                 ctx.addShutdownTask(new ConfigServiceHandler.UpdateWrapperManagerTask(Router.EXIT_GRACEFUL_RESTART));
                 ctx.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART);
-            } else if ("shutdown".equals(action)) {
+            } else if ("shutdown".equalsIgnoreCase(action)) {
                 ctx.addShutdownTask(new ConfigServiceHandler.UpdateWrapperManagerTask(Router.EXIT_GRACEFUL));
                 ctx.router().shutdownGracefully();
             }
diff --git a/apps/routerconsole/jsp/configclients.jsp b/apps/routerconsole/jsp/configclients.jsp
index 7240281988..8e66cb54ee 100644
--- a/apps/routerconsole/jsp/configclients.jsp
+++ b/apps/routerconsole/jsp/configclients.jsp
@@ -5,6 +5,11 @@
 <html><head>
 <title>I2P Router Console - config clients</title>
 <link rel="stylesheet" href="default.css" type="text/css" />
+<style type='text/css'>
+button span.hide{
+    display:none;
+}
+</style>
 </head><body>
 
 <%@include file="nav.jsp" %>
-- 
GitLab