From 1bff5a7b9e1b51122af44bf7f9969a95a1bcb4f0 Mon Sep 17 00:00:00 2001 From: z3d <z3d@mail.i2p> Date: Fri, 17 Jul 2009 16:28:38 +0000 Subject: [PATCH] Visual overhaul of config pages. --- apps/routerconsole/jsp/configadvanced.jsp | 85 ++++++----- apps/routerconsole/jsp/configclients.jsp | 138 ++++++++--------- apps/routerconsole/jsp/configkeyring.jsp | 120 ++++++++------- apps/routerconsole/jsp/configlogging.jsp | 122 ++++++++------- apps/routerconsole/jsp/configpeer.jsp | 171 ++++++++++----------- apps/routerconsole/jsp/configservice.jsp | 174 +++++++++++----------- apps/routerconsole/jsp/configstats.jsp | 2 +- apps/routerconsole/jsp/configupdate.jsp | 140 +++++++++-------- 8 files changed, 500 insertions(+), 452 deletions(-) diff --git a/apps/routerconsole/jsp/configadvanced.jsp b/apps/routerconsole/jsp/configadvanced.jsp index 96750c4657..ab177676c1 100644 --- a/apps/routerconsole/jsp/configadvanced.jsp +++ b/apps/routerconsole/jsp/configadvanced.jsp @@ -1,41 +1,44 @@ -<%@page contentType="text/html"%> -<%@page pageEncoding="UTF-8"%> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html><head> -<title>I2P Router Console - config advanced</title> -<%@include file="css.jsp" %> -</head><body> - -<%@include file="nav.jsp" %> -<%@include file="summary.jsp" %> - -<jsp:useBean class="net.i2p.router.web.ConfigAdvancedHelper" id="advancedhelper" scope="request" /> -<jsp:setProperty name="advancedhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - -<h1>I2P Advanced Configuration</h1> -<div class="main" id="main"> - - <%@include file="confignav.jsp" %> - - <jsp:useBean class="net.i2p.router.web.ConfigAdvancedHandler" id="formhandler" scope="request" /> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> - - <form action="configadvanced.jsp" method="POST"> - <% String prev = System.getProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigAdvancedHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce", new java.util.Random().nextLong()+""); %> - <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce")%>" /> - <input type="hidden" name="action" value="blah" /> - <textarea rows="32" cols="100" name="config" wrap="off"><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br /> -<p> - <input type="submit" name="shouldsave" value="Apply" /> <input type="reset" value="Cancel" /> -</p><p> - NOTE: Some changes may require a restart to take effect. -</p> - </form> -</div> -</body> -</html> +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html><head> +<title>I2P Router Console - config advanced</title> +<%@include file="css.jsp" %> +</head><body> + +<%@include file="nav.jsp" %> +<%@include file="summary.jsp" %> + +<jsp:useBean class="net.i2p.router.web.ConfigAdvancedHelper" id="advancedhelper" scope="request" /> +<jsp:setProperty name="advancedhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> + +<h1>I2P Advanced Configuration</h1> +<div class="main" id="main"> + + <%@include file="confignav.jsp" %> + + <jsp:useBean class="net.i2p.router.web.ConfigAdvancedHandler" id="formhandler" scope="request" /> + <jsp:setProperty name="formhandler" property="*" /> + <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> + <jsp:getProperty name="formhandler" property="allMessages" /> + <div class="configure"> + <form action="configadvanced.jsp" method="POST"> + <% String prev = System.getProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce"); + if (prev != null) System.setProperty("net.i2p.router.web.ConfigAdvancedHandler.noncePrev", prev); + System.setProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce", new java.util.Random().nextLong()+""); %> + <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce")%>" /> + <input type="hidden" name="action" value="blah" /> + <textarea rows="32" cols="100" name="config" wrap="off"><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br /><hr> + <p align="right"> + <input type="submit" name="shouldsave" value="Apply" /> + <input type="reset" value="Cancel" /> + </p> + <p> + NOTE: Some changes may require a restart to take effect. +</p> + </form> +</div> +</div> +</body> +</html> diff --git a/apps/routerconsole/jsp/configclients.jsp b/apps/routerconsole/jsp/configclients.jsp index 9a06aa4d20..9634908d42 100644 --- a/apps/routerconsole/jsp/configclients.jsp +++ b/apps/routerconsole/jsp/configclients.jsp @@ -1,69 +1,69 @@ -<%@page contentType="text/html"%> -<%@page pageEncoding="UTF-8"%> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html><head> -<title>I2P Router Console - config clients</title> -<%@include file="css.jsp" %> -<style type='text/css'> -button span.hide{ - display:none; -} -</style> -</head><body> - -<%@include file="nav.jsp" %> -<%@include file="summary.jsp" %> - -<jsp:useBean class="net.i2p.router.web.ConfigClientsHelper" id="clientshelper" scope="request" /> -<jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> -<h1>I2P Client Configuration</h1> -<div class="main" id="main"> - <%@include file="confignav.jsp" %> - - <jsp:useBean class="net.i2p.router.web.ConfigClientsHandler" id="formhandler" scope="request" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - <jsp:setProperty name="formhandler" property="action" value="<%=request.getParameter("action")%>" /> - <jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter("nonce")%>" /> - <jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> - - <form action="configclients.jsp" method="POST"> - <% String prev = System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigClientsHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigClientsHandler.nonce", new java.util.Random().nextLong()+""); %> - <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce")%>" /> - <h3>Client Configuration</h3> - <p> - The Java clients listed below are started by the router and run in the same JVM. - </p><p> - <jsp:getProperty name="clientshelper" property="form1" /> - </p><p> - <i>All changes require restart to take effect. To change other client options, edit the clients.config file.</i> - </p> <hr /><p> - <input type="submit" name="action" value="Save Client Configuration" /> - </p> -<hr /> - <h3>WebApp Configuration</h3> - <p> - The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. - They are usually web applications accessible through the router console. - They may be complete applications (e.g. i2psnark), - front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), - or have no web interface at all (e.g. addressbook). - </p><p> - A web app may also be disabled by removing the .war file from the webapps directory; - however the .war file and web app will reappear when you update your router to a newer version, - so disabling the web app here is the preferred method. - </p><p> - <jsp:getProperty name="clientshelper" property="form2" /> - </p><p> - <input type="submit" name="action" value="Save WebApp Configuration" /> - </p><p> - <i>All changes require restart to take effect. To change other webapp options, edit the webapps.config file.</i> - </p> - </form> -</div> - -</body> -</html> +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html><head> +<title>I2P Router Console - config clients</title> +<%@include file="css.jsp" %> +<style type='text/css'> +button span.hide{ + display:none; +} +</style> +</head><body> + +<%@include file="nav.jsp" %> +<%@include file="summary.jsp" %> + +<jsp:useBean class="net.i2p.router.web.ConfigClientsHelper" id="clientshelper" scope="request" /> +<jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> +<h1>I2P Client Configuration</h1> +<div class="main" id="main"> + <%@include file="confignav.jsp" %> + + <jsp:useBean class="net.i2p.router.web.ConfigClientsHandler" id="formhandler" scope="request" /> + <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> + <jsp:setProperty name="formhandler" property="action" value="<%=request.getParameter("action")%>" /> + <jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter("nonce")%>" /> + <jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" /> + <jsp:getProperty name="formhandler" property="allMessages" /> + <div class="configure"> + <form action="configclients.jsp" method="POST"> + <% String prev = System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce"); + if (prev != null) System.setProperty("net.i2p.router.web.ConfigClientsHandler.noncePrev", prev); + System.setProperty("net.i2p.router.web.ConfigClientsHandler.nonce", new java.util.Random().nextLong()+""); %> + <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce")%>" /> + <h3>Client Configuration</h3> + <p> + The Java clients listed below are started by the router and run in the same JVM. + </p><p> + <jsp:getProperty name="clientshelper" property="form1" /> + </p><p> + <i>All changes require restart to take effect. To change other client options, edit the clients.config file.</i> + </p> <hr /><p> + <input type="submit" name="action" value="Save Client Configuration" /> + </p> +<hr /> + <h3>WebApp Configuration</h3> + <p> + The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. + They are usually web applications accessible through the router console. + They may be complete applications (e.g. i2psnark), + front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), + or have no web interface at all (e.g. addressbook). + </p><p> + A web app may also be disabled by removing the .war file from the webapps directory; + however the .war file and web app will reappear when you update your router to a newer version, + so disabling the web app here is the preferred method. + </p><p> + <jsp:getProperty name="clientshelper" property="form2" /> + </p><p><hr> + <input type="submit" name="action" value="Save WebApp Configuration" /> + </p><hr><p> + <i>All changes require restart to take effect. To change other webapp options, edit the webapps.config file.</i> + </p> + </form> +</div> +</div> +</body> +</html> diff --git a/apps/routerconsole/jsp/configkeyring.jsp b/apps/routerconsole/jsp/configkeyring.jsp index 5f31e1b3b7..4dbc914cd6 100644 --- a/apps/routerconsole/jsp/configkeyring.jsp +++ b/apps/routerconsole/jsp/configkeyring.jsp @@ -1,57 +1,63 @@ -<%@page contentType="text/html"%> -<%@page pageEncoding="UTF-8"%> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html><head> -<title>I2P Router Console - config keyring</title> -<%@include file="css.jsp" %> -</head><body> - -<%@include file="nav.jsp" %> -<%@include file="summary.jsp" %> -<h1>I2P Keyring Configuration</h1> -<div class="main" id="main"> - <%@include file="confignav.jsp" %> - - <jsp:useBean class="net.i2p.router.web.ConfigKeyringHandler" id="formhandler" scope="request" /> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> - - - - <jsp:useBean class="net.i2p.router.web.ConfigKeyringHelper" id="keyringhelper" scope="request" /> - <jsp:setProperty name="keyringhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - - <p> - <h2>Keyring</h2> - The router keyring is used to decrypt encrypted leaseSets. - The keyring may contain keys for local or remote encrypted destinations. - <p><jsp:getProperty name="keyringhelper" property="summary" /> - </p> - - <hr /> - - <form action="configkeyring.jsp" method="POST"> - <% String prev = System.getProperty("net.i2p.router.web.ConfigKeyringHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigKeyringHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigKeyringHandler.nonce", new java.util.Random().nextLong()+""); %> - <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigKeyringHandler.nonce")%>" /> - <h2>Manual Keyring Addition</h2> - Enter keys for encrypted remote destinations here. - Keys for local destinations must be entered on the <a href="i2ptunnel/index.jsp">I2PTunnel page</a>. - <p> - <table> - <tr><td>Dest. name, hash, or full key: - <td><textarea name="peer" cols="44" rows="1" style="height: 3em;" wrap="off"></textarea> - <tr><td align="right">Session Key: - <td><input type="text" size="55" name="key" /> - <tr><td><td><input type="submit" name="action" value="Add key" /> - </table> - </form> - - -</div> - -</body> -</html> +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html><head> +<title>I2P Router Console - config keyring</title> +<%@include file="css.jsp" %> +</head><body> + +<%@include file="nav.jsp" %> +<%@include file="summary.jsp" %> +<h1>I2P Keyring Configuration</h1> +<div class="main" id="main"> + <%@include file="confignav.jsp" %> + + <jsp:useBean class="net.i2p.router.web.ConfigKeyringHandler" id="formhandler" scope="request" /> + <jsp:setProperty name="formhandler" property="*" /> + <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> + <jsp:getProperty name="formhandler" property="allMessages" /> + + + + <jsp:useBean class="net.i2p.router.web.ConfigKeyringHelper" id="keyringhelper" scope="request" /> + <jsp:setProperty name="keyringhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> +<div class="configure"> + <p> + <h2>Keyring</h2> + The router keyring is used to decrypt encrypted leaseSets. + The keyring may contain keys for local or remote encrypted destinations. + <p><jsp:getProperty name="keyringhelper" property="summary" /> + </p> + + <hr /> + + <form action="configkeyring.jsp" method="POST"> + <% String prev = System.getProperty("net.i2p.router.web.ConfigKeyringHandler.nonce"); + if (prev != null) System.setProperty("net.i2p.router.web.ConfigKeyringHandler.noncePrev", prev); + System.setProperty("net.i2p.router.web.ConfigKeyringHandler.nonce", new java.util.Random().nextLong()+""); %> + <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigKeyringHandler.nonce")%>" /> + <h2>Manual Keyring Addition</h2> + Enter keys for encrypted remote destinations here. + Keys for local destinations must be entered on the <a href="i2ptunnel/index.jsp">I2PTunnel page</a>. + <p> + <table> + <tr> + <td>Dest. name, hash, or full key: + <td><textarea name="peer" cols="44" rows="1" style="height: 3em;" wrap="off"></textarea> + <tr> + <td align="right">Session Key: + <td><input type="text" size="55" name="key" /> + <tr> + <td> + <td><div align="right"> + <input type="submit" name="action" value="Add key" /> + </div> + </table> + </form> + + +</div> +</div> +</body> +</html> diff --git a/apps/routerconsole/jsp/configlogging.jsp b/apps/routerconsole/jsp/configlogging.jsp index a3f854c0eb..3f4c6daa22 100644 --- a/apps/routerconsole/jsp/configlogging.jsp +++ b/apps/routerconsole/jsp/configlogging.jsp @@ -1,54 +1,68 @@ -<%@page contentType="text/html"%> -<%@page pageEncoding="UTF-8"%> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html><head> -<title>I2P Router Console - config logging</title> -<%@include file="css.jsp" %> -</head><body> -<jsp:useBean class="net.i2p.router.web.ConfigLoggingHelper" id="logginghelper" scope="request" /> -<jsp:setProperty name="logginghelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - -<%@include file="nav.jsp" %> -<%@include file="summary.jsp" %> -<h1>I2P Logging Configuration</h1> -<div class="main" id="main"> - <%@include file="confignav.jsp" %> - - <jsp:useBean class="net.i2p.router.web.ConfigLoggingHandler" id="formhandler" scope="request" /> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> - - <form action="configlogging.jsp" method="POST"> - <% String prev = System.getProperty("net.i2p.router.web.ConfigLoggingHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigLoggingHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigLoggingHandler.nonce", new java.util.Random().nextLong()+""); %> - <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigLoggingHandler.nonce")%>" /> - <input type="hidden" name="action" value="blah" /> - <table border="0" cellspacing="5"> - <tr><td valign="top"><b>Logging filename:</b> - <td><input type="text" name="logfilename" size="40" value="<jsp:getProperty name="logginghelper" property="logFilePattern" />" /><br /> - <i>(the symbol '@' will be replaced during log rotation)</i> - <tr><td valign="top"><b>Log record format:</b> - <td><input type="text" name="logformat" size="20" value="<jsp:getProperty name="logginghelper" property="recordPattern" />" /><br /> - <i>(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)</i> - <tr><td valign="top"><b>Log date format:</b> - <td><input type="text" name="logdateformat" size="20" value="<jsp:getProperty name="logginghelper" property="datePattern" />" /><br /> - <i>('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)</i> - <tr><td valign="top"><b>Max log file size:</b> - <td><input type="text" name="logfilesize" size="4" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" /><br /> - <tr><td valign="top"><b>Default log level:</b> - <td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /> - <br /><i>(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)</i> - <tr><td valign="top"><b>Log level overrides:</b> - <td><jsp:getProperty name="logginghelper" property="logLevelTable" /> - <tr><td><td> - <input type="submit" name="shouldsave" value="Save changes" /> - <input type="reset" value="Cancel" /> - </table> - </form> -</div> - -</body> -</html> +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html><head> +<title>I2P Router Console - config logging</title> +<%@include file="css.jsp" %> +</head><body> +<jsp:useBean class="net.i2p.router.web.ConfigLoggingHelper" id="logginghelper" scope="request" /> +<jsp:setProperty name="logginghelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> + +<%@include file="nav.jsp" %> +<%@include file="summary.jsp" %> +<h1>I2P Logging Configuration</h1> +<div class="main" id="main"> + <%@include file="confignav.jsp" %> + + <jsp:useBean class="net.i2p.router.web.ConfigLoggingHandler" id="formhandler" scope="request" /> + <jsp:setProperty name="formhandler" property="*" /> + <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> + <jsp:getProperty name="formhandler" property="allMessages" /> +<div class="configure"> + <form action="configlogging.jsp" method="POST"> + <% String prev = System.getProperty("net.i2p.router.web.ConfigLoggingHandler.nonce"); + if (prev != null) System.setProperty("net.i2p.router.web.ConfigLoggingHandler.noncePrev", prev); + System.setProperty("net.i2p.router.web.ConfigLoggingHandler.nonce", new java.util.Random().nextLong()+""); %> + <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigLoggingHandler.nonce")%>" /> + <input type="hidden" name="action" value="blah" /> + <table border="0" cellspacing="5"> + <tr> + <td valign="top"><b>Logging filename:</b> + <td><input type="text" name="logfilename" size="40" value="<jsp:getProperty name="logginghelper" property="logFilePattern" />" /> + <br /> <i>(the symbol '@' will be replaced during log rotation)</i> + <tr> + <td valign="top"><b>Log record format:</b> + <td><input type="text" name="logformat" size="20" value="<jsp:getProperty name="logginghelper" property="recordPattern" />" /> + <br /> <i>(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, + 'm' = message)</i> + <tr> + <td valign="top"><b>Log date format:</b> + <td><input type="text" name="logdateformat" size="20" value="<jsp:getProperty name="logginghelper" property="datePattern" />" /> + <br /> <i>('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' + = second, 'SSS' = millisecond)</i> + <tr> + <td valign="top"><b>Max log file size:</b> + <td><input type="text" name="logfilesize" size="4" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" /> + <br /> + <tr> + <td valign="top"><b>Default log level:</b> + <td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /> <br /> <i>(DEBUG and INFO are not recommended defaults, + as they will drastically slow down your router)</i> + <tr> + <td valign="top"><b>Log level overrides:</b> + <td><jsp:getProperty name="logginghelper" property="logLevelTable" /> + <tr> + <td colspan="2" valign="top"><hr> + <tr> + <td> + <td> <div align="right"> + <input type="submit" name="shouldsave" value="Save changes" /> + <input type="reset" value="Cancel" /> + </div> + </table> + </form> +</div> +</div> +</body> +</html> diff --git a/apps/routerconsole/jsp/configpeer.jsp b/apps/routerconsole/jsp/configpeer.jsp index b465559cd1..2fc0de9ec3 100644 --- a/apps/routerconsole/jsp/configpeer.jsp +++ b/apps/routerconsole/jsp/configpeer.jsp @@ -1,84 +1,87 @@ -<%@page contentType="text/html"%> -<%@page pageEncoding="UTF-8"%> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html><head> -<title>I2P Router Console - config peers</title> -<%@include file="css.jsp" %> -</head><body> - -<%@include file="nav.jsp" %> -<%@include file="summary.jsp" %> -<h1>I2P Peer Configuration</h1> -<div class="main" id="main"> - <%@include file="confignav.jsp" %> - - <jsp:useBean class="net.i2p.router.web.ConfigPeerHandler" id="formhandler" scope="request" /> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> - - - - <jsp:useBean class="net.i2p.router.web.ConfigPeerHelper" id="peerhelper" scope="request" /> - <jsp:setProperty name="peerhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - - <% String peer = ""; - if (request.getParameter("peer") != null) - peer = request.getParameter("peer"); - %> - - <form action="configpeer.jsp" method="POST"> - <% String prev = System.getProperty("net.i2p.router.web.ConfigPeerHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigPeerHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigPeerHandler.nonce", new java.util.Random().nextLong()+""); %> - <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigPeerHandler.nonce")%>" /> - <hr /> - <p> - <a name="sh"> </a> - <a name="unsh"> </a> - <a name="bonus"> </a> - <h2>Manual Peer Controls</h2> - Router Hash: - <input type="text" size="55" name="peer" value="<%=peer%>" /> - <h3>Manually Shitlist / Unshitlist a Router</h3> - Shitlisting will prevent the participation of this peer in tunnels you create. - <p> - <input type="submit" name="action" value="Shitlist peer until restart" /> - <input type="submit" name="action" value="Unshitlist peer" /> - <% if (! "".equals(peer)) { %> - <font color="blue"><---- click to verify action</font> - <% } %> - </p> - - <h3>Adjust Profile Bonuses</h3> - Bonuses may be positive or negative, and affect the peer's inclusion in Fast and High Capacity tiers. - Fast peers are used for client tunnels, and High Capacity peers are used for some exploratory tunnels. - Current bonuses are displayed on the <a href="profiles.jsp">profiles page</a>. - <p> - <% long speed = 0; long capacity = 0; - if (! "".equals(peer)) { - // get existing bonus values? - } - %> - Speed: - <input type="text" size="8" name="speed" value="<%=speed%>" /> - Capacity: - <input type="text" size="8" name="capacity" value="<%=capacity%>" /> - <input type="submit" name="action" value="Adjust peer bonuses" /> - </p> - </form> - - <hr /> - <a name="shitlist"> </a> - <jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" /> - <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - <jsp:getProperty name="profilesHelper" property="shitlistSummary" /> - <hr /> - <jsp:getProperty name="peerhelper" property="blocklistSummary" /> - - -</div> - -</body> -</html> +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html><head> +<title>I2P Router Console - config peers</title> +<%@include file="css.jsp" %> +</head><body> + +<%@include file="nav.jsp" %> +<%@include file="summary.jsp" %> +<h1>I2P Peer Configuration</h1> +<div class="main" id="main"> + <%@include file="confignav.jsp" %> + + <jsp:useBean class="net.i2p.router.web.ConfigPeerHandler" id="formhandler" scope="request" /> + <jsp:setProperty name="formhandler" property="*" /> + <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> + <jsp:getProperty name="formhandler" property="allMessages" /> + + + + <jsp:useBean class="net.i2p.router.web.ConfigPeerHelper" id="peerhelper" scope="request" /> + <jsp:setProperty name="peerhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> + + <% String peer = ""; + if (request.getParameter("peer") != null) + peer = request.getParameter("peer"); + %> + <div class="configure"> + <form action="configpeer.jsp" method="POST"> + <% String prev = System.getProperty("net.i2p.router.web.ConfigPeerHandler.nonce"); + if (prev != null) System.setProperty("net.i2p.router.web.ConfigPeerHandler.noncePrev", prev); + System.setProperty("net.i2p.router.web.ConfigPeerHandler.nonce", new java.util.Random().nextLong()+""); %> + <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigPeerHandler.nonce")%>" /> + <hr /> + <p> + <a name="sh"> </a> + <a name="unsh"> </a> + <a name="bonus"> </a> + <h2>Manual Peer Controls</h2> + Router Hash: + <input type="text" size="55" name="peer" value="<%=peer%>" /> + <h3>Manually Shitlist / Unshitlist a Router</h3> + Shitlisting will prevent the participation of this peer in tunnels you create. + <hr /> + <p> + <input type="submit" name="action" value="Shitlist peer until restart" /> + <input type="submit" name="action" value="Unshitlist peer" /> + <% if (! "".equals(peer)) { %> + <font color="blue"><---- click to verify action</font> + <% } %> + </p> + + <h3>Adjust Profile Bonuses</h3> + Bonuses may be positive or negative, and affect the peer's inclusion in Fast + and High Capacity tiers. Fast peers are used for client tunnels, and High + Capacity peers are used for some exploratory tunnels. Current bonuses are + displayed on the <a href="profiles.jsp">profiles page</a>. + <hr /> + <p> + <% long speed = 0; long capacity = 0; + if (! "".equals(peer)) { + // get existing bonus values? + } + %> + Speed: + <input type="text" size="8" name="speed" value="<%=speed%>" /> + Capacity: + <input type="text" size="8" name="capacity" value="<%=capacity%>" /> + <input type="submit" name="action" value="Adjust peer bonuses" /> + </p> + </form> + + <hr /> + <a name="shitlist"> </a> + <jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" /> + <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> + <jsp:getProperty name="profilesHelper" property="shitlistSummary" /> + <hr /> + <jsp:getProperty name="peerhelper" property="blocklistSummary" /> + + +</div> +</div> +</body> +</html> diff --git a/apps/routerconsole/jsp/configservice.jsp b/apps/routerconsole/jsp/configservice.jsp index e465757fff..d2ed15b221 100644 --- a/apps/routerconsole/jsp/configservice.jsp +++ b/apps/routerconsole/jsp/configservice.jsp @@ -1,87 +1,87 @@ -<%@page contentType="text/html"%> -<%@page pageEncoding="UTF-8"%> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html><head> -<title>I2P Router Console - config service</title> -<%@include file="css.jsp" %> -</head><body> - -<%@include file="nav.jsp" %> -<%@include file="summary.jsp" %> -<h1>I2P Service Configuration</h1> -<div class="main" id="main"> - <%@include file="confignav.jsp" %> - - <jsp:useBean class="net.i2p.router.web.ConfigServiceHandler" id="formhandler" scope="request" /> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> - - <form action="configservice.jsp" method="POST"> - <% String prev = System.getProperty("net.i2p.router.web.ConfigServiceHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigServiceHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigServiceHandler.nonce", new java.util.Random().nextLong()+""); %> - <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigServiceHandler.nonce")%>" /> - <h4>Shutdown the router</h4> - <p>Graceful shutdown lets the router satisfy the agreements it has already made - before shutting down, but may take a few minutes. If you need to kill the - router immediately, that option is available as well.</p> - - <input type="submit" name="action" value="Shutdown gracefully" /> - <input type="submit" name="action" value="Shutdown immediately" /> - <input type="submit" name="action" value="Cancel graceful shutdown" /> - <hr> - <% if (System.getProperty("wrapper.version") != null) { %> - <p>If you want the router to restart itself after shutting down, you can choose one of - the following. This is useful in some situations - for example, if you changed - some settings that client applications only read at startup, such as the routerconsole password - or the interface it listens on. A graceful restart will take a few minutes (but your peers - will appreciate your patience), while a hard restart does so immediately. After tearing down - the router, it will wait 1 minute before starting back up again.</p> - - <input type="submit" name="action" value="Graceful restart" /> - <input type="submit" name="action" value="Hard restart" /> - <% } %> - <hr> - <% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %> - <h4>Systray integration</h4> - <p>On the windows platform, there is a small application to sit in the system - tray, allowing you to view the router's status (later on, I2P client applications - will be able to integrate their own functionality into the system tray as well). - If you are on windows, you can either enable or disable that icon here.</p> - <input type="submit" name="action" value="Show systray icon" /> - <input type="submit" name="action" value="Hide systray icon" /> - <hr> - <h4>Run on startup</h4> - <p>You can control whether I2P is run on startup or not by selecting one of the - following options - I2P will install (or remove) a service accordingly. You can - also run the <code>install_i2p_service_winnt.bat</code> (or - <code>uninstall_i2p_service_winnt.bat</code>) from the command line, if you prefer.</p> - <input type="submit" name="action" value="Run I2P on startup" /> - <input type="submit" name="action" value="Don't run I2P on startup" /><br /> - <p><b>Note:</b> If you are running I2P as service right now, removing it will shut - down your router immediately. You may want to consider shutting down gracefully, as - above, then running uninstall_i2p_service_winnt.bat.</p><hr> - <% } %> - - <% if (System.getProperty("wrapper.version") != null) { %> - <h4>Debugging</h4> - <p>At times, it may be helpful to debug I2P by getting a thread dump. To do so, - please select the following option and review the thread dumped to - <a href="logs.jsp#servicelogs">wrapper.log</a>.</p> - <input type="submit" name="action" value="Dump threads" /> - <% } %><hr> - - <h4>Launch browser on router startup?</h4> - <p>I2P's main configuration interface is this web console, so for your convenience - I2P can launch a web browser pointing at - <a href="http://127.0.0.1:7657/index.jsp">http://127.0.0.1:7657/index.jsp</a> whenever - the router starts up.</p> - <input type="submit" name="action" value="View console on startup" /> - <input type="submit" name="action" value="Do not view console on startup" /> - </form><hr> -</div> - -</body> -</html> +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html><head> +<title>I2P Router Console - config service</title> +<%@include file="css.jsp" %> +</head><body> + +<%@include file="nav.jsp" %> +<%@include file="summary.jsp" %> +<h1>I2P Service Configuration</h1> +<div class="main" id="main"> + <%@include file="confignav.jsp" %> + + <jsp:useBean class="net.i2p.router.web.ConfigServiceHandler" id="formhandler" scope="request" /> + <jsp:setProperty name="formhandler" property="*" /> + <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> + <jsp:getProperty name="formhandler" property="allMessages" /> + <div class="configure"> + <form action="configservice.jsp" method="POST"> + <% String prev = System.getProperty("net.i2p.router.web.ConfigServiceHandler.nonce"); + if (prev != null) System.setProperty("net.i2p.router.web.ConfigServiceHandler.noncePrev", prev); + System.setProperty("net.i2p.router.web.ConfigServiceHandler.nonce", new java.util.Random().nextLong()+""); %> + <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigServiceHandler.nonce")%>" /> + <h4>Shutdown the router</h4> + <p>Graceful shutdown lets the router satisfy the agreements it has already made + before shutting down, but may take a few minutes. If you need to kill the + router immediately, that option is available as well.</p> + + <input type="submit" name="action" value="Shutdown gracefully" /> + <input type="submit" name="action" value="Shutdown immediately" /> + <input type="submit" name="action" value="Cancel graceful shutdown" /> + <hr> + <% if (System.getProperty("wrapper.version") != null) { %> + <p>If you want the router to restart itself after shutting down, you can choose one of + the following. This is useful in some situations - for example, if you changed + some settings that client applications only read at startup, such as the routerconsole password + or the interface it listens on. A graceful restart will take a few minutes (but your peers + will appreciate your patience), while a hard restart does so immediately. After tearing down + the router, it will wait 1 minute before starting back up again.</p> + + <input type="submit" name="action" value="Graceful restart" /> + <input type="submit" name="action" value="Hard restart" /> + <% } %> + <hr> + <% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %> + <h4>Systray integration</h4> + <p>On the windows platform, there is a small application to sit in the system + tray, allowing you to view the router's status (later on, I2P client applications + will be able to integrate their own functionality into the system tray as well). + If you are on windows, you can either enable or disable that icon here.</p> + <input type="submit" name="action" value="Show systray icon" /> + <input type="submit" name="action" value="Hide systray icon" /> + <hr> + <h4>Run on startup</h4> + <p>You can control whether I2P is run on startup or not by selecting one of the + following options - I2P will install (or remove) a service accordingly. You can + also run the <code>install_i2p_service_winnt.bat</code> (or + <code>uninstall_i2p_service_winnt.bat</code>) from the command line, if you prefer.</p> + <input type="submit" name="action" value="Run I2P on startup" /> + <input type="submit" name="action" value="Don't run I2P on startup" /><br /> + <p><b>Note:</b> If you are running I2P as service right now, removing it will shut + down your router immediately. You may want to consider shutting down gracefully, as + above, then running uninstall_i2p_service_winnt.bat.</p><hr> + <% } %> + + <% if (System.getProperty("wrapper.version") != null) { %> + <h4>Debugging</h4> + <p>At times, it may be helpful to debug I2P by getting a thread dump. To do so, + please select the following option and review the thread dumped to + <a href="logs.jsp#servicelogs">wrapper.log</a>.</p> + <input type="submit" name="action" value="Dump threads" /> + <% } %><hr> + + <h4>Launch browser on router startup?</h4> + <p>I2P's main configuration interface is this web console, so for your convenience + I2P can launch a web browser pointing at + <a href="http://127.0.0.1:7657/index.jsp">http://127.0.0.1:7657/index.jsp</a> whenever + the router starts up.</p> + <input type="submit" name="action" value="View console on startup" /> + <input type="submit" name="action" value="Do not view console on startup" /> + </form><hr> +</div> +</div> +</body> +</html> diff --git a/apps/routerconsole/jsp/configstats.jsp b/apps/routerconsole/jsp/configstats.jsp index 82e70b9c72..039f9b55f9 100644 --- a/apps/routerconsole/jsp/configstats.jsp +++ b/apps/routerconsole/jsp/configstats.jsp @@ -65,7 +65,7 @@ function toggleAll(category) <jsp:useBean class="net.i2p.router.web.ConfigStatsHelper" id="statshelper" scope="request" /> <jsp:setProperty name="statshelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - <div class="caonfigure"> + <div class="configure"> <form id="statsForm" name="statsForm" action="configstats.jsp" method="POST"> <% String prev = System.getProperty("net.i2p.router.web.ConfigStatsHandler.nonce"); if (prev != null) System.setProperty("net.i2p.router.web.ConfigStatsHandler.noncePrev", prev); diff --git a/apps/routerconsole/jsp/configupdate.jsp b/apps/routerconsole/jsp/configupdate.jsp index 9127eaa9b2..72aac377b7 100644 --- a/apps/routerconsole/jsp/configupdate.jsp +++ b/apps/routerconsole/jsp/configupdate.jsp @@ -1,59 +1,81 @@ -<%@page contentType="text/html"%> -<%@page pageEncoding="UTF-8"%> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html><head> -<title>I2P Router Console - config update</title> -<%@include file="css.jsp" %> -</head><body> - -<%@include file="nav.jsp" %> -<%@include file="summary.jsp" %> -<h1>I2P Update Configuration</h1> -<div class="main" id="main"> - <%@include file="confignav.jsp" %> - - <jsp:useBean class="net.i2p.router.web.ConfigUpdateHandler" id="formhandler" scope="request" /> - <jsp:setProperty name="formhandler" property="*" /> - <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - <jsp:getProperty name="formhandler" property="allMessages" /> - - <jsp:useBean class="net.i2p.router.web.ConfigUpdateHelper" id="updatehelper" scope="request" /> - <jsp:setProperty name="updatehelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - - <br /><i><jsp:getProperty name="updatehelper" property="newsStatus" /></i><br /> <br /> - <form action="configupdate.jsp" method="POST"> - <% String prev = System.getProperty("net.i2p.router.web.ConfigUpdateHandler.nonce"); - if (prev != null) System.setProperty("net.i2p.router.web.ConfigUpdateHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.ConfigUpdateHandler.nonce", new java.util.Random().nextLong()+""); %> - <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigUpdateHandler.nonce")%>" /> -<table border="0" cellspacing="5"><tr><td colspan="2"></tr><tr><td><b>News:</b></td><td> - <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> - <i>Update In Progress</i><br /> - <% } else { %> - <input type="submit" name="action" value="Check for update now" /> -<% } %></tr> -<tr><td colspan="2"><hr /></td></tr> -<tr><td><b>News URL:</b></td> -<td><input type="text" size="60" name="newsURL" value="<jsp:getProperty name="updatehelper" property="newsURL" />"></td></tr> -<tr><td><b>Refresh frequency:</b> -<td><jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" /> -<tr><td><b>Update policy:</b> -<td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" /> -<tr><td><b>Update through the eepProxy?</b> -<td><jsp:getProperty name="updatehelper" property="updateThroughProxy" /> -<tr><td><b>eepProxy host:</b> -<td><input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" /> -<tr><td><b>eepProxy port:</b> -<td><input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" /> -<tr><td><b>Update URLs:</b> -<td><textarea name="updateURL" wrap="off"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea> -<tr><td><b>Trusted keys:</b> -<td><textarea name="trustedKeys" wrap="off"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea> -<tr><tr><td colspan="2"><hr /><tr> -<tr><td><td><input type="submit" name="action" value="Save" /> <input type="reset" value="Cancel" /> -</table> - </form> -</div> -</body> -</html> +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<html><head> +<title>I2P Router Console - config update</title> +<%@include file="css.jsp" %> +</head><body> + +<%@include file="nav.jsp" %> +<%@include file="summary.jsp" %> +<h1>I2P Update Configuration</h1> +<div class="main" id="main"> + <%@include file="confignav.jsp" %> + + <jsp:useBean class="net.i2p.router.web.ConfigUpdateHandler" id="formhandler" scope="request" /> + <jsp:setProperty name="formhandler" property="*" /> + <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> + <jsp:getProperty name="formhandler" property="allMessages" /> + + <jsp:useBean class="net.i2p.router.web.ConfigUpdateHelper" id="updatehelper" scope="request" /> + <jsp:setProperty name="updatehelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> +<div class="messages"> +<i><jsp:getProperty name="updatehelper" property="newsStatus" /></i></div> +<div class="configure"> + <form action="configupdate.jsp" method="POST"> + <% String prev = System.getProperty("net.i2p.router.web.ConfigUpdateHandler.nonce"); + if (prev != null) System.setProperty("net.i2p.router.web.ConfigUpdateHandler.noncePrev", prev); + System.setProperty("net.i2p.router.web.ConfigUpdateHandler.nonce", new java.util.Random().nextLong()+""); %> + <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigUpdateHandler.nonce")%>" /> + <table border="0" cellspacing="5"> + <tr> + <td colspan="2"></tr> + <tr> + <td><b>News:</b></td> + <td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i>Update In Progress</i><br /> <% } else { %> <input type="submit" name="action" value="Check for update now" /> + <% } %></tr> + <tr> + <td colspan="2"><hr /></td> + </tr> + <tr> + <td><b>News URL:</b></td> + <td><input type="text" size="60" name="newsURL" value="<jsp:getProperty name="updatehelper" property="newsURL" />"></td> + </tr> + <tr> + <td><b>Refresh frequency:</b> + <td><jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" /> + <tr> + <td><b>Update policy:</b> + <td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" /> + <tr> + <td><b>Update through the eepProxy?</b> + <td><jsp:getProperty name="updatehelper" property="updateThroughProxy" /> + <tr> + <td><b>eepProxy host:</b> + <td><input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" /> + <tr> + <td><b>eepProxy port:</b> + <td><input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" /> + <tr> + <td><b>Update URLs:</b> + <td><textarea name="updateURL" wrap="off"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea> + <tr> + <td><b>Trusted keys:</b> + <td><textarea name="trustedKeys" wrap="off"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea> + <tr> + <tr> + <td colspan="2"><hr /> + <tr> + <tr> + <td> + <td><div align="right"> + <input type="submit" name="action" value="Save" /> + <input type="reset" value="Cancel" /> + </div> + </table> + </form> +</div> +</div> +</body> +</html> -- GitLab