propagate from branch 'i2p.i2p.zzz.test3' (head d65e8465671ba0b8f6f013b56045bf867e10a78e)

to branch 'i2p.i2p' (head e2ee75916f2ff6bd698585808a81071b44c978b1)
This commit is contained in:
zzz
2009-08-19 23:44:19 +00:00
109 changed files with 1699 additions and 1815 deletions

View File

@ -17,6 +17,7 @@ public class ConfigAdvancedHandler extends FormHandler {
private boolean _shouldSave;
private String _config;
@Override
protected void processForm() {
if (_shouldSave) {
saveChanges();

View File

@ -4,7 +4,6 @@ import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
import net.i2p.router.RouterContext;
public class ConfigAdvancedHelper extends HelperBase {
public ConfigAdvancedHelper() {}

View File

@ -20,13 +20,14 @@ import org.mortbay.jetty.Server;
* Saves changes to clients.config or webapps.config
*/
public class ConfigClientsHandler extends FormHandler {
private Log _log;
private Log configClient_log;
private Map _settings;
public ConfigClientsHandler() {
_log = ContextHelper.getContext(null).logManager().getLog(ConfigClientsHandler.class);
configClient_log = ContextHelper.getContext(null).logManager().getLog(ConfigClientsHandler.class);
}
@Override
protected void processForm() {
if (_action.startsWith("Save Client")) {
saveClientChanges();
@ -80,7 +81,7 @@ public class ConfigClientsHandler extends FormHandler {
return;
}
ClientAppConfig ca = (ClientAppConfig) clients.get(i);
LoadClientAppsJob.runClient(ca.className, ca.clientName, LoadClientAppsJob.parseArgs(ca.args), _log);
LoadClientAppsJob.runClient(ca.className, ca.clientName, LoadClientAppsJob.parseArgs(ca.args), configClient_log);
addFormNotice("Client " + ca.clientName + " started.");
}

View File

@ -6,7 +6,6 @@ import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;
import net.i2p.router.RouterContext;
import net.i2p.router.startup.ClientAppConfig;
public class ConfigClientsHelper extends HelperBase {

View File

@ -0,0 +1,61 @@
package net.i2p.router.web;
/**
* Handler to deal with console config.
*
*/
public class ConfigConsoleHandler extends FormHandler {
private boolean _forceRestart;
private boolean _shouldSave;
private String _configPass;
// This is possibly the wrong place for this...
// private String _configPort;
@Override
protected void processForm() {
if(_shouldSave) {
saveChanges();
} else {
// noop
}
}
public void setShouldsave(String moo) {
_shouldSave = true;
}
public void setRestart(String moo) {
_forceRestart = true;
}
public void setConfigPass(String val) {
_configPass = val.trim();
}
/**
* The user made changes to the config and wants to save them, so
* lets go ahead and do so.
*
*/
private void saveChanges() {
if(_configPass != null) {
_context.router().setConfigSetting("consolePassword", _configPass);
} else {
_context.router().setConfigSetting("consolePassword", "");
}
boolean saved = _context.router().saveConfig();
if(saved) {
addFormNotice("Configuration saved successfully");
} else {
addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs");
}
if(_forceRestart) {
addFormNotice("Performing a soft restart");
_context.router().restart();
addFormNotice("Soft restart complete");
}
}
}

View File

@ -0,0 +1,14 @@
package net.i2p.router.web;
public class ConfigConsoleHelper extends HelperBase {
private String consolePassword="consolePassword";
public ConfigConsoleHelper() {}
public String getSettings() {
StringBuilder buf = new StringBuilder(4*1024);
buf.append(consolePassword);
return buf.toString();
}
}

View File

@ -1,6 +1,5 @@
package net.i2p.router.web;
import net.i2p.I2PAppContext;
import net.i2p.data.DataFormatException;
import net.i2p.data.Hash;
import net.i2p.data.SessionKey;
@ -13,6 +12,7 @@ public class ConfigKeyringHandler extends FormHandler {
private String _peer;
private String _key;
@Override
protected void processForm() {
if ("Add key".equals(_action)) {
if (_peer == null || _key == null) {

View File

@ -4,7 +4,6 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import net.i2p.router.RouterContext;
public class ConfigKeyringHelper extends HelperBase {
public ConfigKeyringHelper() {}

View File

@ -18,6 +18,7 @@ public class ConfigLoggingHandler extends FormHandler {
private String _dateFormat;
private String _fileSize;
@Override
protected void processForm() {
if (_shouldSave) {
saveChanges();

View File

@ -4,7 +4,6 @@ import java.util.Iterator;
import java.util.Properties;
import java.util.TreeSet;
import net.i2p.router.RouterContext;
public class ConfigLoggingHelper extends HelperBase {
public ConfigLoggingHelper() {}
@ -43,7 +42,7 @@ public class ConfigLoggingHelper extends HelperBase {
String level = limits.getProperty(prefix);
buf.append(prefix).append('=').append(level).append('\n');
}
buf.append("</textarea><br />\n");
buf.append("</textarea><br>\n");
buf.append("<i>Add additional logging statements above. Example: net.i2p.router.tunnel=WARN</i><br>");
buf.append("<i>Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN</i><br>");
buf.append("<i>Valid levels are DEBUG, INFO, WARN, ERROR, CRIT</i>\n");

View File

@ -1,12 +1,10 @@
package net.i2p.router.web;
import net.i2p.data.RouterInfo;
import net.i2p.router.Router;
import net.i2p.router.transport.FIFOBandwidthRefiller;
import net.i2p.router.transport.TransportManager;
import net.i2p.router.transport.udp.UDPTransport;
import net.i2p.router.web.ConfigServiceHandler.UpdateWrapperManagerAndRekeyTask;
import net.i2p.time.Timestamper;
/**
* Handler to deal with form submissions from the main config form and act
@ -44,6 +42,7 @@ public class ConfigNetHandler extends FormHandler {
private static final boolean _ratesOnly = false; // always false - delete me
private static final String PROP_HIDDEN = Router.PROP_HIDDEN_HIDDEN; // see Router for other choice
@Override
protected void processForm() {
if (_saveRequested || ( (_action != null) && ("Save changes".equals(_action)) )) {
saveChanges();

View File

@ -4,7 +4,6 @@ import net.i2p.data.DataHelper;
import net.i2p.data.RouterAddress;
import net.i2p.router.CommSystemFacade;
import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.router.transport.Addresses;
import net.i2p.router.transport.TransportManager;
import net.i2p.router.transport.udp.UDPAddress;

View File

@ -1,12 +1,8 @@
package net.i2p.router.web;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
import net.i2p.data.Hash;
import net.i2p.data.Base64;
import net.i2p.router.Router;
import net.i2p.router.peermanager.PeerProfile;
import net.i2p.util.Log;
/**
*
@ -16,6 +12,7 @@ public class ConfigPeerHandler extends FormHandler {
private String _speed;
private String _capacity;
@Override
protected void processForm() {
if ("Save Configuration".equals(_action)) {
_context.router().saveConfig();

View File

@ -4,7 +4,6 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import net.i2p.router.RouterContext;
public class ConfigPeerHelper extends HelperBase {
public ConfigPeerHelper() {}

View File

@ -49,16 +49,16 @@ public class ConfigRestartBean {
long timeRemaining = ctx.router().getShutdownTimeRemaining();
if (shuttingDown) {
if (timeRemaining <= 0) {
return "<b>Shutdown imminent</b>";
return "<center><b>Shutdown imminent</b></center>";
} else {
return "<b>Shutdown in " + DataHelper.formatDuration(timeRemaining) + "</b><br />"
return "<center><b>Shutdown in " + DataHelper.formatDuration(timeRemaining) + "</b></center><br>"
+ buttons(urlBase, systemNonce, "shutdownImmediate,Shutdown immediately,cancelShutdown,Cancel shutdown");
}
} else if (restarting) {
if (timeRemaining <= 0) {
return "<b>Restart imminent</b>";
return "<center><b>Restart imminent</b></center>";
} else {
return "<b>Restart in " + DataHelper.formatDuration(timeRemaining) + "</b><br />"
return "<center><b>Restart in " + DataHelper.formatDuration(timeRemaining) + "</b></center><br>"
+ buttons(urlBase, systemNonce, "restartImmediate,Restart immediately,cancelShutdown,Cancel restart");
}
} else {

View File

@ -1,13 +1,10 @@
package net.i2p.router.web;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import net.i2p.apps.systray.SysTray;
import net.i2p.apps.systray.UrlLauncher;
import net.i2p.data.DataHelper;
import net.i2p.router.Router;
import net.i2p.router.startup.ClientAppConfig;
@ -49,6 +46,7 @@ public class ConfigServiceHandler extends FormHandler {
}
}
@Override
protected void processForm() {
if (_action == null) return;
@ -95,9 +93,9 @@ public class ConfigServiceHandler extends FormHandler {
SysTray tray = SysTray.getInstance();
if (tray != null) {
tray.show();
addFormNotice("Systray enabled");
addFormNotice("System tray icon enabled.");
} else {
addFormNotice("Systray not supported on this platform");
addFormNotice("System tray icon feature not supported on this platform. Sorry!");
}
} catch (Throwable t) {
addFormError("Warning: unable to contact the systray manager - " + t.getMessage());
@ -107,9 +105,9 @@ public class ConfigServiceHandler extends FormHandler {
SysTray tray = SysTray.getInstance();
if (tray != null) {
tray.hide();
addFormNotice("Systray disabled");
addFormNotice("System tray icon disabled.");
} else {
addFormNotice("Systray not supported on this platform");
addFormNotice("System tray icon feature not supported on this platform. Sorry!");
}
} catch (Throwable t) {
addFormError("Warning: unable to contact the systray manager - " + t.getMessage());

View File

@ -28,6 +28,7 @@ public class ConfigStatsHandler extends FormHandler {
_isFull = false;
}
@Override
protected void processForm() {
saveChanges();
}

View File

@ -8,7 +8,6 @@ import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import net.i2p.router.RouterContext;
import net.i2p.stat.FrequencyStat;
import net.i2p.stat.Rate;
import net.i2p.stat.RateStat;

View File

@ -14,7 +14,7 @@ import net.i2p.util.Log;
*
*/
public class ConfigTunnelsHandler extends FormHandler {
private Log _log;
private Log configTunnel_log;
private Map _settings;
private boolean _shouldSave;
@ -22,6 +22,7 @@ public class ConfigTunnelsHandler extends FormHandler {
_shouldSave = false;
}
@Override
protected void processForm() {
if (_shouldSave) {
saveChanges();
@ -43,11 +44,11 @@ public class ConfigTunnelsHandler extends FormHandler {
*
*/
private void saveChanges() {
_log = _context.logManager().getLog(ConfigTunnelsHandler.class);
configTunnel_log = _context.logManager().getLog(ConfigTunnelsHandler.class);
boolean saveRequired = false;
if (_log.shouldLog(Log.DEBUG))
_log.debug("Saving changes, with props = " + _settings + ".");
if (configTunnel_log.shouldLog(Log.DEBUG))
configTunnel_log.debug("Saving changes, with props = " + _settings + ".");
int updated = 0;
int index = 0;
@ -110,16 +111,16 @@ public class ConfigTunnelsHandler extends FormHandler {
}
if ("exploratory".equals(poolName)) {
if (_log.shouldLog(Log.DEBUG)) {
_log.debug("Inbound exploratory settings: " + in);
_log.debug("Outbound exploratory settings: " + out);
if (configTunnel_log.shouldLog(Log.DEBUG)) {
configTunnel_log.debug("Inbound exploratory settings: " + in);
configTunnel_log.debug("Outbound exploratory settings: " + out);
}
_context.tunnelManager().setInboundSettings(in);
_context.tunnelManager().setOutboundSettings(out);
} else {
if (_log.shouldLog(Log.DEBUG)) {
_log.debug("Inbound settings for " + client.toBase64() + ": " + in);
_log.debug("Outbound settings for " + client.toBase64() + ": " + out);
if (configTunnel_log.shouldLog(Log.DEBUG)) {
configTunnel_log.debug("Inbound settings for " + client.toBase64() + ": " + in);
configTunnel_log.debug("Outbound settings for " + client.toBase64() + ": " + out);
}
_context.tunnelManager().setInboundSettings(client, in);
_context.tunnelManager().setOutboundSettings(client, out);

View File

@ -5,7 +5,6 @@ import java.util.Properties;
import java.util.Set;
import net.i2p.data.Destination;
import net.i2p.router.RouterContext;
import net.i2p.router.TunnelPoolSettings;
public class ConfigTunnelsHelper extends HelperBase {
@ -75,7 +74,7 @@ public class ConfigTunnelsHelper extends HelperBase {
out.getQuantity() + out.getBackupQuantity() >= WARN_QUANTITY)
buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include high tunnel quantities.</font></th></tr>");
buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\"/>&nbsp;&nbsp;Inbound</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\"/>&nbsp;&nbsp;Outbound</th></tr>\n");
buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\">&nbsp;&nbsp;Inbound</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\">&nbsp;&nbsp;Outbound</th></tr>\n");
// buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n");
@ -177,7 +176,7 @@ buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt
buf.append(prop).append("=").append(val).append(" ");
}
buf.append("\"/></td></tr>\n");
// buf.append("<tr><td colspan=\"3\"><hr /></td></tr>\n");
// buf.append("<tr><td colspan=\"3\"><br></td></tr>\n");
}
private void renderOptions(StringBuilder buf, int min, int max, int now, String prefix, String name) {

View File

@ -5,6 +5,7 @@ public class ConfigUIHandler extends FormHandler {
private boolean _shouldSave;
private String _config;
@Override
protected void processForm() {
if (_shouldSave)
saveChanges();

View File

@ -12,7 +12,7 @@ public class ConfigUIHelper extends HelperBase {
buf.append("<input type=\"radio\" class=\"optbox\" name=\"theme\" ");
if (theme.equals(current))
buf.append("checked=\"true\" ");
buf.append("value=\"").append(theme).append("\"/>").append(theme).append("<br />\n");
buf.append("value=\"").append(theme).append("\"/>").append(theme).append("<br>\n");
}
return buf.toString();
}

View File

@ -49,6 +49,7 @@ public class ConfigUpdateHandler extends FormHandler {
public static final String PROP_TRUSTED_KEYS = "router.trustedUpdateKeys";
@Override
protected void processForm() {
if ("Check for update now".equals(_action)) {
NewsFetcher fetcher = NewsFetcher.getInstance(I2PAppContext.getGlobalContext());

View File

@ -3,7 +3,6 @@ package net.i2p.router.web;
import net.i2p.I2PAppContext;
import net.i2p.crypto.TrustedUpdate;
import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext;
public class ConfigUpdateHelper extends HelperBase {
public ConfigUpdateHelper() {}

View File

@ -1,14 +1,12 @@
package net.i2p.router.web;
import java.io.IOException;
import java.io.Writer;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext;
import net.i2p.stat.Rate;
public class GraphHelper extends HelperBase {
@ -68,7 +66,7 @@ public class GraphHelper extends HelperBase {
+ "&amp;periodCount=" + _periodCount
+ "&amp;width=" + _width
+ "&amp;height=" + (_height - 14)
+ "\" title=\"Combined bandwidth graph\" /></a>\n");
+ "\" alt=\"Combined bandwidth graph\" title=\"Combined bandwidth graph\"></a>\n");
}
for (Iterator iter = ordered.iterator(); iter.hasNext(); ) {
@ -82,7 +80,7 @@ public class GraphHelper extends HelperBase {
+ "&amp;periodCount=" + (3 * _periodCount)
+ "&amp;width=" + (3 * _width)
+ "&amp;height=" + (3 * _height)
+ "\" target=\"_blank\" />");
+ "\" target=\"_blank\">");
_out.write("<img class=\"statimage\" border=\"0\" width=\""
+ (_width + 83) + "\" height=\"" + (_height + 92)
+ "\" src=\"viewstat.jsp?stat="
@ -92,11 +90,12 @@ public class GraphHelper extends HelperBase {
+ "&amp;periodCount=" + _periodCount
+ "&amp;width=" + _width
+ "&amp;height=" + _height
+ "\" title=\"" + title + "\" /></a>\n");
+ "\" alt=\"" + title
+ "\" title=\"" + title + "\"></a>\n");
}
if (_refreshDelaySeconds > 0)
// shorten the refresh by 3 seconds so we beat the iframe
_out.write("<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\" />\n");
_out.write("<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\">\n");
} catch (IOException ioe) {
ioe.printStackTrace();
@ -105,17 +104,16 @@ public class GraphHelper extends HelperBase {
}
public String getForm() {
try {
_out.write("<hr /><h3>Configure Graph Display</h3>");
_out.write("<p />[<a href=\"configstats.jsp\">Select Stats to Graph</a>]<p />");
_out.write("<br><h3>Configure Graph Display [<a href=\"configstats.jsp\">Select Stats</a>]</h3>");
_out.write("<form action=\"graphs.jsp\" method=\"GET\">");
_out.write("Periods: <input size=\"3\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\" /><br />\n");
_out.write("Plot averages: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"false\" " + (_showEvents ? "" : "checked=\"true\" ") + " /> ");
_out.write("or plot events: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"true\" "+ (_showEvents ? "checked=\"true\" " : "") + " /><br />\n");
_out.write("Periods: <input size=\"3\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\"><br>\n");
_out.write("Plot averages: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"false\" " + (_showEvents ? "" : "checked=\"true\" ") + "> ");
_out.write("or plot events: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"true\" "+ (_showEvents ? "checked=\"true\" " : "") + "><br>\n");
_out.write("Image sizes: width: <input size=\"4\" type=\"text\" name=\"width\" value=\"" + _width
+ "\" /> pixels, height: <input size=\"4\" type=\"text\" name=\"height\" value=\"" + _height
+ "\" /><br />\n");
_out.write("Refresh delay: <select name=\"refreshDelay\"><option value=\"60\">1 minute</option><option value=\"120\">2 minutes</option><option value=\"300\">5 minutes</option><option value=\"600\">10 minutes</option><option value=\"1800\">30 minutes</option><option value=\"3600\">1 hour</option><option value=\"-1\">Never</option></select><br />\n");
_out.write("<hr /><div class=\"formaction\"><input type=\"submit\" value=\"Redraw\" /></div></div>");
+ "\"> pixels, height: <input size=\"4\" type=\"text\" name=\"height\" value=\"" + _height
+ "\"><br>\n");
_out.write("Refresh delay: <select name=\"refreshDelay\"><option value=\"60\">1 minute</option><option value=\"120\">2 minutes</option><option value=\"300\">5 minutes</option><option value=\"600\">10 minutes</option><option value=\"1800\">30 minutes</option><option value=\"3600\">1 hour</option><option value=\"-1\">Never</option></select><br>\n");
_out.write("<hr><div class=\"formaction\"><input type=\"submit\" value=\"Redraw\"></div></form>");
} catch (IOException ioe) {
ioe.printStackTrace();
}

View File

@ -3,9 +3,7 @@ package net.i2p.router.web;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import net.i2p.router.RouterContext;
public class JobQueueHelper extends HelperBase {
public JobQueueHelper() {}

View File

@ -10,7 +10,7 @@ public class LogsHelper extends HelperBase {
public String getLogs() {
String str = formatMessages(_context.logManager().getBuffer().getMostRecentMessages());
return "Location: <code>" + _context.logManager().currentFile() + "</code><br /><br />" + str;
return "Location: <code>" + _context.logManager().currentFile() + "</code><br><br>" + str;
}
public String getCriticalLogs() {

View File

@ -4,7 +4,6 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import net.i2p.router.RouterContext;
public class NavHelper extends HelperBase {
private static Map _apps = new HashMap();

View File

@ -3,9 +3,7 @@ package net.i2p.router.web;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import net.i2p.router.RouterContext;
public class NetDbHelper extends HelperBase {
private String _routerPrefix;

View File

@ -3,9 +3,7 @@ package net.i2p.router.web;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import net.i2p.router.RouterContext;
public class OldConsoleHelper extends HelperBase {
public OldConsoleHelper() {}

View File

@ -1,9 +1,7 @@
package net.i2p.router.web;
import java.io.IOException;
import java.io.Writer;
import net.i2p.router.RouterContext;
public class PeerHelper extends HelperBase {
private int _sortFlags;

View File

@ -4,7 +4,6 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import net.i2p.router.RouterContext;
public class ProfilesHelper extends HelperBase {
public ProfilesHelper() {}

View File

@ -1,6 +1,5 @@
package net.i2p.router.web;
import java.io.Writer;
import java.util.Iterator;
import java.util.Set;

View File

@ -80,7 +80,7 @@ public class StatsGenerator {
buf.append(stat);
buf.append("\">");
buf.append(stat);
buf.append("</a></b><br />");
buf.append("</a></b><br>");
if (_context.statManager().isFrequency(stat))
renderFrequency(stat, buf);
else
@ -88,7 +88,7 @@ public class StatsGenerator {
out.write(buf.toString());
buf.setLength(0);
}
out.write("</ul><hr />");
out.write("</ul><br>");
}
out.flush();
}
@ -97,7 +97,7 @@ public class StatsGenerator {
FrequencyStat freq = _context.statManager().getFrequency(name);
buf.append("<i>");
buf.append(freq.getDescription());
buf.append("</i><br />");
buf.append("</i><br>");
long uptime = _context.router().getUptime();
long periods[] = freq.getPeriods();
Arrays.sort(periods);
@ -124,9 +124,9 @@ public class StatsGenerator {
buf.append(" using the lifetime of ");
buf.append(curFreq.getEventCount());
buf.append(" events)");
buf.append("<br />");
buf.append("<br>");
}
buf.append("<br />");
buf.append("<br>");
}
private void renderRate(String name, StringBuilder buf) {
@ -135,10 +135,10 @@ public class StatsGenerator {
if (! "".equals(d)) {
buf.append("<i>");
buf.append(d);
buf.append("</i><br />");
buf.append("</i><br>");
}
if (rate.getLifetimeEventCount() <= 0) {
buf.append("No lifetime events<br />&nbsp;<br />");
buf.append("No lifetime events<br>&nbsp;<br>");
return;
}
long now = _context.clock().now();
@ -217,9 +217,9 @@ public class StatsGenerator {
buf.append(num(rate.getLifetimeAverageValue()));
buf.append(" over ");
buf.append(rate.getLifetimeEventCount());
buf.append(" events<br /></li>");
buf.append(" events<br></li>");
buf.append("</ul>");
buf.append("<br />");
buf.append("<br>");
}
private static void renderPeriod(StringBuilder buf, long period, String name) {

View File

@ -1,15 +1,12 @@
package net.i2p.router.web;
import java.text.Collator;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import net.i2p.data.DataHelper;
import net.i2p.data.Destination;
@ -18,7 +15,6 @@ import net.i2p.data.LeaseSet;
import net.i2p.data.RouterAddress;
import net.i2p.router.CommSystemFacade;
import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.router.RouterVersion;
import net.i2p.router.TunnelPoolSettings;
import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
@ -367,32 +363,32 @@ public class SummaryHelper extends HelperBase {
String name = getName(client);
Hash h = client.calculateHash();
buf.append("<tr><td align=\"right\"><b><img src=\"/themes/console/images/");
buf.append("<tr><td align=\"right\"><img src=\"/themes/console/images/");
if (_context.clientManager().shouldPublishLeaseSet(h))
buf.append("server.png\" alt=\"Server\" title=\"Server\" />");
buf.append("server.png\" alt=\"Server\" title=\"Server\">");
else
buf.append("client.png\" alt=\"Client\" title=\"Client\" />");
buf.append("</td><td align=\"left\"><a href=\"tunnels.jsp#").append(h.toBase64().substring(0,4));
buf.append("client.png\" alt=\"Client\" title=\"Client\">");
buf.append("</td><td align=\"left\"><b><a href=\"tunnels.jsp#").append(h.toBase64().substring(0,4));
buf.append("\" target=\"_top\" title=\"Show tunnels\">");
if (name.length() < 16)
buf.append(name);
else
buf.append(name.substring(0,15)).append("&hellip;");
buf.append("</a></td>\n");
buf.append("</a></b></td>\n");
LeaseSet ls = _context.netDb().lookupLeaseSetLocally(h);
if (ls != null) {
long timeToExpire = ls.getEarliestLeaseDate() - _context.clock().now();
if (timeToExpire < 0) {
// red or yellow light
buf.append("<td align=\right\"><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Rebuilding&hellip;\" title=\"Leases expired ").append(DataHelper.formatDuration(0-timeToExpire));
buf.append(" ago. Rebuilding..\"></td></tr>\n");
buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Rebuilding&hellip;\" title=\"Leases expired ").append(DataHelper.formatDuration(0-timeToExpire));
buf.append(" ago. Rebuilding&hellip;\"></td></tr>\n");
} else {
// green light
buf.append("<td align=\right\"><img src=\"/themes/console/images/local_up.png\" alt=\"Ready\" title=\"Ready\"></td></tr>\n");
buf.append("<td><img src=\"/themes/console/images/local_up.png\" alt=\"Ready\" title=\"Ready\"></td></tr>\n");
}
} else {
// yellow light
buf.append("<td align=\right\"><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Building&hellip;\" title=\"Tunnel building in progress&hellip;\"></td></tr>\n");
buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Building&hellip;\" title=\"Tunnel building in progress&hellip;\"></td></tr>\n");
}
}
buf.append("</table><hr>\n");

View File

@ -132,9 +132,11 @@ class SummaryListener implements RateSummaryListener {
RrdDb getData() { return _db; }
long now() { return _context.clock().now(); }
@Override
public boolean equals(Object obj) {
return ((obj instanceof SummaryListener) && ((SummaryListener)obj)._rate.equals(_rate));
}
@Override
public int hashCode() { return _rate.hashCode(); }
}

View File

@ -3,9 +3,7 @@ package net.i2p.router.web;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import net.i2p.router.RouterContext;
public class TunnelHelper extends HelperBase {
public TunnelHelper() {}

View File

@ -2,7 +2,6 @@ package net.i2p.router.web;
import java.io.File;
import net.i2p.I2PAppContext;
import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.util.EepGet;
@ -109,11 +108,11 @@ public class UnsignedUpdateHandler extends UpdateHandler {
_context.router().saveConfig();
if ("install".equals(policy)) {
_log.log(Log.CRIT, "Update was downloaded, restarting to install it");
_status = "<b>Update downloaded</b><br />Restarting";
_status = "<b>Update downloaded</b><br>Restarting";
restart();
} else {
_log.log(Log.CRIT, "Update was downloaded, will be installed at next restart");
_status = "<b>Update downloaded</b><br />";
_status = "<b>Update downloaded</b><br>";
if (System.getProperty("wrapper.version") != null)
_status += "Click Restart to install";
else

View File

@ -201,11 +201,11 @@ public class UpdateHandler {
_context.router().saveConfig();
if ("install".equals(policy)) {
_log.log(Log.CRIT, "Update was VERIFIED, restarting to install it");
_status = "<b>Update verified</b><br />Restarting";
_status = "<b>Update verified</b><br>Restarting";
restart();
} else {
_log.log(Log.CRIT, "Update was VERIFIED, will be installed at next restart");
_status = "<b>Update downloaded</b><br />";
_status = "<b>Update downloaded</b><br>";
if (System.getProperty("wrapper.version") != null)
_status += "Click Restart to install";
else