package net.i2p.router.web;
import java.io.File;
import java.io.IOException;
import java.io.Writer;
import net.i2p.router.RouterContext;
/**
* Refactored from summarynoframe.jsp to save ~100KB
*
*/
public class SummaryBarRenderer {
private RouterContext _context;
private SummaryHelper _helper;
public SummaryBarRenderer(RouterContext context, SummaryHelper helper) {
_context = context;
_helper = helper;
}
public void renderSummaryHTML(Writer out) throws IOException {
StringBuilder buf = new StringBuilder(8*1024);
buf.append("
");
File lpath = new File(_context.getBaseDir(), "docs/toolbar.html");
// you better have target="_top" for the links in there...
if (lpath.exists()) {
ContentHelper linkhelper = new ContentHelper();
linkhelper.setPage(lpath.getAbsolutePath());
linkhelper.setMaxLines("100");
buf.append(linkhelper.getContent());
} else {
buf.append("\n" +
"
\n" +
"
\n" +
"\n");
out.write(buf.toString());
buf.setLength(0);
}
buf.append("
" +
"
\n" +
"" +
"")
.append(_("Version"))
.append(": | " +
"")
.append(_helper.getVersion())
.append(" |
\n" +
"" +
"")
.append(_("Uptime"))
.append(": | " +
"")
.append(_helper.getUptime())
.append(" |
\n" +
"
\n");
if (_helper.updateAvailable() || _helper.unsignedUpdateAvailable()) {
// display all the time so we display the final failure message
buf.append("
").append(UpdateHandler.getStatus());
if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress"))) {
// nothing
} else if(
// isDone() is always false for now, see UpdateHandler
// ((!update.isDone()) &&
_helper.getAction() == null &&
_helper.getUpdateNonce() == null &&
ConfigRestartBean.getRestartTimeRemaining() > 12*60*1000) {
long nonce = _context.random().nextLong();
String prev = System.getProperty("net.i2p.router.web.UpdateHandler.nonce");
if (prev != null)
System.setProperty("net.i2p.router.web.UpdateHandler.noncePrev", prev);
System.setProperty("net.i2p.router.web.UpdateHandler.nonce", nonce+"");
String uri = _helper.getRequestURI();
buf.append("\n");
}
}
buf.append("")
.append(ConfigRestartBean.renderStatus(_helper.getRequestURI(), _helper.getAction(), _helper.getConsoleNonce()))
.append("
\n" +
"\n" +
"")
.append(_("Active"))
.append(": | ")
.append(_helper.getActivePeers())
.append('/')
.append(_helper.getActiveProfiles())
.append(" |
\n" +
"")
.append(_("Fast"))
.append(": | ")
.append(_helper.getFastPeers())
.append(" |
\n" +
"")
.append(_("High capacity"))
.append(": | ")
.append(_helper.getHighCapacityPeers())
.append(" |
\n" +
"")
.append(_("Integrated"))
.append(": | ")
.append(_helper.getWellIntegratedPeers())
.append(" |
\n" +
"")
.append(_("Known"))
.append(": | ")
.append(_helper.getAllPeers())
.append(" |
\n" +
"
\n");
out.write(buf.toString());
buf.setLength(0);
boolean anotherLine = false;
if (_helper.showFirewallWarning()) {
buf.append("");
anotherLine = true;
}
boolean reseedInProgress = Boolean.valueOf(System.getProperty("net.i2p.router.web.ReseedHandler.reseedInProgress")).booleanValue();
// If showing the reseed link is allowed
if (_helper.allowReseed()) {
if (reseedInProgress) {
// While reseed occurring, show status message instead
buf.append("").append(System.getProperty("net.i2p.router.web.ReseedHandler.statusMessage","")).append("
");
} else {
// While no reseed occurring, show reseed link
long nonce = _context.random().nextLong();
String prev = System.getProperty("net.i2p.router.web.ReseedHandler.nonce");
if (prev != null) System.setProperty("net.i2p.router.web.ReseedHandler.noncePrev", prev);
System.setProperty("net.i2p.router.web.ReseedHandler.nonce", nonce+"");
String uri = _helper.getRequestURI();
buf.append("\n");
}
anotherLine = true;
}
// If a new reseed ain't running, and the last reseed had errors, show error message
if (!reseedInProgress) {
String reseedErrorMessage = System.getProperty("net.i2p.router.web.ReseedHandler.errorMessage","");
if (reseedErrorMessage.length() > 0) {
buf.append("").append(reseedErrorMessage).append("
");
anotherLine = true;
}
}
if (anotherLine)
buf.append("
");
buf.append("
" +
"\n" +
"1s: | ")
.append(_helper.getInboundSecondKBps())
.append('/')
.append(_helper.getOutboundSecondKBps())
.append("K/s |
\n" +
"5m: | ")
.append(_helper.getInboundFiveMinuteKBps())
.append('/')
.append(_helper.getOutboundFiveMinuteKBps())
.append("K/s |
\n" +
"")
.append(_("Total"))
.append(": | ")
.append(_helper.getInboundLifetimeKBps())
.append('/')
.append(_helper.getOutboundLifetimeKBps())
.append("K/s |
\n" +
"")
.append(_("Used"))
.append(": | ")
.append(_helper.getInboundTransferred())
.append('/')
.append(_helper.getOutboundTransferred())
.append(" |
\n" +
"
" +
"\n" +
"")
.append(_("Exploratory"))
.append(": | ")
.append(_helper.getInboundTunnels())
.append('/')
.append(_helper.getOutboundTunnels())
.append(" |
\n" +
"")
.append(_("Client"))
.append(": | ")
.append(_helper.getInboundClientTunnels())
.append('/')
.append(_helper.getOutboundClientTunnels())
.append(" |
\n" +
"")
.append(_("Participating"))
.append(": | ")
.append(_helper.getParticipatingTunnels())
.append(" |
\n" +
"
" +
"\n" +
"")
.append(_("Job lag"))
.append(": | ")
.append(_helper.getJobLag())
.append(" |
\n" +
"")
.append(_("Message delay"))
.append(": | ")
.append(_helper.getMessageDelay())
.append(" |
\n" +
"")
.append(_("Tunnel lag"))
.append(": | ")
.append(_helper.getTunnelLag())
.append(" |
\n" +
"")
.append(_("Backlog"))
.append(": | ")
.append(_helper.getInboundBacklog())
.append(" |
\n" +
"
")
.append(_helper.getTunnelStatus())
.append("
\n")
.append(_helper.getDestinations());
out.write(buf.toString());
}
/** translate a string */
private String _(String s) {
return Messages.getString(s, _context);
}
}