package net.i2p.router.web; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.Date; import net.i2p.CoreVersion; import net.i2p.data.DataHelper; import net.i2p.data.Hash; import net.i2p.router.RouterVersion; public class OldConsoleHelper extends HelperBase { private boolean _full; public OldConsoleHelper() {} public void setFull(String f) { _full = f != null && f.length() > 0; } public String getConsole() { try { if (_out != null) { renderStatusHTML(_out); return ""; } else { ByteArrayOutputStream baos = new ByteArrayOutputStream(2*1024); renderStatusHTML(new OutputStreamWriter(baos)); return baos.toString(); } } catch (IOException ioe) { return "<b>Error displaying the console.</b>"; } } public String getStats() { StatsGenerator gen = new StatsGenerator(_context); try { if (_out != null) { gen.generateStatsPage(_out, _full); return ""; } else { ByteArrayOutputStream baos = new ByteArrayOutputStream(32*1024); gen.generateStatsPage(new OutputStreamWriter(baos), _full); return baos.toString(); } } catch (IOException ioe) { return "<b>Error displaying the console.</b>"; } } /** * this is for oldconsole.jsp, pretty much unused except as a way to get memory info, * so let's comment out the rest, it is available elsewhere, and we don't really * want to spend a minute rendering a multi-megabyte page in memory. * * @since 0.9 moved from Router.java */ private void renderStatusHTML(Writer out) throws IOException { StringBuilder buf = new StringBuilder(4*1024); // Please don't change the text or formatting, tino matches it in his scripts Hash h = _context.routerHash(); if (h != null) buf.append("<b>Router: </b> ").append(h.toBase64()).append("<br>\n"); buf.append("<b>As of: </b> ").append(new Date(_context.clock().now())).append("<br>\n"); buf.append("<b>RouterUptime: </b> " ).append(DataHelper.formatDuration(_context.router().getUptime())).append(" <br>\n"); buf.append("<b>Started on: </b> ").append(new Date(_context.router().getWhenStarted())).append("<br>\n"); buf.append("<b>Clock offset: </b> ").append(_context.clock().getOffset()).append("ms (OS time: ").append(new Date(_context.clock().now() - _context.clock().getOffset())).append(")<br>\n"); buf.append("<b>RouterVersion:</b> ").append(RouterVersion.FULL_VERSION).append(" / SDK: ").append(CoreVersion.VERSION).append("<br>\n"); long tot = Runtime.getRuntime().totalMemory()/1024; long free = Runtime.getRuntime().freeMemory()/1024; buf.append("<b>Memory:</b> In use: ").append((tot-free)).append("KB Free: ").append(free).append("KB <br>\n"); out.write(buf.toString()); out.flush(); } }